Helion OpenStack Monasca Integración SMTP

2016-03-24

Helion OpenStack Monasca Integración SMTP

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

Login

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

menu

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

createNewNotif

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:

TestAlarm 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.

Alarm dashboard Espere unos minutos (5)

Ahora puede seleccionar las alarmas para obtener más detalles.

Alarm List Ver las Alarmas

Alarm detail Ver Detalles de la Alarma

Y, por supuesto, lo que todos hemos estado esperando: ¡alertas por correo electrónico!

CaptureSMTPAlarm Verificar que SMTP recibió la ALARMA

[Notas: Trampas de Solución de Problemas]

cd ~/scratch/ansible/next/hos/ansible
ansible-playbook -i hosts/verb_hosts monasca-reconfigure.yml

fromEmail

Notification Selection

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

← All posts