167 lines
9.8 KiB
Markdown
167 lines
9.8 KiB
Markdown
# 🛡️ Zabbix ITGuys - Gold Collection
|
||
|
||
**Repositório Oficial de Ferramentas e Templates de Monitoramento de Alta Performance.**
|
||
|
||
> *"Um alerta sem contexto é apenas ruído. Um alerta com solução é uma ferramenta."* — Arthur "O Farol" Mendes
|
||
|
||
Este repositório contém a suíte de ferramentas e templates "Gold Standard" desenvolvida pela ITGuys para elevar o nível da observabilidade Zabbix. Aqui focamos em **inteligência acionável**, não apenas em coleta de dados.
|
||
|
||
---
|
||
|
||
## 🏆 O Padrão Arthur (Gold Standard)
|
||
|
||
Todo recurso neste repositório segue rigorosos critérios de qualidade:
|
||
|
||
1. **🇧🇷 Localização Total:** Tudo o que o operador vê (Items, Triggers, Graphs) está em **Português do Brasil (PT-BR)**, claro e profissional.
|
||
2. **🧠 Inteligência Acionável:** Alertas explicam o *motivo*, o *impacto* e a *solução*.
|
||
3. **🔮 Preditividade:** Uso de funções como `timeleft()` e detecção de anomalias para prevenir incidentes antes que ocorram.
|
||
4. **✅ Integridade Técnica:** UUIDs v4 válidos, sem dependências quebradas e sintaxe YAML impecável.
|
||
|
||
---
|
||
|
||
## 🧰 Ferramentas (Toolchain)
|
||
|
||
Scripts em Python desenvolvidos para garantir a integridade e qualidade dos templates.
|
||
|
||
### 1. `validate_zabbix_template.py` (The Gatekeeper)
|
||
O validador definitivo para templates Zabbix (YAML).
|
||
- **Verifica:** Sintaxe YAML, Duplicidade de UUIDs, Referências quebradas (Gráficos -> Itens, Dashboards -> Gráficos).
|
||
- **Garante:** Conformidade estrita com o padrão UUIDv4.
|
||
- **Audita:** Descrições em inglês (aviso) para garantir a tradução.
|
||
|
||
**Uso:**
|
||
```bash
|
||
python validate_zabbix_template.py templates_gold/template_app_pfsense_snmp.yaml
|
||
```
|
||
|
||
### 2. `fix_uuids.py`
|
||
Utilitário para correção em massa e higienização de templates.
|
||
- Remove metadados sujos de versões instáveis (Zabbix 8.0).
|
||
- Regenera UUIDs inválidos mantendo a consistência.
|
||
|
||
### 3. `merge_exchange.py`
|
||
Ferramenta para fundir o melhor de dois mundos: templates oficiais da Zabbix com customizações "Gold" da comunidade.
|
||
|
||
---
|
||
|
||
## 📂 Estrutura do Repositório
|
||
|
||
- **`/templates_gold`**: Templates prontos para produção, validados e traduzidos.
|
||
- *Exemplo:* `template_app_pfsense_snmp.yaml` (Monitoramento completo de pfSense via SNMP com análises de segurança e preditivas).
|
||
- **`/community-templates`**: Fonte upstream de templates diversos.
|
||
- **`/deploy_package`**: Scripts e arquivos para deploy automatizado de agentes e proxies.
|
||
|
||
---
|
||
|
||
## 📢 Criação e Definição de Salas (Telegram)
|
||
|
||
Para evitar a fadiga de alertas e garantir que problemas críticos sejam tratados imediatamente, utilizamos uma estrutura de grupos segmentada por **Severidade** e **Função**.
|
||
|
||
### A Regra de Ouro do MSP (Multi-Cliente)
|
||
Como atendemos múltiplos clientes, não criamos um grupo por cliente. Centralizamos por função e usamos **Tags** no início da mensagem.
|
||
> **Exemplo:** `🔥 [Coca-Cola] Oracle Down` ou `🐘 [Pepsi] Deadlock detectado`
|
||
|
||
### 📋 Tabela de Grupos e Mídias
|
||
|
||
| Canal (Grupo Telegram) | Chat ID | Nível de Severidade / Uso | Objetivo | Retenção Sugerida |
|
||
| :--- | :--- | :--- | :--- | :--- |
|
||
| **🌐 iT Guys - Alertas Queda de Link** | `-1002788825367` | 🚨 Disaster (Network only) | **EXCLUSIVO** para quedas de link do Datacenter (Redundância). | Eterna |
|
||
| **🔥 iT Guys - Alertas Criticos** | `-1002109756180` | 🚨 Disaster (Action Required) | Focado em "VOCÊ TEM QUE FAZER ALGUMA COISA AGORA". Incidentes que exigem intervenção humana imediata. Zero ruído. | Eterna |
|
||
| **🔒 iT Guys - Alertas de Segurança** | *Pendente* | 🚨 High, 🔥 Warning (SecOps) | Tentativas de invasão, Brute-force RDP/SSH, falhas de login excessivas, portas suspeitas. | Eterna |
|
||
| **🐘 iT Guys - Alertas Banco de Dados** | *Pendente* | ⚠️ Warning, 🔥 High (DBA) | Deadlocks, Queries Lentas, Conexões. Centraliza problemas de DB de **todos os clientes**. | 90 Dias |
|
||
| **💾 iT Guys - Alertas Storage** | *Pendente* | ⚠️ Warning, 🔥 High (Storage) | Tudo sobre Storage e Discos. Pode conter avisos preventivos, mas é o único lugar para assuntos de armazenamento. | 90 Dias |
|
||
| **♻️ iT Guys - Alertas Backups** | `-1002390490763` | ℹ️ Info, ⚠️ Warning (Backup Jobs) | Exclusivo para jobs e processos de backup (Sucesso/Falha). Ignora status do host (UP/DOWN). | 90 Dias |
|
||
| **👾 iT Guys - Gitea Gerencial** | `-4557333759` | ⚠️ Warning (KPIs/Management) | Focado em **Gestão e Prazos**. Projetos atrasados, ausência de commits por 7+ dias. (Nada de "push" logs). | 30 Dias |
|
||
| **🔨 iT Guys - Gitea Operacional** | `-4561812933` | ℹ️ Info (DevOps) | Logs técnicos, Commits, Pushes e Merges do dia a dia. | 30 Dias |
|
||
| **🃏 iT Guys - Ronald Santoro (Eventos)** | `-1002285824936` | ℹ️ Info, ⚠️ Warning (Default) | **Curinga (Wildcard)**. Se o alerta não se enquadra nas categorias acima, ele cai aqui. | 30 Dias |
|
||
|
||
### 🎣 Configuração de Webhooks (Gitea)
|
||
Para garantir a eficiência dos canais acima, configure os webhooks do Gitea da seguinte forma:
|
||
|
||
#### 1. 👾 iT Guys - Gitea Gerencial
|
||
**Foco:** Gestão de Projetos, Prazos e Entregas (Releases/PRs).
|
||
* [x] **Repositório** (Criado/Excluído)
|
||
* [x] **Versão** (Publicada/Atualizada)
|
||
* [x] **Pull Request** (Apenas Abertura/Fechamento/Merge)
|
||
* [x] **Issues** (Abertura/Fechamento - *Sem comentários*)
|
||
* [x] **Pacote** (Publicado)
|
||
|
||
#### 2. 🔨 iT Guys - Gitea Operacional
|
||
**Foco:** Atividade de Código, Logs de Desenvolvimento e Code Review.
|
||
* [x] **Push** (Commits)
|
||
* [x] **Criar** (Branch/Tag)
|
||
* [x] **Excluir** (Branch/Tag)
|
||
* [x] **Fork**
|
||
* [x] **Comentário da issue** (Discussões técnicas)
|
||
* [x] **Comentário no Pull Request** (Code Review)
|
||
* [x] **Pull Request Review Requested**
|
||
* [x] **Pull Request Sincronizado**
|
||
* [x] **Wiki** (Edições)
|
||
|
||
### 🔑 Credenciais de Bots (API Keys)
|
||
> **⚠️ CUIDADO:** Estas chaves dão acesso de escrita aos grupos.
|
||
|
||
- **Bot Queda de Link** (Uso exclusivo): `7720380254:AAFwcs3g5S3q3tAQwAkYGQ2_kM582IAnt8A`
|
||
- **Bot Críticos** (Action Required): `7186495928:AAHb4H_p02tjXpcNZlkq0KGXCUnoejBTuck`
|
||
- **Bot Backups** (Jobs e Rotinas): `7302893904:AAG5Bk2h76X6Yshb-mlOv568qBMMNw8cQvM`
|
||
- **Bot Gitea** (Gerencial): `7491383156:AAHaDxmhRlpElljs48R0Wvliy2qtUVB9ZIk`
|
||
- **Bot Gitea** (Operacional): `6881643386:AAFXbMjkvvOiqm47LvXZ8eC6LVQ4xea1Wms`
|
||
- **Bot Ronald Santoro** (Curinga): `6964501334:AAHjQ4q5CcohGvyhvg5aEscc8XcCWyxIeqA`
|
||
|
||
> **💡 Dica:** Para descobrir o `Chat ID` de um grupo, adicione o bot `@RawDataBot` ao grupo, copie o ID negativo (ex: `-100123456789`) e depois remova o bot.
|
||
|
||
---
|
||
|
||
### ⚙️ Configuração Zabbix 7.0 (The Gold Way)
|
||
|
||
Utilizamos a estratégia de **Roteamento via Ações (Action-Based Routing)**.
|
||
Neste modelo, o **Media Type** é apenas o "cano" e a **Action** é o "cérebro" que escolhe qual cano usar.
|
||
|
||
#### 1. Media Types (Canais)
|
||
Como cada bot tem um Token único, precisamos de um Media Type para cada um.
|
||
1. Vá em **Alertas > Tipos de Mídias**.
|
||
2. **Clone** o tipo `Telegram` padrão.
|
||
3. **Renomeie** para: `Telegram_[Nome_Do_Canal]` (ex: `Telegram_Criticos`).
|
||
4. **Token:** Insira o Token do bot específico na variável `api_token`.
|
||
|
||
#### 2. Usuário de Serviço (`itguys`)
|
||
Não crie um usuário para cada bot. Use um usuário central (ex: `itguys`).
|
||
1. Vá em **Alertas > Mídia** do usuário `itguys`.
|
||
2. Adicione **TODOS** os Media Types criados no passo anterior.
|
||
3. **Não use filtros de severidade aqui.** Deixe `1-7,00:00-24:00; N I A M A D` (tudo habilitado).
|
||
|
||
#### 3. Actions (O Cérebro)
|
||
Aqui definimos quem recebe o quê. Para cada canal, crie uma **Action** separada.
|
||
|
||
**Passo a Passo na Interface:**
|
||
1. **Ação:** Dê um nome claro (ex: `📢 Dispatch: Críticos`).
|
||
2. **Condições:** Defina as regras (Tag ou Severidade).
|
||
3. **Operações:** Adicione uma operação de envio.
|
||
* **Enviar para usuários:** Selecione `itguys` (ou `Zabbix administrators`).
|
||
* **Send to media type:** Selecione **APENAS** o Media Type específico daquele canal (ex: `Telegram_Criticos`).
|
||
|
||
**Matriz de Ações Recomendada:**
|
||
|
||
| Nome da Action | Aba: Condições (A) | Aba: Operações (B) -> Send directly to media type |
|
||
| :--- | :--- | :--- |
|
||
| **Quedas Link** | Tag `target` igual a `network_wan` | `Telegram_ITGuys_Queda_Link` |
|
||
| **Alertas de Segurança** | Tag `class` igual a `security` | `Telegram_ITGuys_Alertas_Seguranca` |
|
||
| **Alertas de Banco**| Tag `class` igual a `database` | `Telegram_ITGuys_Alertas_Banco` |
|
||
| **Alertas de Storage** | Tag `class` igual a `storage` | `Telegram_ITGuys_Alertas_Storage` |
|
||
| **Alertas Backups** | Tag `class` igual a `backup` | `Telegram_ITGuys_Alertas_Backups` |
|
||
| **Alertas Criticos** | Severidade >= `Média` **E** <br> Tag `target` **!=** `network_wan` **E** <br> Tag `class` **!=** `security` **E** <br> Tag `class` **!=** `database` **E** <br> Tag `class` **!=** `storage` **E** <br> Tag `class` **!=** `backup` | `Telegram_ITGuys_Alertas_Criticos` |
|
||
| **Serviço Indisponivel** (Default) | Severidade <= `Atenção` **E** <br> Tag `target` **!=** `network_wan` **E** <br> Tag `class` **!=** `security` **E** <br> Tag `class` **!=** `database` **E** <br> Tag `class` **!=** `storage` **E** <br> Tag `class` **!=** `backup` | `Telegram` (Padrão/Ronald) |
|
||
|
||
> **🚫 Regra de Ouro (Anti-Duplicação):** As ações "Críticos" e "Geral" funcionam como **aleias (catch-all)**. Elas devem conter condições de **negação (!=)** para todas as tags específicas, garantindo que um alerta de Banco de Dados vá *apenas* para o grupo de Banco, mesmo que seja um Desastre.
|
||
|
||
---
|
||
|
||
## ✨ Como Contribuir
|
||
|
||
1. **Valide sempre:** Antes de commitar qualquer template, execute o `validate_zabbix_template.py`.
|
||
2. **Traduza:** Não deixe termos como "Incoming Traffic" ou "Discarded packets". Use "Tráfego de Entrada" e "Pacotes Descartados".
|
||
3. **Contextualize:** Na descrição da trigger, explique o que fazer se o alerta disparar.
|
||
|
||
---
|
||
*Mantido pela equipe de SRE da ITGuys.*
|