feat: Add pfSense OpenVPN Zabbix agent installation instructions with a cache system.

This commit is contained in:
João Pedro Toledo Goncalves 2026-01-05 19:37:22 -03:00
parent 825f42d951
commit b4a56ed604
2 changed files with 116 additions and 93 deletions

View File

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

View File

@ -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) |