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?
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-instances
y 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-configuration
comando 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.fuente
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.
fuente
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.
fuente
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.
fuente