Comment suivez-vous les configurations Nagios / Capistrano lorsque vous utilisez EC2?

11

J'utilise Amazon EC2 pour mon application mobile. En fonction de la charge de l'application à un moment donné, je peux générer de nouvelles instances, puis les supprimer lorsque la charge est inférieure pour réduire les coûts.

Comment suivre les configurations Nagios pour un environnement aussi dynamique? Quand on traite de matériel géré, les fichiers de configuration sont prévisibles. Dans ce cas, Nagios, Capistrano et un tas d'autres fichiers de configuration devraient être ajoutés. Capistrano doit savoir où déployer une nouvelle version pour un serveur d'applications. Nagios doit savoir pour supprimer une instance existante ou ajouter une nouvelle instance pour la surveillance. Nagios doit également savoir si un nœud a été intentionnellement supprimé ou si l'hôte est arrêté en raison d'une erreur.

Comment cela se fait-il avec le monde merveilleux des instances VPS / dynamiques?

imaginatif
la source

Réponses:

9

Nous utilisons un outil de gestion de configuration (Chef dans notre cas) qui écrit la configuration Nagios à partir des informations du nœud.

cjc
la source
1
Bien sûr, utiliser Puppet / Chef est une évidence. Mais l'astuce est de savoir comment rendre la configuration par nœud gérable (par exemple, ne pas avoir à répliquer les listes de nœuds sur la configuration Puppet du serveur Nagios) et toujours faire en sorte que le serveur Nagios suive les nœuds ajoutés / supprimés / modifiés. Je touche ce point dans ma réponse ci-dessous.
Amos Shapira
3

A écrit mon propre petit ensemble de scripts php qui écrivent les configurations nagios dans un fichier. Nagios est facile car il ne s'agit que d'un fichier texte, il vous suffit donc de créer un modèle pour chaque type de serveur. Ensuite, lorsque le serveur démarre, ajoutez un fichier à l'aide du modèle. Les seules données qui changent dans le fichier sont l'adresse IP et le nom de l'hôte.

Pour des serveurs plus statiques, j'ai créé un script qui s'exécute ec2-describe-instanceset crée un fichier pour chaque instance retournée. Chaque instance est marquée par la balise: Purpose = XXXX, donc je sais quel modèle appliquer.

Pour nos groupes à mise à l'échelle automatique, nous configurons une notification à l'aide de la as-put-notification-configurationcommande qui envoie un message à une file d'attente SQS. Le script php est exécuté par une crontab. Lorsque le script s'exécute, il vérifie la file d'attente pour tout nouveau serveur. Chaque fois qu'il trouve un nouveau serveur, il crée un nouveau fichier. La même chose se produit lorsqu'un serveur est supprimé. Probablement plus facile à utiliser Chef ou quelque chose si vous l'utilisez déjà mais si vous ne l'êtes pas, vous pouvez écrire un service php simple comme le mien en quelques jours.

bwight
la source
1

Nous utilisons Opsview , qui est encore un autre wrapper nagios + base de données + rest-api. Je ne sais pas si c'est la meilleure solution pour tout le monde (ou même pour nous) mais cela nous permet de configurer dynamiquement le serveur Nagios via une simple API REST à partir du nœud (ou d'un autre nœud administratif) lorsqu'il apparaît et de le supprimer de la configuration quand c'est fait. J'utilise des définitions de modèles d'hôte dans le cadre du manifeste Puppet du serveur Opsview (/ Nagios) et les hôtes surveillés s'enregistrent simplement avec lui et rejoignent le bon modèle d'hôte dans le cadre de leur manifeste Puppet.

Une configuration plus "générique", qui devrait fonctionner avec à peu près tout, même avec le Nagios d'origine et ses fichiers statiques, est la configuration stockée de marionnettes - cela vous permet de créer un script pour configurer n'importe quel outil de votre choix selon les informations que la marionnette recueille à partir de son manifeste.

Je suggère qu'à des fins médico-légales, vous ne devez pas supprimer complètement la configuration du nœud lorsqu'elle est supprimée, mais essayez de l'archiver et les informations de surveillance collectées à ce sujet pendant qu'elle était active.

Amos Shapira
la source
1

Deux façons.

  • Utilisation de modèles Amazon EC2 préconfigurés.

  • Utilisation du manifeste de marionnettes avec des modèles variablisés.

  • Configurez un VPN entre votre réseau nagios et votre machine virtuelle amazon. Ensuite, toute votre machine virtuelle amazon aura une adresse IP statique, vous pouvez même configurer un DNS dessus. Nous avons un nagios qui exécute et surveille toutes nos instances amazon. Nous n'avons même pas besoin d'un IP élastique. Nous utilisons openvpn pour notre VPN.

  • Construisez Nagios qui écoute la commande externe et mettez à jour sa configuration en conséquence. Finalement, les machines peuvent s'enregistrer, se désinscrire, suspendre, se reprendre sur le Nagios.

Chakri
la source
0

Je n'ai pas de solution miracle pour résoudre ce problème avec les nagios. Mais pour capistrano, il y a capify-ec2 , une extension pour capistrano qui résout les listes de rôles de serveur en utilisant les capacités de marquage amazon.

théiste
la source