templates-zabbix-itguys/agent_execution_plan_dhcp.md

106 lines
3.4 KiB
Markdown

# Plano de Execução: Monitoramento DHCP Multi-Instância pfSense
Este documento guia o agente de IA na implementação do monitoramento granular de DHCP no pfSense, conforme definido no plano de implementação.
**Arquivo Alvo:** `templates_gold/template_app_pfsense_snmp.yaml`
---
## 1. Enriquecimento da Coleta SNMP (Item)
**Objetivo:** Adicionar a OID de parâmetros (`hrSWRunParameters`) ao item de coleta de software para permitir diferenciar processos `dhcpd`.
- **Ação:** Localizar o item com `key: pfsense.sw.walk`.
- **Alteração:** Adicionar a OID `1.3.6.1.2.1.25.4.2.1.5` à lista `snmp_oid`.
- **Código Atual (Referência):**
```yaml
snmp_oid: walk[1.3.6.1.2.1.25.4.2.1.2,1.3.6.1.2.1.25.4.2.1.7]
```
- **Código Novo:**
```yaml
snmp_oid: walk[1.3.6.1.2.1.25.4.2.1.2,1.3.6.1.2.1.25.4.2.1.7,1.3.6.1.2.1.25.4.2.1.5]
```
- **Atualização do Preprocessing:** Adicionar o passo para mapear a nova OID para um nome JSON (ex: `hrSWRunParameters`).
```yaml
- type: SNMP_WALK_TO_JSON
parameters:
...
- hrSWRunParameters
- 1.3.6.1.2.1.25.4.2.1.5
- '0'
```
## 2. Implementação da Regra de Descoberta (LLD)
**Objetivo:** Criar uma nova regra de descoberta para detectar instâncias individuais do `dhcpd`.
- **Local:** Seção `discovery_rules`.
- **Nova Regra:**
```yaml
- uuid: (gerar_novo_uuid_v4)
name: 'Descoberta de Processos DHCP'
type: DEPENDENT
key: pfsense.dhcp.discovery
delay: '0'
description: 'Descobre instâncias do DHCP Server (dhcpd) diferenciadas por parâmetros (ex: IPv4 vs IPv6).'
master_item:
key: pfsense.sw.walk
filter:
evaltype: AND
conditions:
- macro: '{#HR_SW_NAME}'
value: 'dhcpd'
formulaid: A
lld_macro_paths:
- lld_macro: '{#HR_SW_NAME}'
path: '$.hrSWRunName'
- lld_macro: '{#HR_SW_PARAMS}'
path: '$.hrSWRunParameters'
- lld_macro: '{#HR_SW_STATUS}'
path: '$.hrSWRunStatus'
```
## 3. Protótipos de Itens e Triggers
**Objetivo:** Monitorar o status de cada instância descoberta.
- **Item Prototype:**
```yaml
- uuid: (gerar_novo_uuid_v4)
name: 'Status do Processo DHCP: {#HR_SW_PARAMS}'
type: DEPENDENT
key: 'pfsense.dhcp.process.status[{#HR_SW_PARAMS}]'
delay: '0'
description: 'Status da instância DHCP rodando com argumentos: {#HR_SW_PARAMS}'
valuemap:
name: 'Services status'
preprocessing:
- type: JSONPATH
parameters:
- '$[?(@.hrSWRunName == "{#HR_SW_NAME}" && @.hrSWRunParameters == "{#HR_SW_PARAMS}")].hrSWRunStatus.first()'
master_item:
key: pfsense.sw.walk
tags:
- tag: component
value: application
```
- **Trigger Prototype:**
```yaml
- uuid: (gerar_novo_uuid_v4)
expression: 'last(/PFSense by SNMP/pfsense.dhcp.process.status[{#HR_SW_PARAMS}])=0'
name: '🚨 DHCP Parado: Instância {#HR_SW_PARAMS} não está rodando'
priority: HIGH
description: 'A instância do DHCP com parâmetros "{#HR_SW_PARAMS}" parou de responder.'
```
## 4. Validação Automática (Mandatório)
**Objetivo:** Garantir que o template resultante seja válido e siga padrões (UUIDs únicos, etc).
- **Comando:**
```powershell
python validate_zabbix_template.py templates_gold/template_app_pfsense_snmp.yaml
```
- **Critério de Sucesso:** O script deve retornar `[SUCCESS] YAML Structure & UUIDs are VALID.` sem erros fatais.