Este tópico descreve como integrar o Nagios ao Gerenciamento de Alertas.
Etapa 1: Criar uma integração do Nagios
Faça login no console do ARMS. No painel de navegação à esquerda, escolha .
Na aba Alert Integration, clique em Nagios.
-
No assistente New Nagios Integration, insira um nome e uma descrição para a integração, defina o tempo de recuperação automática dos eventos de alerta e clique em Save.
NotaTempo de recuperação automática após timeout: se um evento de alerta não for acionado novamente dentro do período especificado, o sistema limpará o evento automaticamente.
Na aba Alert Integration, pesquise a integração do Nagios e copie o endereço de integração correspondente.
Etapa 2: Configurar um modelo de alerta do Nagios
-
Crie um script de notificação de alerta.
-
Faça login no servidor onde o Nagios está instalado e acesse o seguinte caminho:
cd /usr/local/nagios/libexec/ -
Crie um arquivo de script chamado nagios-alert.py. Adicione o seguinte conteúdo ao arquivo:
NotaSubstitua
integration_urlno script pelo endereço de integração obtido na Etapa 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) -
Execute o comando a seguir para instalar a biblioteca Requests:
pip install requests
-
-
Configure o arquivo Commands.
-
Execute o comando a seguir para modificar o arquivo commands.cf:
vim /usr/local/nagios/etc/objects/commands.cf -
Adicione o seguinte conteúdo ao arquivo 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$" } Insira o comando
:wqpara salvar as alterações no arquivo commands.cf.
-
-
Especifique as informações de contato.
-
Execute o comando a seguir para modificar o arquivo contacts.cfg:
vim /usr/local/nagios/etc/objects/contacts.cfg -
Adicione o seguinte conteúdo ao arquivo 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 } ################################################################ Insira o comando
:wqpara salvar as alterações no arquivo contacts.cfg.
-
-
Execute o comando a seguir para reiniciar o Nagios:
systemctl restart nagios
(Opcional) Etapa 3: Modificar a integração
O Gerenciamento de Alertas fornece mapeamentos de campos padrão entre a origem de alertas do Nagios e os alertas do ARMS. Também é possível adicionar ou modificar mapeamentos de campos na página Edit Integration.
Exemplo de origem 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"
}
Na aba Alert Integration, localize a integração que deseja gerenciar e clique em Edit na coluna Actions.
Na seção Event Mapping, clique em Send Test Data.
-
Na caixa de diálogo Send Test Data, insira o conteúdo do alerta de uma origem de alerta de terceiros no formato JSON e clique em Send.
NotaSe a mensagem Uploaded. No events are generated. Configure mappings based on the original data. aparecer, significa que os campos da origem de alerta não estão mapeados para os campos dos eventos de alerta do ARMS. Os dados enviados aparecem na caixa à esquerda, permitindo selecionar os campos de origem ao configurar os mapeamentos.
Se a mensagem Uploaded. aparecer, o conteúdo do alerta será reportado à página Histórico de Eventos de Alerta. Para mais informações, consulte Visualizar histórico de eventos de alerta.
Na caixa de diálogo Send Test Data, clique em Disable.
Na parte esquerda da seção Event Mapping, clique nos registros de dados cujos mapeamentos deseja configurar para visualizar os detalhes.
-
No painel direito da seção Event Mapping, configure o mapeamento entre os campos da origem de alerta e os campos de alerta do ARMS.
-
Opcional:Na seção Select Root Node, especifique se deseja ativar o processamento em lote.
Se existir um nó de array nos dados de alerta, você poderá especificar esse nó como raiz. Os dados pertencentes ao nó raiz serão processados em lotes.
Após selecionar Use Batch Processing, selecione o nó de array a ser processado em lote como o nó raiz.
NotaSe houver múltiplos nós de array nos dados de alerta, apenas um deles poderá ser selecionado para processamento em lote.
-
Na seção Map Source Fields to Target Fields, mapeie os campos da origem de alerta para os campos de alerta do ARMS.
Clique no ícone de mapeamento para alterar o método de mapeamento de campos.
Direto: o campo especificado da origem de alerta é mapeado diretamente para o campo de alerta especificado do ARMS.
Série: usa delimitadores para concatenar vários campos da origem de alerta em um único campo e, em seguida, mapeia esse campo para o campo de alerta especificado do ARMS. Apenas caracteres especiais podem ser usados como delimitadores.
Condicional: os campos especificados da origem de alerta são mapeados para os campos de alerta do ARMS somente quando os valores atendem às condições definidas.
Tabela de mapeamento: a severidade da origem de alerta é mapeada para a severidade do alerta do ARMS. A tabela contém apenas o campo de severidade.
A tabela a seguir descreve os campos de alerta do ARMS.
Campo de alerta
Descrição
alertname
Nome do alerta personalizado.
severity
Nível de severidade do alerta. É obrigatório configurar mapeamentos para este campo. O método de mapeamento deve ser definido como Direto.
message
Descrição do alerta. Usada como conteúdo da mensagem de alerta, não pode exceder 15.000 caracteres.
value
Valor de amostra de uma métrica.
imageUrl
URL do gráfico de linhas com métricas do Grafana. Usada para mapear o gráfico de linhas.
check
Item de verificação do alerta. Exemplos: CPU, JVM, Falha de Aplicativo e Implantação.
source
Origem do alerta.
class
Tipo de objeto que aciona o evento de alerta, por exemplo, host.
service
Serviço de origem do alerta. Exemplo: Serviço de Login.
startat
Timestamp que representa a hora de início do evento.
endat
Timestamp que representa a hora de término do evento.
generatorUrl
URL dos detalhes do evento.
-
-
Configure a deduplicação de campos para eventos de alerta.
Para reduzir dados duplicados, o sistema utiliza campos relevantes como base para deduplicação. O Gerenciamento de Alertas do ARMS permite visualizar os resultados de agrupamento por deduplicação de dados de eventos históricos exibidos na seção Event Mapping. Você pode alterar os campos a serem deduplicados.
NotaA deduplicação só pode ser configurada para eventos não limpos.
-
Na seção Event Deduplication da página Integration Details, selecione os campos a serem usados para deduplicação.
Se vários eventos tiverem o mesmo valor para um campo especificado, eles serão mesclados em uma única notificação de alerta.
-
Clique em Deduplication Test para visualizar o grupo de alertas após a deduplicação.
NotaO teste de deduplicação aplica-se apenas aos 10 registros de dados mais recentes carregados na parte esquerda da seção Event Mapping.
-
Após concluir as configurações, clique em Save.
Visualizar detalhes de um evento de alerta
No painel de navegação à esquerda do console do ARMS, escolha .
Na página Alert Event History, clique no nome do evento de alerta para visualizar seus detalhes. Para mais informações, consulte Visualizar histórico de eventos de alerta.
Gerenciar a integração
No painel de navegação à esquerda, escolha . Na aba Alert Integration, é possível realizar as seguintes operações nas integrações criadas:
Visualizar detalhes de uma integração: localize a integração e clique na linha correspondente. Na página Integration Details, visualize os detalhes da integração.
-
Atualizar uma chave: para modificar a chave de uma integração, escolha na coluna Actions da integração desejada e clique em Confirm.
ImportanteApós atualizar a chave, modifique o endereço de integração no arquivo de script. Para mais informações, consulte Etapa 2: Configurar alertas do Nagios.
Modificar uma integração: localize a integração e clique em Edit na coluna Actions. Na página Integration Details, modifique as informações da integração e clique em Save.
Ativar ou desativar uma integração: localize a integração e clique em Disable ou Enable na coluna Actions.
Excluir uma integração: localize a integração e clique em Delete na coluna Actions. Na mensagem exibida, clique em OK.
Adicionar um fluxo de processamento de eventos a uma integração: localize a integração e clique em Add Event Processing Flow na coluna Actions. Para mais informações, consulte Fluxo de processamento de eventos.
Criar uma política de notificação: localize a integração para a qual deseja criar uma política de notificação e clique em More na coluna Actions. Na lista exibida, clique em Create Notification Policy. Para mais informações, consulte Políticas de notificação.
Próximos passos
Após criar uma política de notificação, o sistema gera alertas e envia notificações para os eventos de alerta reportados com base na política configurada. Para mais informações, consulte Políticas de notificação. Na página Alert Sending History, visualize os alertas gerados com base na política de notificação configurada. Para mais informações, consulte Visualizar histórico de envio de alertas.