¿Cómo se mantiene al día con las configuraciones de Nagios / Capistrano cuando se usa EC2?

11

Yo uso Amazon EC2 para mi aplicación móvil. Dependiendo de la carga de la aplicación en un momento dado, podría generar nuevas instancias y luego eliminarlas cuando la carga sea menor para ahorrar costos.

¿Cómo uno se mantiene al día con las configuraciones de Nagios para un entorno tan dinámico? Cuando se trata de hardware administrado, los archivos de configuración son predecibles. En este caso, sería necesario agregar Nagios, Capistrano y muchos otros archivos de configuración. Capistrano necesita saber dónde implementar una nueva compilación para un servidor de aplicaciones. Nagios necesita saber para eliminar una instancia existente o agregar una nueva instancia para el monitoreo. Nagios también necesita saber si un nodo fue desactivado intencionalmente o si el host está inactivo debido a un error.

¿Cómo se hace esto con el maravilloso mundo de VPS / instancias dinámicas?

imaginativo
fuente

Respuestas:

9

Utilizamos una herramienta de gestión de configuración (Chef en nuestro caso) que escribe la configuración de Nagios a partir de la información del nodo.

cjc
fuente
1
Claro, usar Puppet / Chef es un hecho. Pero el truco es cómo hacer que la configuración por nodo sea manejable (por ejemplo, no tener que replicar listas de nodos en la configuración de Puppet del servidor Nagios) y aún así hacer que el servidor Nagios rastree los nodos agregados / eliminados / modificados. Toco este punto en mi respuesta a continuación.
Amos Shapira
3

Escribí mi propio pequeño conjunto de scripts php que escriben configuraciones nagios en un archivo. Nagios es fácil porque es solo un archivo de texto, por lo que todo lo que necesita hacer es crear una plantilla para cada tipo de servidor. Luego, cuando el servidor comience, agregue un archivo usando la plantilla. Los únicos datos que cambian en el archivo son la IP y el nombre del host.

Para más servidores estáticos, creé un script que se ejecuta ec2-describe-instancesy crea un archivo para cada instancia devuelta. Cada instancia está marcada con una etiqueta: Propósito = XXXX, así que sé qué plantilla aplicar.

Para nuestros grupos de autoescalado, configuramos una notificación utilizando el as-put-notification-configurationcomando que envía un mensaje a una cola SQS. El script php es ejecutado por un crontab. Cuando se ejecuta el script, comprueba la cola en busca de nuevos servidores. Cada vez que encuentra un nuevo servidor, crea un nuevo archivo. Lo mismo sucede cuando se elimina un servidor. Probablemente sea más fácil usar Chef o algo si ya lo está usando, pero si no lo está, puede escribir un servicio de php simple como el mío en unos días.

bwight
fuente
1

Usamos Opsview , que es otro nagios + base de datos + rest-api wrapper. No sé si esta es la mejor solución para todos (o incluso para nosotros), pero nos permite configurar dinámicamente el servidor Nagios a través de una API REST simple desde el nodo (u otro nodo administrativo) cuando aparece y eliminarlo de la configuración cuando está hecho. Utilizo definiciones de plantillas de host como parte del manifiesto Puppet del servidor Opsview (/ Nagios) y los hosts supervisados ​​solo se registran y se unen a la plantilla de host correcta como parte de su manifiesto Puppet.

Un enfoque más "genérico", que debería funcionar con prácticamente cualquier cosa, incluso el Nagios original y sus archivos estáticos, es Puppet Stored Configuration , esto le permite escribir algo para configurar cualquier herramienta que desee, sin embargo, según la información que recopila Puppet. su manifiesto

Sugeriría que, para fines forenses, no elimine la configuración del nodo por completo cuando se desactiva, sino que intente archivarlo y la información de monitoreo recopilada sobre él mientras estaba activo.

Amos Shapira
fuente
1

Un par de maneras

  • Uso de plantillas preconfiguradas de Amazon EC2.

  • Uso de manifiesto de marionetas con plantillas variadas.

  • Configure una VPN entre su red nagios y su VM de Amazon. Luego, todas sus VM de Amazon tendrán IP estática, incluso puede configurar un DNS en ellas. Tenemos un Nagios corriendo y monitoreando todas nuestras instancias de Amazon. Ni siquiera necesitamos una ip elástica. Usamos openvpn para nuestra VPN.

  • Cree Nagios que escuche comandos externos y actualice su configuración en consecuencia. Finalmente, las máquinas pueden registrarse, cancelar el registro, suspender y reanudarlas en el Nagios.

Chakri
fuente
0

No tengo una bala de plata para resolver este problema con nagios. Pero para capistrano hay capify-ec2 , una extensión para capistrano que resuelve las listas de roles del servidor utilizando las capacidades de etiquetado de Amazon.

teísta
fuente