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 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:

/etc/servizi
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

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

/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:

/etc/hosts.allow
# 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:

List of 12 automatically discovered services.
La scoperta del servizio in Checkmk troverà almeno 12 servizi.

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:

/etc/check_mk/mrpe.cfg
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:

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

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/lib/check_mk_agent/local/hello.py
#!/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:

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 da monitorare

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 dell'agente, che lo estendono con dati di monitoraggio aggiuntivi. I plug-in possono essere scritti in qualsiasi linguaggio di programmazione disponibile.

/usr/local/lib/check_mk_agent/local

Luogo di archiviazione per i check locali personalizzati .

/var/spool/check_mk_agent

Contiene i dati creati, ad esempio, dai cronjob e include una sezione a sé stante. Questi vengono anche aggiunti all'output dell'agente.

/etc/check_mk

Luogo di archiviazione dei file di configurazione dell'agente.

/etc/check_mk/mrpe.cfg

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.

In questa pagina