Helion OpenStack Monasca Integración SMTP
2016-03-24
Machine-translated — the English original is authoritative.
Recientemente recibí una solicitud para configurar la integración SMTP con Monasca como parte de la instalación. Habiendo configurado ya los ajustes del servidor SMTP en el archivo cloudConfig.yml durante la fase de construcción del modelo, debería haber sido un caso simple de configurar los detalles de notificación en la Consola de Operaciones o a través de la CLI de Monasca. Sin embargo, esto no funcionó, así que aquí están los pasos que seguí para depurar la integración SMTP:
Verificar la Comunicación con el Servidor SMTP
Desde cada uno de los controladores, ejecute una prueba de correo simple con curl para asegurar que los controladores pueden comunicarse con el servidor de correo de la siguiente manera:
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"
[Nota: Asegúrese de modificar el servidor SMTP y la IP para que coincidan con sus requisitos]
Si esto falla, entonces el problema existe entre los nodos controladores y el servidor SMTP: verifique que los detalles SMTP sean correctos, que no haya firewalls bloqueando los puertos, etc. Consulte con el administrador del SMTP si están rechazando los correos, etc.
TCPDUMP y NETCAT (nc) son utilidades muy útiles para verificar esta conectividad fundamental. La publicación anterior aquí y en todas partes de la intertubería explica su uso si es necesario.
Utilice un Servidor SMTP Temporal 'pop-up'
Si no tiene un servidor SMTP o desea descartar su servidor SMTP principal, también podría seguir estos pasos para configurar rápidamente un servidor SMTP de prueba: verá que, a partir de los puertos no estándar que utilicé anteriormente, esto es lo que hice inicialmente.
En realidad, coloqué mi servidor SMTP pop-up en el nodo de implementación [en un escenario de laboratorio – no haga esto en producción], por lo que necesitaba abrir un puerto en el firewall del plano de control para permitir que este servidor escuchara en el puerto 3050 de la siguiente manera:
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
Así que he abierto un rango de puertos aquí porque tengo otros planes, pero podría simplemente abrir el único puerto requerido.
Una vez que haya realizado estos cambios en el archivo del modelo de firewall cloud, es el proceso HLM habitual
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
Ahora copie el siguiente archivo al nodo de implementación y guárdelo como smtp.py. Reemplace la dirección IP del servidor y el puerto que desea utilizar en el archivo.
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()
Abra una sesión de screen (puede que necesite sudo apt-get install screen)
y ejecute el script de la siguiente manera:
screen -h 10000
sudo python smtp.py
Ahora tiene su propio servidor SMTP para probar la integración.
Con SMTP todo verificado, ahora necesitamos configurar Monasca.
Configuración de Monasca
Inicie sesión en la Consola de Operaciones Helion como un usuario administrador de la nube

Seleccione la opción Métodos de Notificación desde el menú 'hamburguesa' en la parte superior izquierda de la pantalla.

Ingrese la dirección de correo electrónico donde desea que se envíen los correos creando una nueva entrada de correo electrónico.

Ahora creemos una alerta de prueba para ver si estamos recibiendo tráfico SMTP.
Crear una Alarma de Prueba
Volvamos a nuestro menú 'hamburguesa' y esta vez seleccione Creación de Alarmas y cree una nueva alarma de la siguiente manera: queremos alertas falsas aquí, así que usaré cpu.idle como métrica y estableceré valores absurdos:
Crear Nueva Definición de Alarma
Inicialmente pueden aparecer 2 Alarmas Desconocidas ya que es la primera vez que esta alarma se ejecuta y no tiene un estado anterior. Sin embargo, tenga paciencia, en unos pocos minutos más debería ver el tablero iluminarse como se muestra a continuación.
Espere unos minutos (5)
Ahora puede seleccionar las alarmas para obtener más detalles.
Ver las Alarmas
Ver Detalles de la Alarma
Y, por supuesto, lo que todos hemos estado esperando: ¡alertas por correo electrónico!
Verificar que SMTP recibió la ALARMA
[Notas: Trampas de Solución de Problemas]
- Si aún no ve ningún tráfico AHORA Y su archivo /var/log/monasca/notification/notification.log está vacío, intente reconfigurar monasca
cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts monasca-reconfigure.yml
- Si ha reutilizado el correo electrónico predeterminado y los archivos de registro se quejan de una dirección 'de correo electrónico' no válida o el servidor SMTP requiere un remitente específico, modifique el remitente predeterminado establecido en /home/stack/helion/hos/ansible/roles/monasca-notification/defaults/main.yml. Asegúrese de realizar el ciclo completo git commit... monasca-reconfigure identificado anteriormente

- Al reconfigurar definiciones de alarmas existentes, asegúrese de seleccionar LA CASILLA DE VERIFICACIÓN de notificaciones Y LOS MÉTODOS DE NOTIFICACIÓN INDIVIDUALES requeridos.

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