![]() |
This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introduzione
Ci sono molte buone ragioni per utilizzare FreeBSD invece di Linux o di altri sistemi Unix-like: ad esempio, la funzione container "Jails", disponibile dal 2000, le sue elevate prestazioni anche in caso di carichi I/O elevati, la robustezza del file system Unix2 o l'eccellente supporto per il moderno file system transazionale ZFS. Checkmk fornisce un agente per FreeBSD che si basa sull'agent per Linux, ma che è stato adattato alle entità di FreeBSD, ad esempio utilizzando diversi formati di output degli strumenti della riga di comando e diverse convenzioni di percorso. Tuttavia, l'installazione e il test funzionale devono essere in gran parte manuali, poiché non è previsto il packaging o il deployment dell'agente.
Nota relativa ad altri sistemi BSD: Questo articolo spiega l'installazione e la configurazione dell'agente per FreeBSD; sono disponibili ancheagenti per OpenBSD e NetBSD, la cui installazione è simile a quella descritta qui. Se utilizzi DragonFly BSD, saremo lieti di ricevere test e patch per l'agente FreeBSD.
La struttura di base dell'agente FreeBSD è la stessa descritta per l'agente Linux: si tratta di un puro script di shell, che può essere eseguito tramite un superserver internet (inetd
o xinetd
) o un tunnel SSH, il che lo rende leggero e sicuro.
In generale, in questo articolo diamo per scontato che tu abbia una certa esperienza con Linux o Solaris, quindi qui ci concentreremo principalmente sulle differenze.
2. Installazione
2.1. Prerequisiti
Affinché l'agente Checkmk sia in grado di leggere tutte le informazioni utili per il monitoraggio, è necessaria l'installazione di strumenti aggiuntivi:
sysutils/ipmitool
devel/libstatgrab
shells/bash
lang/python3
ftp/wget
Python è facoltativo a questo punto, ma in ogni caso è necessario per molti plug-in dell'agente. Una caratteristica particolare è bash
, poiché lo script dell'agente utilizza una sintassi non compatibile con la Bourne Shell di FreeBSD. ipmitool
è necessario per leggere le informazioni sull'hardware.
Puoi installare tutti questi strumenti con il seguente comando:
root@bsd:/root # pkg install ipmitool libstatgrab bash python3 wget
2.2. Installazione tramite i Porti FreeBSD
I port di FreeBSD contengono un port per l'agente Checkmk gestito da Mark Peek, che può contenere delle patch per rendere l'agente compatibile con le versioni FreeBSD-STABLE più recenti. Se la versione (es. 2.0.0) di questo agente Checkmk disponibile nei port di FreeBSD è uguale o leggermente superiore alla versione Checkmk attualmente in uso, puoi installare questo agente.
root@bsd:/root # cd /usr/ports/net-mgmt/check_mk_agent
root@bsd:/usr/ports/net-mgmt/check_mk_agent # make install
2.3. Installazione manuale
Se la versione disponibile nei port di FreeBSD è più vecchia di quella del tuo server Checkmk, installa l'agente più recente dal repository GitHub. Poiché le personalizzazioni delle nuove versioni di FreeBSD non sempre vengono riportate negli agenti per le vecchie versioni di Checkmk, di solito è una buona idea installare dal ramo di sviluppo più recente:
root@bsd:/root # wget -O /usr/local/bin/check_mk_agent https://checkmk.io/3EjKJlt
root@bsd:/root # chmod 0700 /usr/local/bin/check_mk_agent
Se stai cercando gli agenti per altri sistemi BSD o vuoi impostare il ramo di sviluppo su una specifica versione di Checkmk, individua la cartella dell'agente Checkmk su Github.
2.4. Test alla linea di comando
Ora chiama l'agente alla linea di comando e guarda l'output nel pager:
root@bsd:/root # check_mk_agent | more
<<<check_mk>>>
Version: 2.1.0i1
AgentOS: freebsd
Hostname: fbsd13
AgentDirectory: /etc/check_mk
DataDirectory:
SpoolDirectory: /var/spool/check_mk_agent
PluginsDirectory: /usr/local/lib/check_mk_agent/plugins
LocalDirectory: /usr/local/lib/check_mk_agent/local
Se non viene prodotto alcun output, controlla di nuovo i prerequisiti, in particolare che Bash sia installato su /usr/local/bin
.
3. Impostazione dell'accesso in rete
3.1. FreeBSD inetd
Il modo più semplice per accedere all'agente è il inetd
fornito con FreeBSD. In alternativa, il xinetd
di Linux è disponibile nella sezione security
dei Porti FreeBSD. La sua configurazione è esattamente la stessa descritta nell'articolo sull'agente Linux. Il inetd
vincola l'uscita dell'agente alla porta TCP 6556 e, se necessario, limita l'accesso a determinati server Checkmk.
Per prima cosa, controlla se il tuo /etc/services
contiene già una voce per la porta 6556:
root@bsd:/root # grep 6556/ /etc/services
In caso contrario, Checkmk deve essere identificato come servizio. A tal fine, aggiungi la seguente riga:
checkmk-agent 6556/tcp #Checkmk monitoring agent
Ora aggiungi la seguente riga al file di configurazione di /etc/inetd.conf
:
checkmk-agent stream tcp nowait root /usr/local/bin/check_mk_agent check_mk_agent
Il sito inetd
deve essere sempre attivato. Per farlo, aggiungi la seguente riga al file /etc/rc.conf
:
inetd_enable="YES"
Se è necessario limitare l'accesso, modifica il file /etc/hosts.allow
. Prima commenta la riga che consente l'accesso da qualsiasi luogo, poi aggiungi una riga che consente l'accesso solo al server Checkmk - qui con l'indirizzo IP 10.2.3.4
. Il primo parametro è il nome del comando eseguito da inetd
:
# The rules here work on a "first match wins" basis.
# ALL : ALL : allow
sshd : ALL : allow
check_mk_agent : 10.2.3.4 : allow
Una volta apportate le modifiche alla configurazione, riavvia:
root@bsd:/root # reboot
Ora l'accesso all'agente dal server di monitoraggio dovrebbe funzionare.
Il modo più semplice per verificarlo è con netcat
o nc
. Esegui il seguente comando come utente dell'istanza Checkmk sul server per testare la connessione di rete all'agente (in questo esempio, all'host con l'indirizzo IP 10.2.3.5
). L'output del comando è qui abbreviato per mostrare solo le prime righe:
OMD[mysite]:~$ nc 10.2.3.5 6556
<<<check_mk>>>
Version: 2.1.0i1
AgentOS: freebsd
3.2. Sicurezza
Poiché l'agente FreeBSD non supporta attualmente la crittografia, consigliamo di utilizzare un tunnel SSH nelle situazioni in cui è necessario proteggere i dati trasferiti. Ti spieghiamo come configurarlo nell'articolo sull'agente Linux.
4. Inclusione nel monitoraggio
L'inclusione nel monitoraggio avviene tramite una ricerca automatica dei servizi, come per tutti gli altri sistemi. Per un FreeBSD "nudo" senza servizi server ancora configurati, dovrebbero essere scoperti almeno 12 servizi e dieci aggiuntivi per le informazioni sul file system se installato su ZFS:

