diff --git a/templates_gold/pfsense_hybrid_snmp_agent/INSTRUCOES_AGENTE.txt b/templates_gold/pfsense_hybrid_snmp_agent/INSTRUCOES_AGENTE.txt index f11585d..fdc8520 100644 --- a/templates_gold/pfsense_hybrid_snmp_agent/INSTRUCOES_AGENTE.txt +++ b/templates_gold/pfsense_hybrid_snmp_agent/INSTRUCOES_AGENTE.txt @@ -1,50 +1,86 @@ -# INSTRUÇÕES DE INSTALAÇÃO - AGENTE ZABBIX P/ OPENVPN -===================================================== +# INSTRUÇÕES DE INSTALAÇÃO - AGENTE ZABBIX P/ OPENVPN (CACHE MODE) +================================================================== -Para que o monitoramento do OpenVPN funcione no Template Hybrid Gold, você deve realizar os passos abaixo em CADA firewall pfSense. +Para que o monitoramento do OpenVPN funcione no Template Hybrid Gold (v2+), você deve realizar os passos abaixo em CADA firewall pfSense. + +⚠️ NOTA IMPORTANTE: Esta versão utiliza um sistema de CACHE para evitar timeouts no Zabbix. + - openvpn-collector.sh: Roda via CRON a cada minuto e coleta dados dos sockets. + - openvpn-discovery.sh: Apenas lê o cache instantaneamente. REQUISITOS ---------- 1. Acesso SSH ao pfSense (Opção 8 no console). 2. Pacote "Zabbix Agent" instalado no pfSense (System > Package Manager). +3. OpenVPN rodando e com usuários conectados. -PASSO 1: INSTALAR O SCRIPT DE DESCOBERTA ----------------------------------------- -Este script é usado pelo Zabbix para descobrir automaticamente os usuários conectados. - +PASSO 1: INSTALAR OS SCRIPTS +---------------------------- 1. Crie a pasta se não existir: mkdir -p /opt/zabbix/ -2. Copie o arquivo 'files/openvpn-discovery.sh' para '/opt/zabbix/openvpn-discovery.sh' no firewall. - (Você pode usar SCP ou criar o arquivo com 'vi' e colar o conteúdo). +2. Copie os arquivos da pasta 'files/' para o firewall em '/opt/zabbix/': + - openvpn-collector.sh + - openvpn-discovery.sh 3. Dê permissão de execução: + chmod +x /opt/zabbix/openvpn-collector.sh chmod +x /opt/zabbix/openvpn-discovery.sh -PASSO 2: CONFIGURAR O AGENTE ----------------------------- -Este arquivo ensina o Zabbix a usar o script acima e ler os logs. +PASSO 2: CONFIGURAR O CRON JOB +------------------------------ +Como a coleta via socket é pesada para o timeout do agente, usamos o cron para atualizar o cache. -1. Copie o arquivo 'files/userparameter_openvpn.conf' para '/usr/local/etc/zabbix50/zabbix_agentd.conf.d/userparameter_openvpn.conf' +1. Instale o pacote "Cron" no pfSense (opcional, mas facilita) OU edite via terminal: - ⚠️ NOTA: O caminho pode variar dependendo da versão do pacote Zabbix Agent (ex: zabbix60, zabbix40). Verifique com 'ls /usr/local/etc/'. + vi /etc/crontab -PASSO 3: VERIFICAÇÃO DE CAMINHOS DE LOG ---------------------------------------- -O script assume que os logs de status do OpenVPN estão no padrão: - /var/log/openvpn/status*.log +2. Adicione a seguinte linha no final do arquivo: -Se o seu pfSense estiver configurado para salvar em outro lugar (verifique em OpenVPN > Servers > Edit > Advanced Settings ou Logs), você DEVE editar os dois arquivos (.sh e .conf) e corrigir o caminho antes de instalar. + * * * * * root /opt/zabbix/openvpn-collector.sh -PASSO 4: REINICIAR O SERVIÇO ----------------------------- -Após copiar os arquivos, reinicie o agente para aplicar as mudanças: +3. Salve e saia. O cron irá atualizar o arquivo /tmp/openvpn_discovery.json a cada minuto. +PASSO 3: HABILITAR PERMISSÕES E INCLUDE NO AGENTE +------------------------------------------------- +O usuário 'zabbix' precisa de permissão para ler os sockets e o arquivo de configuração de UserParameter precisa ser carregado. + +1. Edite o arquivo de configuração do agente: + vi /usr/local/etc/zabbix7/zabbix_agentd.conf + (O caminho pode variar: zabbix6, zabbix5, etc) + +2. Adicione/Verifique as seguintes configurações: + + # Carregar UserParameters + Include=/usr/local/etc/zabbix7/zabbix_agentd.conf.d/*.conf + + # Aumentar Timeout (recomendado) + Timeout=30 + + # Permitir execução de comandos remotos (se necessário para debug) + UnsafeUserParameters=1 + +3. Adicione o usuário zabbix ao grupo 'wheel' para ter acesso aos sockets do OpenVPN: + pw groupmod wheel -m zabbix + +PASSO 4: INSTALAR USERPARAMETERS +-------------------------------- +1. Copie o arquivo 'files/userparameter_openvpn.conf' para '/usr/local/etc/zabbix7/zabbix_agentd.conf.d/userparameter_openvpn.conf' + +PASSO 5: REINICIAR E TESTAR +--------------------------- +1. Reinicie o agente: service zabbix_agentd restart -TESTE ------ -No terminal do pfSense, teste se o agente consegue ler a versão do OpenVPN: - zabbix_agentd -t openvpn.version +2. Gere o cache manualmente pela primeira vez: + /opt/zabbix/openvpn-collector.sh -Se retornar [t|2.x.x], está funcionando! +3. Teste a leitura do discovery pelo agente: + zabbix_agentd -t openvpn.discovery + + Deve retornar algo como: [t|{"data":[{"{#VPN.USER}":"joao",...}]}] + +TROUBLESHOOTING +--------------- +- Se zabbix_agentd -t retornar "Permission denied": Verifique se o usuário zabbix está no grupo wheel. +- Se retornar TIMEOUT: Verifique se você está usando o script DE LEITURA (openvpn-discovery.sh) no UserParameter e não o coletor. +- Se retornar VAZIO { "data": [] }: Execute o coletor manualmente e veja se gera erros. Verifique se existem arquivos em /var/etc/openvpn/server*/sock diff --git a/templates_gold/pfsense_hybrid_snmp_agent/files/INSTALL_OPENVPN.md b/templates_gold/pfsense_hybrid_snmp_agent/files/INSTALL_OPENVPN.md index 0dd99ab..22452e4 100644 --- a/templates_gold/pfsense_hybrid_snmp_agent/files/INSTALL_OPENVPN.md +++ b/templates_gold/pfsense_hybrid_snmp_agent/files/INSTALL_OPENVPN.md @@ -1,106 +1,93 @@ # Instalação do Monitoramento OpenVPN no pfSense -## Padrão IT Guys Gold (v2 - Management Interface) +## Padrão IT Guys Gold (v3 - Cache System) -Este guia descreve como instalar os scripts de monitoramento OpenVPN no pfSense usando a Management Interface via sockets Unix. +Este guia descreve como instalar os scripts de monitoramento OpenVPN no pfSense usando o sistema de **CACHE** para alta performance e zero timeout no Zabbix. + +--- + +## Arquitetura + +1. **openvpn-collector.sh**: Executado via cron a cada minuto. Coleta dados de todos os sockets e salva em JSON. +2. **openvpn-discovery.sh**: Executado pelo Zabbix Agent. Apenas lê o arquivo JSON gerado (instantâneo). --- ## Pré-requisitos - pfSense 2.x ou superior -- Zabbix Agent 2 instalado (pacote `zabbix-agent72`) -- Pelo menos um servidor OpenVPN configurado +- Zabbix Agent instalado (pacote `zabbix-agent7` ou similar) +- Sockets OpenVPN ativos em `/var/etc/openvpn/server*/sock` --- -## Passo 1: Copiar o Script de Discovery +## Passo 1: Instalar os Scripts ```bash # Via SSH no pfSense: mkdir -p /opt/zabbix -# Copie o conteúdo do arquivo openvpn-discovery.sh para: -vi /opt/zabbix/openvpn-discovery.sh +# Copie os arquivos da pasta files/ para o firewall: +# - openvpn-collector.sh +# - openvpn-discovery.sh -# Torne executável +# Defina permissão de execução: +chmod +x /opt/zabbix/openvpn-collector.sh chmod +x /opt/zabbix/openvpn-discovery.sh ``` --- -## Passo 2: Instalar os UserParameters +## Passo 2: Configurar o Cron Job + +O coletor precisa rodar automaticamente. ```bash -# Copie o conteúdo do arquivo userparameter_openvpn.conf para: -vi /usr/local/etc/zabbix72/zabbix_agentd.conf.d/userparameter_openvpn.conf +# Adicione ao /etc/crontab: +echo '* * * * * root /opt/zabbix/openvpn-collector.sh' >> /etc/crontab + +# Execute manualmente uma vez para gerar o cache inicial: +/opt/zabbix/openvpn-collector.sh ``` --- -## Passo 3: Reiniciar o Zabbix Agent +## Passo 3: Configurar Zabbix Agent +```bash +# Edite a configuração (caminho pode variar, ex: /usr/local/etc/zabbix7/...) +vi /usr/local/etc/zabbix7/zabbix_agentd.conf + +# GARANTA QUE ESTAS LINHAS EXISTAM: +Include=/usr/local/etc/zabbix7/zabbix_agentd.conf.d/*.conf +Timeout=30 +UnsafeUserParameters=1 + +# Adicione usuários zabbix ao grupo wheel (permissão socket): +pw groupmod wheel -m zabbix +``` + +--- + +## Passo 4: Instalar UserParameters + +```bash +# Copie o userparameter_openvpn.conf para a pasta de include: +# Ex: /usr/local/etc/zabbix7/zabbix_agentd.conf.d/ +``` + +Reinicie o agente: ```bash service zabbix_agentd restart ``` --- -## Passo 4: Testar a Instalação +## Passo 5: Teste ```bash -# Testar discovery de usuários +# Teste de leitura instantânea zabbix_agentd -t openvpn.discovery -# Saída esperada (JSON com usuários conectados): -# {"data":[{"{#VPN.USER}":"joao.silva","{#VPN.SERVER}":"server14",...}]} - -# Testar contagem total de usuários -zabbix_agentd -t openvpn.user.count.total - -# Testar status de servidor específico -zabbix_agentd -t openvpn.server.status[server14] +# Saída esperada (imediata): +# [t|{"data":[{"{#VPN.USER}":"joao.silva"...}]}] ``` - ---- - -## Passo 5: Importar Template no Zabbix - -1. Acesse **Configuração → Templates → Importar** -2. Selecione o arquivo `template_pfsense_hybrid_gold.yaml` -3. Clique em **Importar** - ---- - -## Troubleshooting - -### Script retorna `{"data":[]}` -- Verifique se os sockets existem: `ls -la /var/etc/openvpn/server*/sock` -- Verifique permissões: o usuário `zabbix` precisa ler os sockets - -### Erro de permissão nos sockets -```bash -# Adicione o usuário zabbix ao grupo wheel (temporário) -pw groupmod wheel -m zabbix -service zabbix_agentd restart -``` - -### Testar manualmente um socket -```bash -echo "status 2" | nc -U /var/etc/openvpn/server14/sock -``` - ---- - -## Métricas Disponíveis - -| UserParameter | Descrição | -|---------------|-----------| -| `openvpn.discovery` | Discovery LLD de usuários conectados | -| `openvpn.server.discovery` | Discovery LLD de servidores OpenVPN | -| `openvpn.user.count.total` | Total de usuários conectados | -| `openvpn.user.count[serverX]` | Usuários por servidor | -| `openvpn.server.status[serverX]` | Status do servidor (1/0) | -| `openvpn.user.bytes_received[user]` | Bytes recebidos pelo usuário | -| `openvpn.user.bytes_sent[user]` | Bytes enviados pelo usuário | -| `openvpn.user.connected_since[user]` | Timestamp de conexão | -| `openvpn.user.status[user]` | Status do usuário (1/0) |