feat: Add pfSense OpenVPN Zabbix agent installation instructions with a cache system.
This commit is contained in:
parent
825f42d951
commit
b4a56ed604
|
|
@ -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
|
REQUISITOS
|
||||||
----------
|
----------
|
||||||
1. Acesso SSH ao pfSense (Opção 8 no console).
|
1. Acesso SSH ao pfSense (Opção 8 no console).
|
||||||
2. Pacote "Zabbix Agent" instalado no pfSense (System > Package Manager).
|
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
|
PASSO 1: INSTALAR OS SCRIPTS
|
||||||
----------------------------------------
|
----------------------------
|
||||||
Este script é usado pelo Zabbix para descobrir automaticamente os usuários conectados.
|
|
||||||
|
|
||||||
1. Crie a pasta se não existir:
|
1. Crie a pasta se não existir:
|
||||||
mkdir -p /opt/zabbix/
|
mkdir -p /opt/zabbix/
|
||||||
|
|
||||||
2. Copie o arquivo 'files/openvpn-discovery.sh' para '/opt/zabbix/openvpn-discovery.sh' no firewall.
|
2. Copie os arquivos da pasta 'files/' para o firewall em '/opt/zabbix/':
|
||||||
(Você pode usar SCP ou criar o arquivo com 'vi' e colar o conteúdo).
|
- openvpn-collector.sh
|
||||||
|
- openvpn-discovery.sh
|
||||||
|
|
||||||
3. Dê permissão de execução:
|
3. Dê permissão de execução:
|
||||||
|
chmod +x /opt/zabbix/openvpn-collector.sh
|
||||||
chmod +x /opt/zabbix/openvpn-discovery.sh
|
chmod +x /opt/zabbix/openvpn-discovery.sh
|
||||||
|
|
||||||
PASSO 2: CONFIGURAR O AGENTE
|
PASSO 2: CONFIGURAR O CRON JOB
|
||||||
----------------------------
|
------------------------------
|
||||||
Este arquivo ensina o Zabbix a usar o script acima e ler os logs.
|
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
|
2. Adicione a seguinte linha no final do arquivo:
|
||||||
---------------------------------------
|
|
||||||
O script assume que os logs de status do OpenVPN estão no padrão:
|
|
||||||
/var/log/openvpn/status*.log
|
|
||||||
|
|
||||||
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
|
3. Salve e saia. O cron irá atualizar o arquivo /tmp/openvpn_discovery.json a cada minuto.
|
||||||
----------------------------
|
|
||||||
Após copiar os arquivos, reinicie o agente para aplicar as mudanças:
|
|
||||||
|
|
||||||
|
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
|
service zabbix_agentd restart
|
||||||
|
|
||||||
TESTE
|
2. Gere o cache manualmente pela primeira vez:
|
||||||
-----
|
/opt/zabbix/openvpn-collector.sh
|
||||||
No terminal do pfSense, teste se o agente consegue ler a versão do OpenVPN:
|
|
||||||
zabbix_agentd -t openvpn.version
|
|
||||||
|
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -1,106 +1,93 @@
|
||||||
# Instalação do Monitoramento OpenVPN no pfSense
|
# 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
|
## Pré-requisitos
|
||||||
|
|
||||||
- pfSense 2.x ou superior
|
- pfSense 2.x ou superior
|
||||||
- Zabbix Agent 2 instalado (pacote `zabbix-agent72`)
|
- Zabbix Agent instalado (pacote `zabbix-agent7` ou similar)
|
||||||
- Pelo menos um servidor OpenVPN configurado
|
- Sockets OpenVPN ativos em `/var/etc/openvpn/server*/sock`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Passo 1: Copiar o Script de Discovery
|
## Passo 1: Instalar os Scripts
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Via SSH no pfSense:
|
# Via SSH no pfSense:
|
||||||
mkdir -p /opt/zabbix
|
mkdir -p /opt/zabbix
|
||||||
|
|
||||||
# Copie o conteúdo do arquivo openvpn-discovery.sh para:
|
# Copie os arquivos da pasta files/ para o firewall:
|
||||||
vi /opt/zabbix/openvpn-discovery.sh
|
# - 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
|
chmod +x /opt/zabbix/openvpn-discovery.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Passo 2: Instalar os UserParameters
|
## Passo 2: Configurar o Cron Job
|
||||||
|
|
||||||
|
O coletor precisa rodar automaticamente.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Copie o conteúdo do arquivo userparameter_openvpn.conf para:
|
# Adicione ao /etc/crontab:
|
||||||
vi /usr/local/etc/zabbix72/zabbix_agentd.conf.d/userparameter_openvpn.conf
|
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
|
```bash
|
||||||
service zabbix_agentd restart
|
service zabbix_agentd restart
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Passo 4: Testar a Instalação
|
## Passo 5: Teste
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Testar discovery de usuários
|
# Teste de leitura instantânea
|
||||||
zabbix_agentd -t openvpn.discovery
|
zabbix_agentd -t openvpn.discovery
|
||||||
|
|
||||||
# Saída esperada (JSON com usuários conectados):
|
# Saída esperada (imediata):
|
||||||
# {"data":[{"{#VPN.USER}":"joao.silva","{#VPN.SERVER}":"server14",...}]}
|
# [t|{"data":[{"{#VPN.USER}":"joao.silva"...}]}]
|
||||||
|
|
||||||
# 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]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 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) |
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue