# 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.