Helion OpenStack Monasca Intégration SMTP
2016-03-24
Machine-translated — the English original is authoritative.
Récemment, j’ai reçu une demande pour configurer l’intégration SMTP avec Monasca dans le cadre de l’installation. Ayant déjà configuré les paramètres du serveur SMTP dans le fichier cloudConfig.yml lors de la phase de construction du modèle, il aurait dû s’agir d’un simple cas de configuration des détails de notification dans la Console d’Opérations ou via la CLI Monasca. Cela n’a cependant pas fonctionné, voici donc les étapes que j’ai suivies pour déboguer l’intégration SMTP :
Vérifier la communication avec le serveur SMTP
Depuis chacun des contrôleurs, exécutez un test d’email curl simple pour vous assurer que les contrôleurs peuvent communiquer avec le serveur email comme suit :
echo "Hello Helion OpenStack World" > mail.txt
curl --url "smtp://172.16.60.9:3050" --mail-from "graham@allthingscloud.eu" --mail-rcpt "ops@alert.com" --upload-file mail.txt --user "graham@allthingscloud.eu:password"
[Note : Assurez-vous de modifier le serveur SMTP et l’IP pour correspondre à vos besoins]
Si cela échoue, le problème se situe entre les nœuds contrôleurs et le serveur SMTP – vérifiez que les détails SMTP sont corrects, qu’aucun pare-feu ne bloque les ports, etc. Vérifiez avec l’administrateur SMTP s’ils rejettent les emails, etc.
TCPDUMP et NETCAT (nc) sont des utilitaires très utiles pour vérifier cette connectivité fondamentale. L’article précédent ici et partout sur l’internet explique leur utilisation si nécessaire.
Utiliser un serveur SMTP temporaire ‘pop-up’
Si vous n’avez pas de serveur SMTP ou si vous souhaitez écarter la possibilité que votre serveur SMTP principal soit en cause, vous pouvez également suivre ces étapes pour configurer rapidement un serveur SMTP de test – vous verrez, à partir des ports non standard que j’ai utilisés ci-dessus, que c’est ce que j’ai fait initialement.
J’ai en fait installé mon serveur SMTP pop-up sur le nœud de déploiement [dans un scénario de laboratoire – ne faites pas cela en production] j’ai donc dû ouvrir un port sur le pare-feu du plan de contrôle pour permettre à ce serveur d’écouter sur le port 3050 comme suit :
vi /home/stack/helion/my_cloud/definition/data/firewall_rules.yml
.
.
.
.
- name: TestWebHook
network-groups:
- MANAGEMENT
rules:
- type: allow
remote-ip-prefix: 0.0.0.0/0
port-range-min: 3000
port-range-max: 3100
protocol: tcp
J’ai donc ouvert une plage de ports ici car j’ai d’autres projets, mais vous pourriez simplement ouvrir le port unique requis.
Une fois que vous avez apporté ces modifications au fichier de modèle cloud du pare-feu, c’est le processus HLM habituel
cd ~/helion/hos/ansible
git add -A
git commit -m "firewall rule update"
cd ~/helion/hos/ansible
ansible-playbook -i hosts/localhost config-processor-run.yml
cd ~/helion/hos/ansible
ansible-playbook -i hosts/localhost ready-deployment.yml
cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts osconfig-iptables-deploy.yml
Maintenant, copiez le fichier suivant sur le nœud de déploiement et enregistrez-le sous smtp.py. Remplacez l’adresse IP du serveur et le port que vous souhaitez utiliser dans le fichier.
import smtpd
import asyncore
class CustomSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data):
print 'Receiving message from:', peer
print 'Message addressed from:', mailfrom
print 'Message addressed to :', rcpttos
print 'Message length :', len(data)
print 'Message :', data
return
server = CustomSMTPServer(('172.16.60.9', 3050), None)
asyncore.loop()
Ouvrez une session screen (vous devrez peut-être exécuter sudo apt-get install screen)
et exécutez le script comme suit :
screen -h 10000
sudo python smtp.py
Maintenant, vous disposez de votre propre serveur SMTP pour tester l’intégration.
Avec SMTP tout vérifié, nous devons maintenant configurer Monasca.
Configuration de Monasca
Connectez-vous à la Console d’Opérations Helion en tant qu’utilisateur administrateur de cloud

Sélectionnez l’option Méthodes de notification dans le menu ‘hamburger’ en haut à gauche de l’écran.

Saisissez l’adresse email à laquelle vous souhaitez recevoir les emails en créant une nouvelle entrée email.

Créons maintenant une alerte de test pour voir si nous recevons du trafic SMTP.
Créer une alarme de test
Retour à notre menu ‘hamburger’ et cette fois sélectionnez Création d’alarme et créez une nouvelle alarme comme suit – nous voulons des fausses alertes ici – donc j’utiliserai cpu.idle comme métrique et définirai des valeurs absurdes –
Créer une nouvelle définition d’alarme
Initialement, 2 Alarmes Inconnues peuvent apparaître car c’est la première fois que cette alarme s’exécute et qu’elle n’a pas d’état précédent. Cependant, soyez patient, dans quelques minutes vous devriez voir le tableau de bord s’illuminer comme indiqué ci-dessous.
Attendez quelques minutes (5)
Vous pouvez maintenant sélectionner les alarmes pour plus de détails.
Regardez les alarmes
Voir les détails de l’alarme
Et bien sûr, ce pour quoi nous avons tous attendu – des alertes par email !!!
Vérifiez que SMTP a reçu l’ALERTE
[Notes : Pièges de dépannage]
- Si vous ne voyez toujours aucun trafic maintenant ET que votre fichier /var/log/monasca/notification/notification.log est vide, essayez de reconfigurer monasca
cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts monasca-reconfigure.yml
- Si vous avez réutilisé l’email par défaut et que les fichiers journaux se plaignent d’une adresse ‘email from’ invalide ou que le serveur SMTP nécessite un expéditeur spécifique, modifiez l’expéditeur par défaut défini dans le fichier /home/stack/helion/hos/ansible/roles/monasca-notification/defaults/main.yml. Assurez-vous de faire le cycle complet git commit…monasca-reconfigure identifié ci-dessus

- Lors de la reconfiguration des définitions d’alarme existantes, assurez-vous de sélectionner À LA FOIS la case de notification ET les méthodes de notification individuelles requises.

Originally published on allthingscloud.eu (2016-03-24).