templates-zabbix-itguys/README.md

164 lines
8.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🛡️ 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 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 |
| :--- | :--- | :--- |
| **📢 Dispatch: Link** | Tag `target` igual a `network_wan` | `Telegram_Link` |
| **📢 Dispatch: Segurança** | Tag `class` igual a `security` | `Telegram_Sec` |
| **📢 Dispatch: Banco/Dados**| Tag `class` igual a `database` | `Telegram_Dados` |
| **📢 Dispatch: Storage** | Tag `class` igual a `storage` | `Telegram_Storage` |
| **📢 Dispatch: Backups** | Tag `class` igual a `backup` | `Telegram_Backup` |
| **📢 Dispatch: Críticos** | Severidade maior ou igual a `Média` | `Telegram_Criticos` |
| **📢 Dispatch: Geral** | (Sem condições específicas) | `Telegram` (Padrão/Ronald) |
---
## ✨ 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.*