Este tema describe cómo integrar Nagios con Alert Management.
Paso 1: Crear una integración de Nagios
Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, seleccione .
En la pestaña Alert Integration, haga clic en Nagios.
-
En el asistente New Nagios Integration, introduzca un nombre y una descripción para la integración, establezca el tiempo de recuperación automática para los eventos de alerta y luego haga clic en Save.
NotaTiempo de recuperación automática tras agotar el tiempo de espera: si un evento de alerta no se activa nuevamente dentro del periodo especificado, el evento se borra automáticamente.
En la pestaña Alert Integration, busque su integración de Nagios y copie su dirección de integración.
Paso 2: Configurar una plantilla de alertas de Nagios
-
Cree un script de notificación de alertas.
-
Inicie sesión en el servidor donde se encuentra Nagios e introduzca la siguiente ruta:
cd /usr/local/nagios/libexec/ -
Cree un archivo de script llamado nagios-alert.py. Agregue el siguiente contenido al archivo:
NotaReemplace
integration_urlen el script con la dirección de integración obtenida en Step 1.#!/usr/bin/python # -*- coding: utf-8 -*- import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "integration_url" # Replace integration_url with the integration address from Step 1. def parse(sys): object_type = str(sys.argv[1]) notification_type = str(sys.argv[2]) host_name = str(sys.argv[3]) host_ip = str(sys.argv[4]) state = str(sys.argv[5]) time = str(sys.argv[6]) info = str(sys.argv[7]) if object_type == 'host': description = "[{}] {} alert: {} is {}".format(notification_type, object_type, host_name, state) service = "" else: service = str(sys.argv[8]) description = "[{}] {} alert: {}/{} is {}".format(notification_type, object_type, host_name, service, state) content_dict = {'service':""} content_dict['object_type'] = object_type content_dict['notification_type'] = notification_type content_dict['host_name'] = host_name content_dict['host_ip'] = host_ip content_dict['state'] = state content_dict['time'] = time content_dict['info'] = info content_dict['service'] = service content_dict['description'] = description print(content_dict) return content_dict def msg(text): result = requests.post(url=api_url, data=json.dumps(text), headers=headers) print(result) if __name__ == '__main__': text = parse(sys) msg(text) -
Ejecute el siguiente comando para instalar la biblioteca Requests:
pip install requests
-
-
Configure el archivo Commands.
-
Ejecute el siguiente comando para modificar el archivo commands.cf:
vim /usr/local/nagios/etc/objects/commands.cf -
Agregue el siguiente contenido al archivo commands.cf:
define command{ command_name notify-host-by-alert command_line python /usr/local/nagios/libexec/nagios-alert.py "host" "$NOTIFICATIONTYPE$" "$HOSTALIAS$" "$HOSTADDRESS$" "$HOSTSTATE$" "$LONGDATETIME$" "$HOSTOUTPUT$" } define command{ command_name notify-service-by-alert command_line python /usr/local/nagios/libexec/nagios-alert.py "service" "$NOTIFICATIONTYPE$" "$HOSTALIAS$" "$HOSTADDRESS$" "$SERVICESTATE$" "$LONGDATETIME$" "$SERVICEOUTPUT$" "$SERVICEDESC$" } Introduzca el comando
:wqpara guardar los cambios en el archivo commands.cf.
-
-
Especifique la información de contacto.
-
Ejecute el siguiente comando para modificar el archivo contacts.cfg:
vim /usr/local/nagios/etc/objects/contacts.cfg -
Agregue el siguiente contenido al archivo contacts.cfg:
service_notification_commands notify-service-by-alert host_notification_commands notify-host-by-alertdefine contact{ contact_name nagiosadmin ; Short name use generic-contact ; Inherit de alias Nagios Admin ; Full name email nagios@localhost ; <<***** Ch service_notification_commands notify-service-by-alert host_notification_commands notify-host-by-alert } ################################################################ Introduzca el comando
:wqpara guardar los cambios en el archivo contacts.cfg.
-
-
Ejecute el siguiente comando para reiniciar Nagios:
systemctl restart nagios
(Opcional) Paso 3: Modificar la integración
Alert Management proporciona asignaciones de campos predeterminadas entre el origen de alertas de Nagios y las alertas de ARMS. También puede agregar o modificar asignaciones de campos en la página Edit Integration.
Ejemplo de origen de alerta:
{
"info":"SWAP CRITICAL - 0% free (0 MB out of 0 MB) - Swap is either disabled, not present, or of zero size.",
"description":"[PROBLEM] service alert: localhost/Swap Usage is CRITICAL",
"service":"Swap Usage",
"host_ip":"127.0.0.1",
"state":"CRITICAL",
"object_type":"service",
"time":"Tue Sep 14 10:46:49 CST 2021",
"notification_type":"PROBLEM",
"host_name":"localhost"
}
En la pestaña Alert Integration, busque la integración que desea gestionar y haga clic en Edit en la columna Actions.
En la sección Event Mapping, haga clic en Send Test Data.
-
En el cuadro de diálogo Send Test Data, introduzca el contenido de alerta de un origen de alertas de terceros en formato JSON y haga clic en Send.
NotaSi aparece el mensaje Uploaded. No events are generated. Configure mappings based on the original data., significa que los campos del origen de alerta no están asignados a los campos de los eventos de alerta de ARMS. Los datos enviados se muestran en el cuadro izquierdo, lo que le permite seleccionar los campos de origen al configurar las asignaciones.
Si aparece el mensaje Uploaded., el contenido de la alerta se reporta en la página de historial de eventos de alerta. Para obtener más información, consulte View alert event history.
En el cuadro de diálogo Send Test Data, haga clic en Disable.
En la parte izquierda de la sección Event Mapping, haga clic en los registros de datos para los que desea configurar asignaciones y así ver sus detalles.
-
En el panel derecho de la sección Event Mapping, configure la asignación entre los campos del origen de alerta y los campos de alerta de ARMS.
-
Opcional:En la sección Select Root Node, especifique si desea habilitar el procesamiento por lotes.
Si existe un nodo de matriz en los datos de alerta, puede especificar dicho nodo como nodo raíz. Los datos pertenecientes al nodo raíz se procesan por lotes.
Después de seleccionar Use Batch Processing, seleccione el nodo de matriz que se procesará por lotes como nodo raíz.
NotaSi existen varios nodos de matriz en los datos de alerta, solo puede seleccionar uno de ellos para el procesamiento por lotes.
-
En la sección Map Source Fields to Target Fields, asigne los campos del origen de alerta a los campos de alerta de ARMS.
Haga clic en el icono de asignación para cambiar el método de asignación de campos.
Directa: el campo especificado del origen de alerta se asigna directamente al campo de alerta de ARMS correspondiente.
Serie: puede usar delimitadores para concatenar varios campos del origen de alerta en un solo campo y luego asignar este campo al campo de alerta de ARMS especificado. Solo se pueden utilizar caracteres especiales como delimitadores.
Condicional: los campos del origen de alerta especificados se asignan a los campos de alerta de ARMS solo cuando los valores de los campos cumplen las condiciones establecidas.
Tabla de asignación: la gravedad del origen de alerta se asigna a la gravedad de la alerta de ARMS. La tabla de asignación contiene únicamente el campo de gravedad.
La siguiente tabla describe los campos de alerta de ARMS.
Campo de alerta
Descripción
alertname
Nombre de la alerta personalizada.
severity
Nivel de gravedad de la alerta. Debe configurar asignaciones para este campo. El método de asignación debe establecerse en Directa.
message
Descripción de la alerta. Se utiliza como contenido del mensaje de alerta y no puede exceder los 15,000 caracteres.
value
Valor de muestra de una métrica.
imageUrl
URL del gráfico de líneas que contiene métricas de Grafana. Se usa para asignar el gráfico de líneas.
check
Elemento de comprobación de la alerta. Ejemplos: CPU, JVM, Application Crash y Deployment.
source
Origen de la alerta.
class
Tipo de objeto que activa el evento de alerta; por ejemplo, host.
service
Servicio de origen de la alerta. Ejemplo: Login Service.
startat
Marca de tiempo que representa la hora de inicio del evento.
endat
Marca de tiempo que representa la hora de finalización del evento.
generatorUrl
URL de los detalles del evento.
-
-
Configure la deduplicación de campos para los eventos de alerta.
Para reducir datos duplicados, el sistema utiliza campos relevantes como base para la deduplicación. Alert Management de ARMS le permite previsualizar los resultados de agrupación por deduplicación de datos históricos de eventos que se muestran en la sección Event Mapping. Puede cambiar los campos que se van a deduplicar.
NotaSolo puede configurar la deduplicación para eventos que no se han borrado.
-
En la sección Event Deduplication de la página Integration Details, seleccione los campos que se usarán para la deduplicación.
Si varios eventos tienen el mismo valor para un campo especificado, estos se fusionan en una sola notificación de alerta.
-
Haga clic en Deduplication Test para previsualizar el grupo de alertas después de la deduplicación.
NotaLa prueba de deduplicación solo surte efecto en los últimos 10 registros de datos cargados en la parte izquierda de la sección Event Mapping.
-
Una vez configurados los ajustes, haga clic en Save.
Consultar los detalles de un evento de alerta
En el panel de navegación izquierdo de la consola de ARMS, seleccione .
En la página Alert Event History, haga clic en el nombre del evento de alerta para ver sus detalles. Para obtener más información, consulte View alert event history.
Gestionar la integración
En el panel de navegación izquierdo, seleccione . En la pestaña Alert Integration, puede realizar las siguientes operaciones en las integraciones que haya creado:
Consultar los detalles de una integración: busque la integración y haga clic en la fila correspondiente. En la página Integration Details, revise la información detallada de la integración.
-
Actualizar una clave: para modificar la clave de una integración, seleccione en la columna Actions de la integración objetivo y haga clic en Confirm.
ImportanteDespués de actualizar la clave, debe modificar la dirección de integración en el archivo de script. Para obtener más información, consulte Step 2: Configure Nagios alerts.
Modificar una integración: busque la integración y haga clic en Edit en la columna Actions. En la página Integration Details, modifique la información de la integración y luego haga clic en Save.
Habilitar o deshabilitar una integración: busque la integración y haga clic en Disable o Enable en la columna Actions.
Eliminar una integración: busque la integración y haga clic en Delete en la columna Actions. En el mensaje que aparece, haga clic en OK.
Agregar un flujo de procesamiento de eventos a una integración: busque la integración y haga clic en Add Event Processing Flow en la columna Actions. Para obtener más información, consulte Event processing flow.
Crear una directiva de notificación: busque la integración para la cual desea crear una directiva de notificación y haga clic en More en la columna Actions. En la lista que aparece, haga clic en Create Notification Policy. Para obtener más información, consulte Notification policies.
Siguientes pasos
Después de crear una directiva de notificación, el sistema genera alertas y envía notificaciones para los eventos reportados según dicha directiva. Para obtener más información, consulte Notification policies. En la página Alert Sending History, puede consultar las alertas generadas con base en la directiva de notificación configurada. Para obtener más información, consulte View alert sending history.