135 lines
5.0 KiB
Markdown
135 lines
5.0 KiB
Markdown
# Zabbix
|
|
### 📌 Sobre o Projeto
|
|
|
|
Um compose personalizado do zabbix para instalar pacotes sem a necessidade de um re-build, neste arquivo, utilizo uma versão mais leve do sistema, instalo o mtr, adicionado sistema de alertar **walert** para envio de alertas via whatsapp.
|
|
|
|
---
|
|
|
|
### 🚀 Como Usar
|
|
|
|
- Acesse seu terminal;
|
|
- Clone o repositorio:
|
|
|
|
```shell
|
|
sudo git clone https://git.instantti.com.br/instant/zabbix.git
|
|
```
|
|
|
|
- acesse o diretorio:
|
|
|
|
```shell
|
|
cd zabbix/
|
|
```
|
|
- Execute o comando:
|
|
|
|
```shell
|
|
sudo chmod +x data/alertscripts/walert && \
|
|
docker-compose up -d
|
|
```
|
|
|
|
#### Via Portainer
|
|
- 1° Criar um arquivo chamado **zabbix-init.sh** com o conteudo abaixo:
|
|
```shell
|
|
#!/bin/sh
|
|
echo "[INIT] Instalando mtr no container..."
|
|
apk update && apk add --no-cache mtr
|
|
echo "[INIT] Executando entrypoint original..."
|
|
# Usa exec sem su, preservando variáveis de ambiente como DB_SERVER_HOST
|
|
exec /usr/bin/docker-entrypoint.sh /usr/sbin/zabbix_server --foreground -c /etc/zabbix/zabbix_server.conf
|
|
```
|
|
- 2° Ajuste as permissões do arquivo criado com o comando:
|
|
```shell
|
|
chmod +x zabbix-init.sh && chmod 755 zabbix-init.sh
|
|
```
|
|
|
|
- 3° Crie o arquivo com o gatilho de envio de mensagens com os comandos abaixo:
|
|
```shell
|
|
mkdir -p -v data/alertscripts && touch data/alertscripts/walert && chmod +x data/alertscripts/walert
|
|
```
|
|
- 4° Copie todo conteudo de **data/alertscripts/walert** do repositorio, para dentro do arquivo **walert** que foi criado no passo anterior:
|
|
```shell
|
|
#!/bin/bash
|
|
# Baseado em BEEZAP - Bee Solutions.
|
|
|
|
URL="http://zbx-walert:4000/api/send"
|
|
PHONE="$1"
|
|
TITULO="$2"
|
|
MESSAGE="$TITULO$3"
|
|
|
|
wget -q -O- --post-data "{\"number\": \"${PHONE}\", \"message\": \"${MESSAGE}\"}" "$URL" --header "content-type: application/json"
|
|
```
|
|
|
|
- 4° Dentro do portainer, crie uma nova stack com o conteudo de **docker-compose.yml**
|
|
- 5° Aguarde todos os containers da stack iniciarem corretamente.
|
|
- 6° Abra pagina do zabbix no seu browser: **http://seuip:14201**
|
|
- 7° Ja dentro do zabbix, importe o **walert.xml** em Alertas > Tipos de midias.
|
|
- 7,5° Abra em outra aba do seu browser: **http://seuip:14201/status** e scaneie o QrCode pra logar no whatsapp
|
|
- 8° Crie uma nova ação de trigger em: **Alertas** > **Ações** > **Ações de Trigger**
|
|
<p align="center">
|
|
<img src="data/print/acoes.png" alt="Zabbix Acoes Banner" width="100%">
|
|
</p>
|
|
* Nome: Notificacoes Walert
|
|
- Aba: **Ações**:
|
|
* Adicione uma nova condição:
|
|
- Tipo: **Incidente não suprimido**
|
|
- Operador: **Não**.
|
|
|
|
- Aba: **Operações**:
|
|
* Adicione uma nova condição em (**Operação**):
|
|
- **Enviar aos usuarios**: Admin
|
|
- Enviar aos tipos de midia (selecione): **Walert**.
|
|
<p align="center">
|
|
<img src="data/print/operacoes-detalhes-users.png" alt="Zabbix Operacoes Detalhes Banner" width="100%">
|
|
</p>
|
|
* Repita o processo acima para condição (**Operação Recuperação**)
|
|
<p align="center">
|
|
<img src="data/print/operacoes.png" alt="Zabbix Operacoes Banner" width="100%">
|
|
</p>
|
|
|
|
|
|
- 9° Va em Usuarios > usuarios > Admin (selecione) > Midia
|
|
* Adicione uma nova midia:
|
|
- Tipo: **Walert**
|
|
- Enviar para: 55<ddd><seu_numero_whastapp>
|
|
- Usar severidade: **Atenção**, **Média**, **Alta**, **Desastre**
|
|
- Adicionar
|
|
* Clique no botão atualizar no zabbix.
|
|
|
|
- 10° Teste, Adicione um host ficticio agente snmp e template: **icmp-ping** pra ser mais rapido.
|
|
|
|
--
|
|
|
|
Se todos os passos acima foram executados corretamente, quando algum incidente ocorrer voce deve receber mensagens similares ao exemplo abaixo:
|
|
|
|
<p align="center">
|
|
<img src="data/print/whatsapp.png" alt="Zabbix Walert Banner" width="100%">
|
|
</p>
|
|
|
|
>[!TIP]
|
|
> - Garanta que todas as pastas / volumes estejam criados e com as corretas permissões configuradas.
|
|
> - **Nos passos 8° e 9° As opções podem e devem ser customizadas para o seu cenário.**
|
|
> - **No passo 7,5° atente-se porque o codigo é invalidado a cada 1minuto, caso não funcione, reinicie a stack e pule direto pra teste passo.**
|
|
|
|
---
|
|
|
|
>[!NOTE]
|
|
> - Caso você deseja, pode criar grupos no whatsapp contendo todos os envolvidos e enviar as mensagens diretamente para o grupo, o que existe pequenas alterações na configuração, conforme citado abaixo:
|
|
|
|
- Você deve obter qual o ID do grupo que será utilizado, pode fazer isso abrindo seu browser e acessando: **http://seuip:14201/api/getGroups** será exibido algo similar a:
|
|
<p align="center">
|
|
<img src="data/print/grupos.png" alt="Zabbix Walert Banner" width="100%">
|
|
</p>
|
|
|
|
- Uma vez com o código do grupo que deseja enviar mensagem, precisa fazer alguns ajustes no zabbix.
|
|
|
|
1° Você precisa criar um u**suario no zabbix** para este grupo.
|
|
|
|
2° Adicionar na midia desse usuario o **código do grupo** de **whatsapp** que deseja utilizar.
|
|
|
|
3° Crie um **grupo de usuario** contendo este usuario como membro.
|
|
|
|
4° Crie um **grupo de hosts** que vai enviar mensagens pra esse grupo e atribua o grupo de usuarios
|
|
|
|
|
|
## 👤 Autores
|
|
- William Grando.
|
|
- Agradecimento a Fernando Almondes (Bee Solutions), serviu como base para este projeto. |