Checkmk
to checkmk.com
Important

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 molti buoni motivi per usare FreeBSD invece di Linux o altri sistemi simili a Unix: Ad esempio, la funzionalità di container "Jails", disponibile dal 2000, le sue elevate prestazioni anche sotto carichi I/O pesanti, la robustezza del file system UFS2 o l'eccellente supporto per il moderno file system transazionale ZFS. Checkmk fornisce un agente per FreeBSD basato sull'agente per Linux, ma adattato alle entità di FreeBSD, ad esempio utilizzando diversi formati di output degli strumenti da riga di comando e diverse convenzioni di percorso. Tuttavia, l'installazione e i test funzionali devono essere in gran parte manuali, poiché non è previsto il packaging o la distribuzione tramite l'Agent Bakery.

Tip

Nota relativa ad altri sistemi BSD: Questo articolo spiega l'installazione e la configurazione dell'agente per FreeBSD — sono disponibili anche agenti per OpenBSD e NetBSD . L'installazione per questi è simile a quella descritta qui. Se utilizzi DragonFly BSD, saremo lieti di ricevere test e eventuali patch suggerite per l'agente FreeBSD.

La struttura di base dell'agente FreeBSD è la stessa descritta per l'agente Linux: Si tratta di un semplice 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 possa 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 dipendenza speciale è bash, poiché lo script dell'agente utilizza una sintassi che non è compatibile né con la shell Almquist né con tcsh. L'ipmitool è necessario per acquisire le informazioni sull'hardware.

Installa tutte queste dipendenze con il seguente comando:

root@bsd:/root # pkg install ipmitool libstatgrab bash python3 wget
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

2.2. Installazione dai port di FreeBSD

I FreeBSD Ports contengono un port per l'agente Checkmk gestito da Ian Valentine, che potrebbe contenere patch per rendere l'agente compatibile con le versioni più recenti di FreeBSD-STABLE. Se la versione (ad es. 2.3.0) di questo agente Checkmk disponibile nei FreeBSD Ports è uguale o inferiore di una versione principale rispetto alla tua versione di Checkmk attualmente in uso, puoi installare questo agente.

È disponibile anche un pacchetto precompilato per il port check_mk_agent, che puoi installare utilizzando pkg:

root@bsd:/root # pkg install check_mk_agent
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Nella maggior parte dei casi, la versione che compili tu stesso dai port è più aggiornata:

root@bsd:/root # cd /usr/ports/net-mgmt/check_mk_agent
root@bsd:/usr/ports/net-mgmt/check_mk_agent # make install
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

2.3. Installazione manuale

Se la versione disponibile nei port di FreeBSD è più vecchia di quella sul tuo server Checkmk, installa l'ultimo agente dal repository GitHub. Dato che le personalizzazioni delle nuove versioni di FreeBSD non sempre vengono retroportate agli agenti per le versioni precedenti 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://raw.githubusercontent.com/checkmk/checkmk/2.4.0/agents/check_mk_agent.freebsd
root@bsd:/root # chmod 0700 /usr/local/bin/check_mk_agent
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se stai cercando gli agenti per altri sistemi BSD o vuoi impostare il ramo di sviluppo su una versione specifica di Checkmk, individua la cartella dell'agente su GitHub.

2.4. Prova dalla riga di comando

Ora esegui l'agente dalla riga di comando e dai un'occhiata all'output nel pager:

root@bsd:/root # check_mk_agent | more
<<<check_mk>>>
Version: 2.4.0p25
AgentOS: freebsd
Hostname: beastie
AgentDirectory: /etc/check_mk
DataDirectory: /var/lib/check_mk_agent
SpoolDirectory: /var/lib/check_mk_agent/spool
PluginsDirectory: /usr/local/lib/check_mk_agent/plugins
LocalDirectory: /usr/local/lib/check_mk_agent/local
OSType: unix
OSName: FreeBSD
OSVersion: 14.4
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se non viene visualizzato alcun output, ricontrolla i prerequisiti, in particolare che Bash sia installato in /usr/local/bin.

3. Configurazione dell'accesso tramite rete

3.1. FreeBSD inetd

Il modo più semplice per accedere all'agente è l'inetd fornito con FreeBSD. In alternativa, l'xinetde per Linux è disponibile nella sezione security dei FreeBSD Ports. La sua configurazione è esattamente la stessa descritta nell'articolo sull'agente Linux. L'inetd associa l'output dell'agente alla porta TCP 6556 e, se necessario, limita l'accesso a determinati server Checkmk.

Per prima cosa, controlla se il tuo file `/etc/services` contiene già una voce per la porta 6556:

root@bsd:/root # grep 6556/ /etc/services
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Se così non fosse, Checkmk deve essere identificato come servizio. Per farlo, aggiungi la seguente riga:

/etc/services
checkmk-agent 6556/tcp #Checkmk monitoring agent

Ora aggiungi la seguente riga al file di configurazione di /etc/inetd.conf:

/etc/inetd.conf
checkmk-agent stream tcp nowait root /usr/local/bin/check_mk_agent check_mk_agent

L'inetd deve essere sempre attivato. Per farlo, aggiungi la seguente riga al file /etc/rc.conf:

/etc/rc.conf
inetd_enable="YES"

Se è necessaria una restrizione di accesso, modifica il file /etc/hosts.allow. Per prima cosa metti in commento la riga che consente l'accesso da qualsiasi luogo, poi aggiungi una riga che consenta l'accesso solo al server Checkmk — qui con l'indirizzo IP 198.51.100.123. Il primo parametro è il nome del comando eseguito da inetd:

/etc/hosts.allow
# The rules here work on a "first match wins" basis.
# ALL : ALL : allow
sshd : ALL : allow
check_mk_agent : 198.51.100.123 : allow

Una volta apportate le modifiche alla configurazione, riavvia:

root@bsd:/root # reboot
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Ora l'accesso all'agente dal server di monitoraggio dovrebbe funzionare.

Il modo più semplice per verificarlo è utilizzare netcat o nc. Esegui il seguente comando come utente del sito sul server Checkmk per testare la connessione di rete all'agente (in questo esempio, all'host con l'indirizzo IP 198.51.100.231). L'output del comando è qui abbreviato per mostrare solo le prime righe:

OMD[mysite]:~$ nc "198.51.100.231" 6556
<<<check_mk>>>
Version: 2.4.0p25
AgentOS: freebsd
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

3.2. Sicurezza

Poiché l'agente FreeBSD attualmente non supporta la crittografia, ti consigliamo di utilizzare un tunnel SSH nei casi in cui sia necessario proteggere i dati trasferiti. Spieghiamo come configurarlo nell'articolo sull'agente Linux.

4. Inclusione nel monitoraggio

L'inclusione nel monitoraggio avviene tramite un rilevamento automatico dei servizi, come in tutti gli altri sistemi. Per un FreeBSD "nudo", senza servizi server ancora configurati, dovrebbero essere rilevati almeno 11 servizi, più altri dieci relativi alle informazioni sul file system se installato su ZFS:

List of 12 automatically discovered services.
Il rilevamento dei servizi in Checkmk troverà almeno 11 servizi.

5. Plug-in

A causa della configurazione completamente manuale, della mancanza di distribuzione automatica e dei percorsi dei file diversi rispetto a Linux, si consiglia di testare i meccanismi dei plug-in più importanti. Questo viene avviato utilizzando MRPE.

5.1. MRPE

Crea un file di configurazione /etc/check_mk/mrpe.cfg con il seguente contenuto:

/etc/check_mk/mrpe.cfg
Flux_Comp /bin/echo 'OK - Flux compensator up and running'

Ora dovrebbe esserci 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
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Nell'Flux_Compe di rilevamento dei servizi ora appare come nuovo servizio:

List with the newly detected service Flux_Comp.
Il plugin MRPE è stato configurato con successo

5.2. Plugin dell'agente

L'installazione dei plugin dell'agente è la stessa descritta nell'articolo sull'agente Linux. Assicurati di usare lo Shebang corretto quando installi qualsiasi plugin. Perl e Python sono installati in /usr/local/bin su FreeBSD, e molti script di shell che funzionano con /bin/sh su Linux richiedono in realtà la shell Bourne Again installata in /usr/local/bin/bash su FreeBSD.

Per il test, va bene un semplice controllo locale, con cui la valutazione se il servizio monitorato sia OK, WARN o CRIT viene effettuata direttamente sull'host monitorato. Già che ci siamo, usiamo due righe di codice per testare l'interprete Python. Anche in questo caso, nota i percorsi predefiniti diversi rispetto a Linux:

/usr/local/lib/check_mk_agent/local/hello.py
#!/usr/local/bin/python3
print("0 \"Hello Beastie\" - Just check paths and Python interpreter!")
Copia il contenuto del file negli appunti
Contenuto del file copiato con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Non dimenticare di rendere lo script eseguibile:

root@bsd:/root # chmod 0755 /usr/local/lib/check_mk_agent/local/hello.py
Copia i comandi negli appunti
Comandi copiati con successo negli appunti!
L'accesso in scrittura agli appunti è stato negato!

Anche in questo caso il servizio viene trovato immediatamente:

List with the newly detected service Hello Beastie.
È stato trovato il nuovo servizio "Hello Beastie"

6. File e directory

6.1. Percorsi dei file sull'host monitorato

Percorso del file Descrizione

/usr/local/bin/check_mk_agent

Percorso di installazione dell'agente Checkmk sull'host di destinazione.

/usr/local/lib/check_mk_agent

Directory di base per le estensioni dell'agente.

/usr/local/lib/check_mk_agent/plugins

Plug-in che estendono l'agente con dati di monitoraggio aggiuntivi. I plug-in possono essere scritti in qualsiasi linguaggio di programmazione disponibile.

/usr/local/lib/check_mk_agent/local

Percorso di archiviazione per i controlli locali personalizzati.

/var/spool/check_mk_agent

Contiene dati creati, ad esempio, dai cronjob e include una propria sezione. Questi vengono anche aggiunti all'output dell'agente.

/etc/check_mk

Percorso di archiviazione dei file di configurazione dell'agente.

/etc/check_mk/mrpe.cfg

File di configurazione per MRPE — per l'esecuzione di plug-in di controllo classici compatibili con Nagios.

Tip

Non ci sono percorsi di file predefiniti per FreeBSD, come invece c'è per Linux qui sotto /var/lib/check_mk_agent. Scegli una posizione adatta e inseriscila nello script dell'agente.


Last modified: Wed, 01 Apr 2026 11:03:55 GMT via commit fcad3dfca
In questa pagina