zabbix-email-webhook
v1.0.0
Published
Zabbix Email Webhook - é um serviço de webhook desenvolvido para facilitar o envio de alertas do Zabbix via email ou outras integrações personalizadas, utilizando o Nodemailer para configurar e gerenciar os alertas enviados. Projetado com foco em simplici
Downloads
58
Maintainers
Readme
Zabbix Email Webhook
Este projeto é um serviço de webhook desenvolvido para facilitar o envio de alertas do Zabbix via email ou outras integrações personalizadas, utilizando o Nodemailer para configurar e gerenciar os alertas enviados. Projetado com foco em simplicidade e adaptabilidade, o Zabbix Email Webhook é ideal para administradores de sistemas e equipes de TI que desejam integrar notificações de eventos críticos diretamente a seus fluxos de comunicação ou monitoramento.
Índice
Recursos Principais
- Envio de Notificações por Email: Configuração simples para envio de alertas de evento do Zabbix diretamente para emails específicos.
- Personalização de Alertas: Possibilita customizar mensagens de alerta, permitindo incluir informações detalhadas como hostname, severidade do evento, descrição e duração.
- Webhook Flexível: Integra-se facilmente com o Zabbix usando o sistema de mídia webhook. Pode ser adaptado para enviar dados a outros serviços através de requisições HTTP, além de email.
- Compatibilidade com Nodemailer: Integração pronta com o Nodemailer, permitindo que o serviço use SMTP configurável para envio seguro de emails.
- Documentação Completa: Passo a passo para instalação, configuração e uso, visando tornar a instalação e adaptação do projeto no Zabbix rápidas e intuitivas.
Como Funciona
- Configuração do SMTP: Personalize as configurações do SMTP em
index.js
para enviar alertas usando seu provedor de email preferido. - Personalização do Template de Email: Ajuste o conteúdo do alerta para incluir os dados mais relevantes de acordo com a necessidade de monitoramento.
- Integração no Zabbix: Configure o webhook no painel do Zabbix para enviar automaticamente as informações dos eventos críticos para o servidor onde o serviço está executando.
- Recepção e Processamento de Dados: O script no Zabbix envia dados como severidade, hostname, tempo de ocorrência e recuperação diretamente ao servidor Node.js, onde os dados são formatados e encaminhados para o email configurado ou outro serviço de sua preferência.
Estrutura do Projeto
- index.js: Contém a lógica principal, com a configuração do SMTP e a definição de rotas.
- Instalação do Projeto: Documentação no
README.md
com passos para instalação, configuração do webhook e parâmetros detalhados. - Script Webhook Zabbix: Um script configurado no Zabbix para enviar os dados do evento ao servidor Node.js, utilizando um endpoint HTTP para a comunicação.
Pré-Requisitos
- Node.js e npm instalados.
- Configuração de um servidor SMTP válida para envio de emails.
- Acesso ao painel de configuração do Zabbix para criação de novas mídias e parametrização do webhook.
Exemplos de Uso
- Monitoramento de Servidores Críticos: Receba alertas de eventos críticos (como queda de serviços ou uso elevado de recursos) direto no seu email, com informações relevantes para facilitar a resposta rápida.
- Integração em Equipes de TI: Envie notificações de alerta para um endereço de email de suporte, integrando o Zabbix diretamente com o sistema de comunicação da equipe.
- Automação de Notificações: Use o script configurável para acionar respostas automáticas ou sistemas de gerenciamento de incidentes com base em eventos do Zabbix.
Tecnologias Utilizadas
- Node.js
- Express.js
- Nodemailer
- Zabbix (Integração via webhook)
Instalação
Clone o repositório para uma pasta de sua preferência:
git clone https://github.com/jeffersonalionco/zabbix-email-webhook.git
Acesse o diretório do projeto:
cd zabbix-email-webhook
Instale as dependências do projeto:
npm install
Inicie o webhook
node index.js
- Lembre-se de que antes de inicializar você precisa editar algumas informações do codigo em
Configuração do Servidor
Configuração SMTP no index.js
Abra o arquivo index.js
e edite o trecho de código para configurar o serviço de envio de e-mails conforme seu provedor SMTP:
// Configuração do transportador SMTP
const transporter = nodemailer.createTransport({
host: 'smtp.exemplo.com', // Substitua pelo servidor SMTP correto
port: 587, // Ou 465 para SSL
secure: false, // true para 465, false para outras portas
auth: {
user: '[email protected]', // Seu e-mail
pass: 'senha' // Sua senha
}
});
Configuração de Envio de E-mail
Edite o trecho no arquivo index.js
para configurar os dados de envio do e-mail com base nos alertas recebidos do Zabbix:
// Configuração dos dados do e-mail
const mailOptions = {
from: '[email protected]', // Seu e-mail de envio
to: '[email protected]', // O e-mail para onde o alerta será enviado
subject: `Alerta Zabbix: ${data.trigger}`,
text: `Alerta acionado: ${data.trigger}. Detalhes: ${JSON.stringify(req.body)}`,
html: html // Conteúdo em HTML, substitua conforme necessário
};
Configuração no Zabbix
Para configurar o envio de alertas via webhook, siga estas instruções no painel do Zabbix:
- No menu de configuração do Zabbix, crie uma nova mídia do tipo webhook.
- Preencha os parâmetros conforme a tabela abaixo:
| Parâmetro | Valor |
|-------------------|------------------------------------------------------------------------------------------------|
| dadosOperacional
| {EVENT.OPDATA}
|
| dataHora
| {EVENT.TIME} em {EVENT.DATE}
|
| duration
| {EVENT.DURATION}
|
| hostname
| {HOST.NAME}
|
| id
| {EVENT.ID}
|
| item
| {ITEM.NAME1} is {ITEM.VALUE1}
|
| link
| {$ZABBIX_URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID}
|
| severity
| {TRIGGER.SEVERITY}
|
| status
| {TRIGGER.STATUS}
|
| tempoDuration
| {EVENT.RECOVERY.TIME} em {EVENT.RECOVERY.DATE}
|
| trigger
| {TRIGGER.NAME}
|
Script do Webhook para o Zabbix
Insira o seguinte script no Zabbix para enviar os dados dos alertas para o servidor Node.js configurado:
try {
Zabbix.Log(4, 'email webhook script value=' + value);
var result = {
'tags': {
'endpoint': 'email'
}
};
// Faz o parse do valor recebido
var params = JSON.parse(value);
var req = new HttpRequest();
var payload = {};
var resp;
// Define o cabeçalho para JSON
req.addHeader('Content-Type: application/json');
// Cria o payload para enviar ao seu servidor Node.js
payload = {
status: params.status,
severity: params.severity,
hostname: params.hostname,
item: params.item,
trigger: params.trigger,
link: params.link,
dataHora: params.dataHora,
dadosOperacional: params.dadosOperacional,
id: params.id,
duration: params.duration,
tempoDuration: params.tempoDuration
};
// Defina o endpoint do seu servidor Node.js
var email_endpoint = "http://172.16.24.219:3008/zabbix-webhook"; // Substitua pelo IP ou hostname do seu servidor
// Envia a requisição POST para o endpoint
resp = req.post(email_endpoint, JSON.stringify(payload));
// Verifica se a resposta é bem-sucedida
if (req.getStatus() !== 200) {
throw 'Response code: ' + req.getStatus();
}
// Processa a resposta
resp = JSON.parse(resp);
result.tags.issue_id = resp.id; // Adapte conforme necessário
result.tags.issue_key = resp.key; // Adapte conforme necessário
} catch (error) {
Zabbix.Log(4, 'email issue creation failed json: ' + JSON.stringify(payload));
Zabbix.Log(4, 'email issue creation failed: ' + error);
result = {};
}
return JSON.stringify(result);
3. Configurar Macro
Em Macros, crie a seguinte entrada:
{$ZABBIX_URL} : http://IP-DO-SERVIDOR/
Dicas Extras para Linux
Inicialização Automática com Systemd
Para iniciar o serviço automaticamente em reinicializações e falhas, siga os passos abaixo para configurá-lo como um serviço do systemd:
Criar Arquivo de Serviço
Execute o comando abaixo para criar o arquivo de serviço no diretório/etc/systemd/system/
:sudo nano /etc/systemd/system/zabbix-zulip-webhook.service
Configurar o Arquivo de Serviço
No editor, adicione o conteúdo abaixo ao arquivo:[Unit] Description=Zabbix-Zulip Webhook Service After=network.target [Service] ExecStart=/usr/bin/node /caminho/do/projeto/index.js WorkingDirectory=/caminho/do/projeto Restart=always User=seu_usuario Environment=NODE_ENV=production [Install] WantedBy=multi-user.target
Nota:
- Substitua
/caminho/do/projeto
pelo caminho completo onde o arquivoindex.js
está localizado. - Substitua
seu_usuario
pelo nome do usuário que executará o serviço.
- Substitua
Atualizar Permissões
Após salvar o arquivo, atualize as permissões com o comando:sudo chmod 644 /etc/systemd/system/zabbix-zulip-webhook.service
Iniciar e Habilitar o Serviço
Execute os seguintes comandos para iniciar o serviço e configurá-lo para iniciar automaticamente junto com o sistema:
sudo systemctl start zabbix-zulip-webhook.service sudo systemctl enable zabbix-zulip-webhook.service
Verificar Status do Serviço
Para verificar o status e garantir que o serviço esteja funcionando corretamente, utilize:
sudo systemctl status zabbix-zulip-webhook.service
Autor
Jefferson Alionco
Programador e entusiasta de tecnologias de integração e automação, com ampla experiência em Node.js, servidores e integração com ferramentas de monitoramento como Zabbix e Zulip.
Entre em contato: EMAIL: Jefferson L. Alionco