npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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

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

  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: '[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:

  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â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:

  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

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