Passa al contenuto principale

Esportatore Prometheus di Telegraf

Telegraf raccoglie le metriche di sistema e dei servizi del firewall e le scrive nell'istanza locale di VictoriaMetrics. A partire da NethSecurity 8.8, Telegraf può esporre le stesse metriche anche in formato Prometheus, così un server Prometheus esterno, Grafana Agent o qualsiasi altro collettore compatibile può leggerle direttamente dal firewall.

L'esportatore è disabilitato per impostazione predefinita.

Abilitare l'esportatore​

Scegliere sempre una porta di ascolto diversa da quella predefinita 9273: quella porta è riservata al controller, che legge le metriche dell'unità attraverso il tunnel VPN. La porta 9274 è una scelta sicura.

  1. Aprire un terminale sul firewall.
  2. Abilitare l'output Prometheus sulla porta 9274 e applicare la modifica:
uci set telegraf.output_prometheus.enabled='1'
uci set telegraf.output_prometheus.listen_addr=':9274'
uci commit telegraf
reload_config
  1. Verificare che le metriche vengano servite:
curl -s http://127.0.0.1:9274/metrics | head

L'esportatore ora ascolta sulla porta 9274 e pubblica le metriche sul percorso /metrics. Proseguire con Accedere all'esportatore da remoto per raggiungerlo dal collettore.

pericolo

L'esportatore si lega a tutti gli indirizzi del firewall, quindi la porta è raggiungibile da ogni zona la cui politica di ingresso è ACCEPT. Con la configurazione predefinita questo significa tutta la LAN; se la politica di ingresso di una zona WAN o guest è stata modificata in ACCEPT, le metriche sono esposte anche lì. Non lasciare mai la porta aperta in questo modo: limitarla come descritto in Limitare l'accesso alle metriche.

warning

Se l'esportatore viene lasciato sulla porta predefinita 9273 mentre il firewall è collegato a un controller, due output Prometheus entrano in competizione sulla stessa porta e uno dei due non riesce ad aprirla. Vedere Unità collegate a un controller.

Accedere all'esportatore da remoto​

Sono disponibili due opzioni. Entrambe limitano chi può leggere le metriche, quindi scegliere quella più adatta al collettore.

Percorso su reverse proxy​

Consigliata: le metriche transitano su HTTPS sulla porta 443 e non viene aperta nessuna porta aggiuntiva sul firewall. Accedere alla pagina Certificati e reverse proxy, fare clic su Aggiungi reverse proxy e compilare:

  • Type: Path, per esempio /telegraf-metrics
  • Destination URL: http://127.0.0.1:9274/metrics
  • Allowed networks: l'indirizzo del collettore in formato CIDR, per esempio 203.0.113.5/32

Le metriche sono poi disponibili all'indirizzo https://<firewall-ip>/telegraf-metrics.

Regola di firewall in ingresso​

Usare questa opzione quando il collettore deve raggiungere direttamente la porta 9274. Accedere alla pagina Regole, scheda Regole di ingresso, e aggiungere una regola con:

  • Indirizzo sorgente: l'indirizzo del collettore
  • Zona sorgente: la zona a cui appartiene il collettore
  • Servizio di destinazione: Personalizzato, protocollo TCP, porta 9274
  • Azione: Accetta

Le metriche sono poi disponibili all'indirizzo http://<firewall-ip>:9274/metrics. Questa regola da sola non chiude la porta alle altre zone: completare la configurazione come descritto in Limitare l'accesso alle metriche. L'esportatore è esposto in chiaro, quindi proteggerlo anche con una password.

Limitare l'accesso alle metriche​

Scegliere uno dei due approcci seguenti, in base a come il collettore raggiunge l'esportatore.

Con il percorso su reverse proxy, legare l'esportatore solo all'indirizzo di loopback: nulla viene pubblicato sulle interfacce di rete e il reverse proxy resta l'unico punto di accesso, filtrato dal suo campo Allowed networks.

uci set telegraf.output_prometheus.listen_addr='127.0.0.1:9274'
uci commit telegraf
reload_config

Con una regola di firewall in ingresso, chiudere la porta a tutti gli altri. Nella pagina Regole, scheda Regole di ingresso, aggiungere una seconda regola sotto quella che accetta il collettore:

  • Indirizzo sorgente: qualsiasi indirizzo sorgente
  • Zona sorgente: Qualsiasi
  • Servizio di destinazione: Personalizzato, protocollo TCP, porta 9274
  • Azione: Scarta

Vince la prima regola che corrisponde, quindi il collettore viene accettato e ogni altro host viene scartato, qualunque sia la politica di ingresso della sua zona.

Proteggere l'esportatore con una password​

L'esportatore può richiedere l'autenticazione HTTP basic. Devono essere impostati sia il nome utente sia la password, altrimenti l'autenticazione non viene configurata:

uci set telegraf.output_prometheus.basic_auth_username='prometheus'
uci set telegraf.output_prometheus.basic_auth_password='<password>'
uci commit telegraf
reload_config

Verificare le credenziali con:

curl -s -u prometheus:'<password>' http://127.0.0.1:9274/metrics | head
warning

L'esportatore serve HTTP in chiaro e non richiede alcuna autenticazione fino a quando le due opzioni sopra non vengono impostate. Non esporlo al di fuori di una rete fidata senza una password.

Modificare l'indirizzo di ascolto​

L'opzione listen_addr accetta la sintassi indirizzo:porta; se l'indirizzo viene omesso, Telegraf si lega a tutti gli indirizzi IPv4 e IPv6 disponibili.

Per limitare l'esportatore a un solo indirizzo:

# raggiungibile solo dal firewall stesso, sufficiente per il reverse proxy
uci set telegraf.output_prometheus.listen_addr='127.0.0.1:9274'

# raggiungibile solo su un indirizzo LAN specifico
uci set telegraf.output_prometheus.listen_addr='192.168.1.1:9274'

uci commit telegraf
reload_config

Unità collegate a un controller​

Quando il firewall è collegato a un controller, il controller legge già le metriche di Telegraf attraverso il tunnel VPN: a ogni connessione l'unità apre la porta 9273 sul proprio indirizzo VPN.

Quell'endpoint è gestito dal sistema e non va modificato. Mantenendo il listen_addr dell'esportatore su una porta differente, come descritto in Abilitare l'esportatore, i due endpoint convivono senza interferire tra loro.

Disabilitare l'esportatore​

uci set telegraf.output_prometheus.enabled='0'
uci commit telegraf
reload_config

Il monitoraggio locale e le metriche salvate in VictoriaMetrics non vengono influenzati: l'esportatore è un output aggiuntivo e disabilitarlo interrompe solo l'endpoint Prometheus.