# 🛡️ 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**
Tag `target` **!=** `network_wan` **E**
Tag `class` **!=** `security` **E**
Tag `class` **!=** `database` **E**
Tag `class` **!=** `storage` **E**
Tag `class` **!=** `backup` | `Telegram_ITGuys_Alertas_Criticos` | | **Serviço Indisponivel** (Default) | Severidade <= `Atenção` **E**
Tag `target` **!=** `network_wan` **E**
Tag `class` **!=** `security` **E**
Tag `class` **!=** `database` **E**
Tag `class` **!=** `storage` **E**
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.*