Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

zabbix-email-webhook

Package Overview
Dependencies
Maintainers
0
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zabbix-email-webhook

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

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

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

  1. Instalação
  2. Configuração do Servidor
  3. Configuração no Zabbix
  4. Script do Webhook para o Zabbix

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

  1. Configuração do SMTP: Personalize as configurações do SMTP em index.js para enviar alertas usando seu provedor de email preferido.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. 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.
  3. 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

  1. Clone o repositório para uma pasta de sua preferência:

    git clone https://github.com/jeffersonalionco/zabbix-email-webhook.git
    
  2. Acesse o diretório do projeto:

    cd zabbix-email-webhook
    
  3. Instale as dependências do projeto:

    npm install
    
  4. 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: 'exemplo@dominio.com.br', // 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: 'exemplo@exemplo.com.br', // Seu e-mail de envio
    to: 'destinatario@exemplo.com.br', // 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:

  1. No menu de configuração do Zabbix, crie uma nova mídia do tipo webhook.
  2. Preencha os parâmetros conforme a tabela abaixo:
ParâmetroValor
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:

  1. 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
    
  2. 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 arquivo index.js está localizado.
    • Substitua seu_usuario pelo nome do usuário que executará o serviço.
  3. 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
    
  4. 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
    
  5. 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

Foto do 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

Keywords

FAQs

Package last updated on 19 Nov 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc