diff --git a/templates_gold/improvement_plan.md b/templates_gold/improvement_plan.md deleted file mode 100644 index 82a7faa..0000000 --- a/templates_gold/improvement_plan.md +++ /dev/null @@ -1,60 +0,0 @@ -# 📜 Especificação Técnica: Template pfSense SNMP (Zabbix 7.0 Native) - -Este documento define a especificação exata para a implementação das melhorias no template `template_app_pfsense_snmp.yaml`. O agente executor deve seguir estritamente as definições de UUID, Tags e Expressões abaixo. - -## 1. Diretrizes de Engenharia (Reference: Zabbix 7.0 Advanced YAML) -* **UUIDs:** Devem ser gerados novos para cada entidade (Item, Trigger, Dashboard). Formato: 32 chars hex lowercase (ex: `uuidgen | tr -d '-' | tr 'A-F' 'a-f'`). -* **Tags:** Taxonomia obrigatória para todos os novos triggers. - * `scope`: `availability` | `capacity` | `performance` | `security` - * `layer`: `hardware` | `network` | `application` -* **Macros:** Usar macros de template `{$MACRO}` para todos os thresholds. - -## 2. Novos Triggers (Física & Segurança) - -### 2.1 Interface Health (Contexto LLD: `net.if.discovery`) -Aplicar nos **Trigger Prototypes**. - -| Nome do Trigger | Expressão (Notação Zabbix) | Severidade | Tags | -|---|---|---|---| -| **🚨 Falha Física: Erros de Entrada Excessivos na {#IFNAME}** | `min(/PFSense by SNMP/net.if.in.errors[{#SNMPINDEX}],#3) > {$IF.ERRORS.WARN}` | HIGH | `scope:availability`, `layer:hardware` | -| **⚠️ Possível Duplex Mismatch: Erros de Saída na {#IFNAME}** | `min(/PFSense by SNMP/net.if.out.errors[{#SNMPINDEX}],#3) > {$IF.ERRORS.WARN}` | HIGHER | `scope:performance`, `layer:network` | -| **🐢 Congestionamento: Descartes na interface {#IFNAME}** | `min(/PFSense by SNMP/net.if.in.discards[{#SNMPINDEX}],5m) > {$IF.DISCARDS.WARN}` | WARNING | `scope:capacity`, `layer:network` | - -### 2.2 Security & Integrity (Global) -Aplicar em **Triggers Globais**. - -| Nome do Trigger | Expressão | Sev | Tags | -|---|---|---|---| -| **🛡️ Possível Portscan: Pico de Bloqueios na WAN** | `min(/PFSense by SNMP/pfsense.packets.match, 5m) > avg(/PFSense by SNMP/pfsense.packets.match, 1h) * 3` | WARNING | `scope:security`, `type:anomaly` | -| **🧩 Fragmentação Excessiva IPv4** | `min(/PFSense by SNMP/pfsense.packets.fragment, 5m) > {$PF.FRAG.MAX}` | WARNING | `scope:security` | - -## 3. Análise Preditiva & Derivada (Calculated Items & Triggers) - -### 3.1 Item Calculado: Noise Ratio -Criar novo item calculado para medir a "sujeira" do tráfego. -* **Key:** `pfsense.firewall.noise_ratio` -* **Formula:** `last(//pfsense.packets.match) / ( last(//pfsense.packets.match) + last(//net.if.pass.total) + 0.001 )` - * *Nota: `net.if.pass.total` deve ser um item de soma de todas as interfaces (pode ser complexo em SNMP puro, alternativa: usar apenas counters globais do PF se disponíveis).* - * *Correção:* O PF MIB tem counters globais. Usaremos: `last(//pfsense.packets.match) / ( last(//pfsense.pf_counters.walk[...pass]) + ... )`. Simplificação para o agente: Usar apenas **Taxa de Bloqueio** se o total não estiver claro. - * **Fallback Specification:** Usar Trigger em `pfsense.packets.match` (Bloqueio) comparado com baseline. - -### 3.2 Triggers Preditivas (Forecast) - -| Nome do Trigger | Expressão | Sev | -|---|---|---| -| **⏳ Tabela de Estados cheia em < 1h** | `timeleft(/PFSense by SNMP/pfsense.state.table.pused, 1h, 100) < 1h` | HIGH | -| **⏳ Source Tracking cheia em < 1h** | `timeleft(/PFSense by SNMP/pfsense.source.tracking.table.pused, 1h, 100) < 1h` | HIGH | - -## 4. Dashboards (Visualização como Código) -Adicionar bloco `dashboards` no YAML root. - -* **Dashboard:** "PFsense: Security & Health" -* **Widgets:** - 1. **Graph (Stacked):** "Firewall Traffic Mix" -> Series: `pfsense.packets.match` (Red), `pfsense.packets.normalize` (Yellow). - 2. **Gauge:** "State Table Capacity" -> Item: `pfsense.state.table.pused`. - 3. **Top Hosts (Honeycomb style equivalent if 7.0):** "Interface Errors" -> LLD Items `net.if.in.errors[*]`. - -## 5. Instruções de Execução -1. **Edição:** Inserir os novos blocos no `template_app_pfsense_snmp.yaml`. -2. **Validação:** Garantir que UUIDs sejam únicos (não reutilizar strings do exemplo). -3. **Macros:** Adicionar as macros `{$IF.ERRORS.WARN}`, `{$IF.DISCARDS.WARN}`, `{$PF.FRAG.MAX}` no bloco `macros` do template.