5. I plug-in
A causa della configurazione completamente manuale, della mancanza di distribuzione automatica e dei diversi percorsi dei file rispetto a Linux, si consiglia di testare i meccanismi dei plug-in più importanti. Per farlo, si utilizza MRPE.
5.1. MRPE
Crea un file di configurazione /etc/check_mk/mrpe.cfg
con il seguente contenuto:
Flux_Comp /bin/echo 'OK - Flux compensator up and running'
Ora dovrebbe essere presente una sezione MRPE nell'output dell'agente:
root@bsd:/root # check_mk_agent | grep -A1 '^...mrpe'
<<<mrpe>>>
(echo) Flux_Comp 0 OK - Flux compensator up and running
Nella scoperta del servizio Flux_Comp appare ora come un nuovo servizio:

5.2. Plug-in dell'agente
L'installazione dei plug-in dell'agente è identica a quella descritta nell'articolo sull'agente Linux. Assicurati di utilizzare lo Shebang corretto quando installi qualsiasi plug-in. Perl e Python sono installati in /usr/local/bin
su FreeBSD e molti script di shell che funzionano con /bin/sh
su Linux in realtà richiedono la shell Bourne Again installata in /usr/local/bin/bash
su FreeBSD.
Per i test, è adatto un semplice check locale, con il quale si valuta se il servizio monitorato è OK, WARN o CRIT direttamente sull'host monitorato. Già che ci siamo, usiamo un due righe per testare l'interprete Python. Anche in questo caso, notiamo i diversi percorsi predefiniti rispetto a Linux:
#!/usr/local/bin/python3
print("0 \"Hello Beastie\" - Just check paths and Python interpreter!")
Non dimenticare di rendere lo script eseguibile:
root@bsd:/root # chmod 0755 /usr/local/lib/check_mk_agent/local/hello.py
Anche in questo caso il servizio viene trovato immediatamente:

6. File e directory
6.1. Percorsi dei file sull'host da monitorare
Percorso del file | Descrizione |
---|---|
|
Percorso di installazione dell'agente Checkmk sull'host di destinazione. |
|
Directory di base per le estensioni dell'agente. |
|
Plug-in dell'agente, che lo estendono con dati di monitoraggio aggiuntivi. I plug-in possono essere scritti in qualsiasi linguaggio di programmazione disponibile. |
|
Luogo di archiviazione per i check locali personalizzati . |
|
Contiene i dati creati, ad esempio, dai cronjob e include una sezione a sé stante. Questi vengono anche aggiunti all'output dell'agente. |
|
Luogo di archiviazione dei file di configurazione dell'agente. |
|
File di configurazione per MRPE- per l'esecuzione dei classici plug-in di controllo compatibili con Nagios. |
Attenzione: Non ci sono percorsi predefiniti per FreeBSD, come per Linux sotto /var/lib/check_mk_agent
. Scegli una posizione adatta e inseriscila nello script dell'agente.