Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeffersonalionco/zabbix-zulip-webhook
Integração entre Zabbix e Zulip usando um serviço Node.js para enviar alertas personalizados. Receba notificações automatizadas de severidade e status diretamente no Zulip, melhorando a comunicação da sua equipe. Para detalhes, consulte o README.md.
https://github.com/jeffersonalionco/zabbix-zulip-webhook
integration webhook zabbix zulip
Last synced: 1 day ago
JSON representation
Integração entre Zabbix e Zulip usando um serviço Node.js para enviar alertas personalizados. Receba notificações automatizadas de severidade e status diretamente no Zulip, melhorando a comunicação da sua equipe. Para detalhes, consulte o README.md.
- Host: GitHub
- URL: https://github.com/jeffersonalionco/zabbix-zulip-webhook
- Owner: jeffersonalionco
- License: mit
- Created: 2024-10-30T14:40:10.000Z (3 months ago)
- Default Branch: master
- Last Pushed: 2024-10-31T01:36:23.000Z (3 months ago)
- Last Synced: 2025-01-13T01:27:31.952Z (5 days ago)
- Topics: integration, webhook, zabbix, zulip
- Language: JavaScript
- Homepage: https://www.mundodosnegocio.com.br/webhook-zabbix-e-zulip
- Size: 23.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WebHook Zabbix Para Zulip
Este projeto foi criado para integração entre o **ZULIP** e o **ZABBIX**, possibilitando o envio de alertas do Zabbix diretamente para o Zulip.
---
## Como Usar
1. **Clonar o Repositório**
Escolha um diretório (pasta) no seu Linux ou Windows e execute o comando abaixo para clonar o repositório:```bash
git clone https://github.com/jeffersonalionco/Zabbix-Zulip-Webhook.git
```2. **Acessar a Pasta**
Após a clonagem, entre na pasta com o comando:```bash
cd Zabbix-Zulip-Webhook
```3. **Instalar Dependências**
Instale as dependências do projeto com o comando:```bash
npm install
```4. **Adicionar Configuração do Bot Zulip**
É necessário gerar o arquivo **zuliprc** do bot no Zulip e colocá-lo dentro da pasta **Zabbix-Zulip-Webhook**.5. **Executar o Projeto**
Inicie o projeto com o comando:```bash
npm index.js
```> **Nota**: Não se esqueça de configurar o Zabbix também!
---
## Configurações no Zabbix
### 1. Criar uma Mídia do Tipo Webhook
Em **Alertas** no Zabbix, crie uma mídia do tipo **Webhook** e configure os parâmetros abaixo:| Parâmetro | Valor |
|----------------|------------------------------------------------|
| **hostname** | `{HOST.NAME}` |
| **item** | `{ITEM.NAME1} is {ITEM.VALUE1}` |
| **link** | `{$ZABBIX_URL}/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID}` |
| **severity** | `{TRIGGER.SEVERITY}` |
| **status** | `{TRIGGER.STATUS}` |
| **trigger** | `{TRIGGER.NAME}` |### 2. Adicionar o Script
No campo de script do Webhook, cole o código abaixo e substitua `` pelo IP da máquina onde o **WebHook Zabbix para Zulip** está em execução.
```javascript
try {
Zabbix.Log(4, 'valor do script do webhook zulip. Value=' + value);var result = {
'tags': {
'endpoint': 'zulip'
}
};var params = JSON.parse(value);
var req = new HttpRequest();
var payload = {};
var resp;req.addHeader('Content-Type: application/json');
var status = "";
if (params.status === "PROBLEM") {
status = "**⚠️ Problema detectado**. \n\n Nível:";
} else if (params.status === "OK") {
status = "**✅ Problema Resolvido** \n\n Nível:";
} else {
status = params.status;
}payload = {
status: status,
severity: params.severity,
hostname: params.hostname,
item: params.item,
trigger: params.trigger,
link: params.link
};var zulip_endpoint = ":3007/zabbix-webhook";
resp = req.post(zulip_endpoint, JSON.stringify(payload));
if (req.getStatus() !== 200) {
throw 'Response code: ' + req.getStatus();
}resp = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;} catch (error) {
Zabbix.Log(4, 'Criação do problema zulip falhou JSON: ' + JSON.stringify(payload));
Zabbix.Log(4, 'Falha na criação do problema zulip: ' + error);
result = {};
}return JSON.stringify(result);
```
3. Configurar Macro
Em Macros, crie a seguinte entrada:``` Macro
{$ZABBIX_URL} : http://IP-DO-SERVIDOR/
```> IP-DO-SERVIDOR - substitua pelo ip do seu servidor zabbix ativo.
---
## 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/`:```bash
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:```ini
[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:```bash
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:
```bash
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:
```bash
sudo systemctl status zabbix-zulip-webhook.service
```---
Esse arquivo Markdown (`.md`) está formatado para fácil visualização e leitura, contendo seções bem definidas e detalhamentos adicionais para cada etapa do processo.
## 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](mailto:[email protected])