templates-zabbix-itguys/agent_execution_plan_dhcp.md

3.4 KiB

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):
    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:
    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).
    - 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:
    - 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:

    - 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:

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