Pular para o conteúdo

pfSense

Este conteúdo não está disponível em sua língua ainda.

Um firewall pfSense através do pacote de API REST da comunidade (pfSense-pkg-RESTAPI, versão 2): gateways que estão fora do ar, perdem pacotes ou respondem lentamente, interfaces ativadas sem link, serviços ativados que pararam, e CPU, memória, disco e temperatura.

O DumbMonit envia uma chave de API no cabeçalho X-API-Key. Uma chave carrega exatamente os privilégios do usuário pfSense a que pertence: o usuário dumbmonit abaixo possui apenas os privilégios GET das cinco páginas que o DumbMonit lê, então a chave pode ler essas páginas e não alterar nada. A cada minuto o DumbMonit lê, em paralelo, /api/v2/status/system, /api/v2/status/gateways, /api/v2/status/interfaces, /api/v2/status/services e /api/v2/system/version, e, se o privilégio foi dado, /api/v2/system/restapi/version.

Todas as métricas têm o prefixo dumbmonit_pfsense_.

MétricaRótulosSignificado
cpu_usage_percent, memory_used_percent, swap_used_percent, disk_used_percent, mbuf_used_percentComo o painel os mostra, em porcentagem. O número de CPU é a própria estimativa do pfSense a partir da média de carga.
temperature_celsiusQuando o pfSense consegue ler um sensor.
load_averageperiod: 1m, 5m, 15mMédia de carga.
cpu_countNúcleos de processador.
version_infoversionValor 1: a versão do pfSense, 2.7.2-RELEASE.
gateway_upgateway0 quando o pfSense marca o gateway como fora do ar, 1 caso contrário.
gateway_status_infogateway, statusValor 1: a própria palavra do pfSense (none quando tudo está bem, down, loss, delay).
gateway_loss_percentgatewayPerda de pacotes para o endereço de monitoramento.
gateway_delay_milliseconds, gateway_stddev_millisecondsgatewayRound trip para o endereço de monitoramento e seu desvio; ausente enquanto o gateway está fora do ar.
gateways, gateways_downContagens.
interface_enabled, interface_upinterface, descrAtivada na configuração; link ativo.
interface_downinterface, descr1 quando a interface está ativada e não tem link. Uma interface desativada nunca está fora do ar.
interface_bytes_in_total, interface_bytes_out_total, interface_errors_in_total, interface_errors_out_totalinterface, descrContadores.
interfaces_downContagem.
service_running, service_enabledservice, descriptionComo Status > Services os mostra.
service_stoppedservice, description1 quando o serviço está ativado e não rodando.
services_stoppedContagem.
restapi_update_availableCom o privilégio /api/v2/system/restapi/version: 1 quando o pacote de API REST tem uma versão mais nova.
restapi_version_infoversion, latestValor 1: versão instalada e mais recente do pacote.

O pfSense não informa através desta API se uma atualização do pfSense está disponível: a única rota que toca atualizações do sistema (/api/v2/system/update) inicia uma. O DumbMonit reporta apenas as atualizações do próprio pacote.

As regras integradas que se aplicam:

  • pfSense gateway down: um gateway está marcado como fora do ar por três minutos (Warning).
  • pfSense gateway losing packets: mais de 10% de perda por dez minutos, em um gateway que não está já fora do ar (Advisory).
  • pfSense gateway slow: round trip acima de 500 ms por quinze minutos (Advisory). Aumente para um link via satélite.
  • pfSense interface without link: uma interface ativada sem link por cinco minutos (Advisory).
  • pfSense service stopped: um serviço ativado não rodando por cinco minutos (Advisory).
  • pfSense disk nearly full: mais de 90% por trinta minutos (Advisory).

O painel Firewall diz o que está errado em uma frase, mostra CPU, memória, disco e temperatura, depois lista todo gateway com sua latência e perda, as interfaces sem link, os serviços parados, e uma atualização disponível do pacote de API REST.

Criar uma chave de API REST somente leitura para o DumbMonit

Seção intitulada “Criar uma chave de API REST somente leitura para o DumbMonit”
  1. Instale o pacote de API REST da comunidade (pfSense-pkg-RESTAPI, versão 2) em Diagnostics > Command Prompt ou um shell SSH, com o arquivo da página de releases do projeto que corresponde à sua versão do pfSense (2.7.2 abaixo). Depois, em System > REST API > Settings, marque tanto BasicAuth quanto Key entre os métodos de autenticação.

    pkg-static add https://github.com/pfrest/pfSense-pkg-RESTAPI/releases/latest/download/pfSense-2.7.2-pkg-RESTAPI.pkg
  2. Em System > User Manager, adicione um usuário chamado dumbmonit com uma senha longa e aleatória. Em Effective Privileges, adicione apenas estes privilégios de API REST: /api/v2/status/system GET, /api/v2/status/gateways GET, /api/v2/status/interfaces GET, /api/v2/status/services GET, /api/v2/system/version GET, mais /api/v2/system/restapi/version GET para saber das próprias atualizações do pacote. Apenas para o próximo passo, adicione também /api/v2/auth/key POST.

  3. Crie a chave como dumbmonit, de qualquer máquina que alcance o pfSense: a chave carrega exatamente os privilégios desse usuário. Copie o valor da chave na resposta, depois remova o privilégio /api/v2/auth/key POST de novo.

    curl -k -u dumbmonit -X POST -H 'Content-Type: application/json' -d '{"descr":"DumbMonit"}' https://pfsense.lan/api/v2/auth/key
  4. No DumbMonit, informe o endereço do pfSense, por exemplo “pfsense.lan”, e cole a chave como API key. O pfSense vem com um certificado autoassinado: marque Aceitar um certificado não verificável a menos que você o tenha substituído.

CredencialCampos
Chave de API RESTA chave criada para dumbmonit no passo 3, enviada como X-API-Key.

Endereço: o nome de host ou IP do pfSense, host:porta, ou uma URL. Opções:

  • Protocolo (https) e Porta (443): os do webConfigurator, definidos em System > Advanced > Admin Access.
  • Aceitar um certificado não verificável: o próprio certificado do pfSense é autoassinado.
  • Tempo limite por requisição (15 s).

“pfSense refused the API key (401)”: a chave está errada, ou Key não está marcado entre os métodos de autenticação em System > REST API > Settings.

“pfSense accepted the API key but refused … (403)”: o usuário dumbmonit não tem o privilégio dessa página; a mensagem o nomeia.

”… not found: is the REST API package installed?”: o pacote está faltando, tipicamente após uma atualização do pfSense, que o remove. Reinstale-o como no passo 1.