{"id":20557203,"url":"https://github.com/jeffersonalionco/zabbix-email-webhook","last_synced_at":"2026-01-26T12:33:39.159Z","repository":{"id":260680129,"uuid":"882043707","full_name":"jeffersonalionco/zabbix-email-webhook","owner":"jeffersonalionco","description":"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 simplicidade e adaptabilidade","archived":false,"fork":false,"pushed_at":"2024-11-01T23:19:44.000Z","size":23,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-13T01:27:31.789Z","etag":null,"topics":["alerting","automation","custom-webhook","email","monitoring","open-source","webhook","zabbix","zabbix-alerts","zabbix-api","zabbix-email","zabbix-integration"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jeffersonalionco.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jeffersonalionco","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2024-11-01T19:01:58.000Z","updated_at":"2024-11-02T22:01:48.000Z","dependencies_parsed_at":"2024-11-01T20:17:32.759Z","dependency_job_id":"09c62f86-1c6b-4251-8d73-ead65ae02b8c","html_url":"https://github.com/jeffersonalionco/zabbix-email-webhook","commit_stats":null,"previous_names":["jeffersonalionco/zabbix-houseti-webhook","jeffersonalionco/zabbix-email-webhook"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonalionco%2Fzabbix-email-webhook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonalionco%2Fzabbix-email-webhook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonalionco%2Fzabbix-email-webhook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jeffersonalionco%2Fzabbix-email-webhook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jeffersonalionco","download_url":"https://codeload.github.com/jeffersonalionco/zabbix-email-webhook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234250891,"owners_count":18802971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alerting","automation","custom-webhook","email","monitoring","open-source","webhook","zabbix","zabbix-alerts","zabbix-api","zabbix-email","zabbix-integration"],"created_at":"2024-11-16T03:35:36.040Z","updated_at":"2025-09-25T20:31:35.508Z","avatar_url":"https://github.com/jeffersonalionco.png","language":"JavaScript","funding_links":["https://github.com/sponsors/jeffersonalionco"],"categories":[],"sub_categories":[],"readme":"# Zabbix Email Webhook\n\nEste 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.\n\n---\n\n## Índice\n+ [`Introdução do Projeto`](#recursos-principais)\n\n1. [Instalação](#instalação)\n2. [Configuração do Servidor](#configuração-do-servidor)\n   - [Configuração SMTP no `index.js`](#configuração-smtp-no-indexjs)\n   - [Configuração de Envio de E-mail](#configuração-de-envio-de-e-mail)\n3. [Configuração no Zabbix](#configuração-no-zabbix)\n    - [Configurar macro](#3-configurar-macro)\n4. [Script do Webhook para o Zabbix](#script-do-webhook-para-o-zabbix)\n\n---\n\n## Recursos Principais\n\n- **Envio de Notificações por Email**: Configuração simples para envio de alertas de evento do Zabbix diretamente para emails específicos.\n- **Personalização de Alertas**: Possibilita customizar mensagens de alerta, permitindo incluir informações detalhadas como hostname, severidade do evento, descrição e duração.\n- **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.\n- **Compatibilidade com Nodemailer**: Integração pronta com o Nodemailer, permitindo que o serviço use SMTP configurável para envio seguro de emails.\n- **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.\n\n## Como Funciona\n\n1. **Configuração do SMTP**: Personalize as configurações do SMTP em `index.js` para enviar alertas usando seu provedor de email preferido.\n2. **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.\n3. **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.\n4. **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.\n\n## Estrutura do Projeto\n\n- **index.js**: Contém a lógica principal, com a configuração do SMTP e a definição de rotas.\n- **Instalação do Projeto**: Documentação no `README.md` com passos para instalação, configuração do webhook e parâmetros detalhados.\n- **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.\n\n## Pré-Requisitos\n\n- **Node.js** e **npm** instalados.\n- Configuração de um servidor SMTP válida para envio de emails.\n- Acesso ao painel de configuração do Zabbix para criação de novas mídias e parametrização do webhook.\n\n## Exemplos de Uso\n\n1. **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.\n2. **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.\n3. **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.\n\n## Tecnologias Utilizadas\n\n- **Node.js**\n- **Express.js**\n- **Nodemailer**\n- **Zabbix** (Integração via webhook)\n\n\n---\n\n## Instalação\n\n1. Clone o repositório para uma pasta de sua preferência:\n    ```bash\n    git clone https://github.com/jeffersonalionco/zabbix-email-webhook.git\n    ```\n\n2. Acesse o diretório do projeto:\n    ```bash\n    cd zabbix-email-webhook\n    ```\n\n3. Instale as dependências do projeto:\n    ```bash\n    npm install\n    ```\n4. Inicie o webhook\n    ```bash\n    node index.js\n    ```\n    \u003e - Lembre-se de que antes de inicializar você precisa editar algumas informações do codigo em\n    - [Configuração do Servidor](#configuração-do-servidor)\n    - [Configuração SMTP no `index.js`](#configuração-smtp-no-indexjs)\n    - [Configuração de Envio de E-mail](#configuração-de-envio-de-e-mail)\n\n\n---\n\n## Configuração do Servidor\n\n### Configuração SMTP no `index.js`\n\nAbra 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:\n\n```javascript\n// Configuração do transportador SMTP\nconst transporter = nodemailer.createTransport({\n    host: 'smtp.exemplo.com', // Substitua pelo servidor SMTP correto\n    port: 587, // Ou 465 para SSL\n    secure: false, // true para 465, false para outras portas\n    auth: {\n        user: 'exemplo@dominio.com.br', // Seu e-mail\n        pass: 'senha' // Sua senha\n    }\n});\n```\n\n\n### Configuração de Envio de E-mail\n\nEdite o trecho no arquivo `index.js` para configurar os dados de envio do e-mail com base nos alertas recebidos do Zabbix:\n\n```javascript\n// Configuração dos dados do e-mail\nconst mailOptions = {\n    from: 'exemplo@exemplo.com.br', // Seu e-mail de envio\n    to: 'destinatario@exemplo.com.br', // O e-mail para onde o alerta será enviado\n    subject: `Alerta Zabbix: ${data.trigger}`,\n    text: `Alerta acionado: ${data.trigger}. Detalhes: ${JSON.stringify(req.body)}`,\n    html: html // Conteúdo em HTML, substitua conforme necessário\n};\n```\n## Configuração no Zabbix\n\nPara configurar o envio de alertas via webhook, siga estas instruções no painel do Zabbix:\n\n1. No menu de configuração do Zabbix, crie uma nova mídia do tipo webhook.\n2. Preencha os parâmetros conforme a tabela abaixo:\n\n| Parâmetro         | Valor                                                                                          |\n|-------------------|------------------------------------------------------------------------------------------------|\n| `dadosOperacional`| `{EVENT.OPDATA}`                                                                               |\n| `dataHora`        | `{EVENT.TIME} em {EVENT.DATE}`                                                                 |\n| `duration`        | `{EVENT.DURATION}`                                                                             |\n| `hostname`        | `{HOST.NAME}`                                                                                  |\n| `id`              | `{EVENT.ID}`                                                                                   |\n| `item`            | `{ITEM.NAME1} is {ITEM.VALUE1}`                                                                |\n| `link`            | `{$ZABBIX_URL}/tr_events.php?triggerid={TRIGGER.ID}\u0026eventid={EVENT.ID}`                       |\n| `severity`        | `{TRIGGER.SEVERITY}`                                                                           |\n| `status`          | `{TRIGGER.STATUS}`                                                                             |\n| `tempoDuration`   | `{EVENT.RECOVERY.TIME} em {EVENT.RECOVERY.DATE}`                                               |\n| `trigger`         | `{TRIGGER.NAME}`                                                                               |\n\n---\n\n## Script do Webhook para o Zabbix\n\nInsira o seguinte script no Zabbix para enviar os dados dos alertas para o servidor Node.js configurado:\n\n```javascript\ntry {\n    Zabbix.Log(4, 'email webhook script value=' + value);\n\n    var result = {\n        'tags': {\n            'endpoint': 'email'\n        }\n    };\n\n    // Faz o parse do valor recebido\n    var params = JSON.parse(value);\n    var req = new HttpRequest();\n    var payload = {};\n    var resp;\n\n    // Define o cabeçalho para JSON\n    req.addHeader('Content-Type: application/json');\n\n    // Cria o payload para enviar ao seu servidor Node.js\n    payload = {\n        status: params.status,\n        severity: params.severity,\n        hostname: params.hostname,\n        item: params.item,\n        trigger: params.trigger,\n        link: params.link,\n        dataHora: params.dataHora,\n        dadosOperacional: params.dadosOperacional,\n        id: params.id,\n        duration: params.duration,\n        tempoDuration: params.tempoDuration\n    };\n\n    // Defina o endpoint do seu servidor Node.js\n    var email_endpoint = \"http://172.16.24.219:3008/zabbix-webhook\"; // Substitua pelo IP ou hostname do seu servidor\n\n    // Envia a requisição POST para o endpoint\n    resp = req.post(email_endpoint, JSON.stringify(payload));\n\n    // Verifica se a resposta é bem-sucedida\n    if (req.getStatus() !== 200) {\n        throw 'Response code: ' + req.getStatus();\n    }\n\n    // Processa a resposta\n    resp = JSON.parse(resp);\n    result.tags.issue_id = resp.id; // Adapte conforme necessário\n    result.tags.issue_key = resp.key; // Adapte conforme necessário\n\n} catch (error) {\n    Zabbix.Log(4, 'email issue creation failed json: ' + JSON.stringify(payload));\n    Zabbix.Log(4, 'email issue creation failed: ' + error);\n    result = {};\n}\n\nreturn JSON.stringify(result);\n```\n\n\n## 3. Configurar Macro\nEm Macros, crie a seguinte entrada:\n\n``` Macro\n{$ZABBIX_URL} : http://IP-DO-SERVIDOR/ \n```\n\n---\n\n\n## Dicas Extras para Linux\n\n### Inicialização Automática com Systemd\n\nPara iniciar o serviço automaticamente em reinicializações e falhas, siga os passos abaixo para configurá-lo como um serviço do **systemd**:\n\n1. **Criar Arquivo de Serviço**  \n   Execute o comando abaixo para criar o arquivo de serviço no diretório `/etc/systemd/system/`:\n\n    ```bash\n    sudo nano /etc/systemd/system/zabbix-zulip-webhook.service\n    ```\n\n2. **Configurar o Arquivo de Serviço**  \n   No editor, adicione o conteúdo abaixo ao arquivo:\n\n    ```ini\n    [Unit]\n    Description=Zabbix-Zulip Webhook Service\n    After=network.target\n\n    [Service]\n    ExecStart=/usr/bin/node /caminho/do/projeto/index.js\n    WorkingDirectory=/caminho/do/projeto\n    Restart=always\n    User=seu_usuario\n    Environment=NODE_ENV=production\n\n    [Install]\n    WantedBy=multi-user.target\n    ```\n\n    \u003e **Nota**:\n    \u003e - Substitua `/caminho/do/projeto` pelo caminho completo onde o arquivo `index.js` está localizado.\n    \u003e - Substitua `seu_usuario` pelo nome do usuário que executará o serviço.\n\n3. **Atualizar Permissões**  \n   Após salvar o arquivo, atualize as permissões com o comando:\n\n    ```bash\n    sudo chmod 644 /etc/systemd/system/zabbix-zulip-webhook.service\n    ```\n\n4. **Iniciar e Habilitar o Serviço**\n\n   Execute os seguintes comandos para iniciar o serviço e configurá-lo para iniciar automaticamente junto com o sistema:\n\n    ```bash\n    sudo systemctl start zabbix-zulip-webhook.service\n    sudo systemctl enable zabbix-zulip-webhook.service\n    ```\n\n5. **Verificar Status do Serviço**\n\n   Para verificar o status e garantir que o serviço esteja funcionando corretamente, utilize:\n\n    ```bash\n    sudo systemctl status zabbix-zulip-webhook.service\n    ```\n\n---\n\n\n\n\n## Autor\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/jeffersonalionco.png\" width=\"150\" height=\"150\" style=\"border-radius: 50%;\" alt=\"Foto do Autor\"\u003e\n\u003c/div\u003e\n\n**Jefferson Alionco**  \nProgramador 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.  \n\nEntre em contato: [EMAIL: Jefferson L. Alionco](mailto:jeffersonalionco@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffersonalionco%2Fzabbix-email-webhook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjeffersonalionco%2Fzabbix-email-webhook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjeffersonalionco%2Fzabbix-email-webhook/lists"}