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

Se utilizzi sistemi operativi Unix, probabilmente conosci già i cosiddetti cronjob. Tuttavia, cron è in realtà un daemon che gestisce i processi ricorrenti in background e si assicura che vengano eseguiti a intervalli predefiniti. Naturalmente, non è necessario che il programma cron si occupi di questo: si tratta semplicemente del metodo più comune per automatizzare i processi ricorrenti in modo affidabile in Linux e, analogamente, in AIX o Solaris.

Alcuni di questi lavori sono essenziali per un funzionamento sicuro, quindi dovrebbero essere inclusi nel monitoraggio dell'host. In Checkmk puoi ottenere questo risultato con lo script mk-job. Questo piccolo script viene posizionato davanti al lavoro vero e proprio e svolge questo compito. Nel processo, mk-job registra una serie di dati di misurazione e li fornisce a Checkmk. I dati di misurazione più importanti includono quando il lavoro è stato eseguito per l'ultima volta e se è stato eseguito con successo.

Lo script mk-job è, come spesso accade in Checkmk, un semplice shell script che puoi controllare in qualsiasi momento. In questo modo hai sempre la massima trasparenza e il massimo controllo, anche per i lavori più importanti del tuo host.

2. Impostazione del plug-in

2.1. Impostazione del programma mk-job

Per prima cosa, imposta il piccolo script sull'host monitorato per poterlo utilizzare. Il modo più semplice per farlo è quello di prelevare il programma direttamente dal server Checkmk con wget e renderlo eseguibile - nell'esempio seguente per un server Linux:

root@linux# wget -O /usr/local/bin/mk-job https://myserver/mysite/check_mk/agents/mk-job
root@linux# chmod +x /usr/local/bin/mk-job

Se vuoi installare lo script su AIX o Solaris, carica invece mk-job.aix o mk-job.solaris. Se il programma wget non è disponibile, puoi ovviamente scaricare il file in un altro modo, ad esempio copiandolo con scp.

2.2. Monitoraggio del primo lavoro

Per monitorare il primo lavoro, prendiamo ancora una volta cron come esempio comune. Supponiamo di avere un cronjob come questo:

/etc/cron.d/backup
5 0 * * * root /usr/local/bin/backup >/dev/null

Questa richiesta di backup viene eseguita ogni giorno alle 12:05 con l'ID utente root. Per monitorare questo lavoro, usa un editor di cui ti fidi per anteporre al comando nella riga con lo script mk-job un nome. Il nome verrà poi utilizzato come nome del servizio in Checkmk e deve quindi essere unico su questo nome host:

/etc/cron.d/backup
# Syntax:
# <minute> <hour> <day> <month> <day of week> <user> mk-job <service name> <command>
5 0 * * * root mk-job nightly-backup /usr/local/bin/backup >/dev/null

Durante l'esecuzione del cronjob appena definito, mk-job cercherà di memorizzare i risultati della misurazione nella directory /var/lib/check_mk_agent/job/root. Poiché la directory job appartiene anche all'utente root, non è un problema per mk-job creare la directory dell'utente root se questa non esiste già.

Ad ogni chiamata, l'agente cercherà le directory sotto /var/lib/check_mk_agent/job/ e le aggiungerà all'output.

Un risultato di questo tipo potrebbe essere il seguente, dove per chiarezza viene mostrata solo la parte rilevante dell'output dell'agente:

<<<job>>>
==> nightly-backup <==
start_time 1613509201
exit_code 0
real_time 2:06.03
user_time 0.62
system_time 0.58
reads 200040
writes 35536
max_res_kbytes 28340
avg_mem_kbytes 0
invol_context_switches 1624
vol_context_switches 2086

3. Aggiunta del servizio a Checkmk

In Checkmk troverai automaticamente il servizio una volta che il lavoro è stato eseguito e i risultati salvati di conseguenza. Quindi, come al solito, vai alla scoperta del servizio e attivalo:

discover mkjob

Da un lato, troverai tutti i punti di misurazione mostrati sopra come metriche e in grafici time-series predefiniti; dall'altro, troverai i punti di misurazione anche nel riepilogo e nei dettagli del servizio:

service mkjob

4. Monitorare i lavori degli utenti non privilegiati

Se vuoi monitorare anche i lavori di utenti diversi da root, nella directory job /var/lib/check_mk_agent/job/ crea prima una directory utente e assegna i diritti all'utente appropriato - nell'esempio di comando seguente all'utente myuser:

root@linux# cd /var/lib/check_mk_agent/job/ && mkdir myuser && chown myuser:myuser myuser

In questo modo mk-job potrà memorizzare i risultati in questa directory per conto dell'utente.

5. Opzioni diagnostiche

Se la configurazione non funziona, hai a disposizione diverse opzioni per individuare il problema (o i problemi). Fondamentalmente, inizia sempre dal punto di partenza della catena e controlla innanzitutto se hai inserito correttamente lo script "mk-job", come descritto nei primi passi.

Le possibili fonti di errore sono:

  • mk-job non può essere trovato da cron perché è memorizzato in un percorso non riconosciuto da cron. In questo caso, specifica il percorso completo di mk-job.

  • Il nome del servizio contiene spazi e non è stato racchiuso tra virgolette (").

  • Il lavoro viene eseguito da un utente che non ha ancora una propria directory per la memorizzazione dei risultati.

Se i risultati delle misurazioni sono stati registrati e salvati correttamente, controlla sul server Checkmk se i risultati vengono trasmessi correttamente anche dall'agente Checkmk.

Puoi visualizzare l'output dell'agente con il seguente comando e inoltrare l'output al comando less:

OMD[mysite]:~$ cmk -d myhost | less

Di solito la sezione <<job>> si trova molto in basso nell'output.

Se i risultati non sono visibili qui, il motivo potrebbe essere che l'agente non ha i permessi necessari per leggere i file corrispondenti. Questo può accadere, ad esempio, se non chiami l'agente con l'utente "root", ma i risultati non possono essere letti da altri utenti:

root@linux# ls -l /var/lib/check_mk_agent/job/myUser/
total 5
-rw-rw---- 1 myUser   myUser   186 Jul 21 11:58  nightly-backup

In questi casi, devi aggiungere un permesso a tutti gli utenti per leggere i risultati:

root@linux# chmod 664 /var/lib/check_mk_agent/job/myUser/nightly-backup

Oppure crea un gruppo e assegnalo a tutti i file di lavoro. Con il comando seguente modifichi solo l'autorizzazione del gruppo. Il proprietario non viene modificato perché rimane inalterato se non viene inserito nulla prima dei due punti:

root@linux# chown :myJobGroup /var/lib/check_mk_agent/job/myUser/nightly-backup

Assicurati di aver creato il gruppo in precedenza e di aver aggiunto come membro l'utente con cui viene richiamato l'agente.

6. File e directory

Percorso Significato

/usr/local/bin/

Lo script mk-job deve essere collocato in questa directory in modo da poter essere richiamato facilmente.

/var/lib/check_mk_agent/job/

La directory abituale in cui vengono archiviati i risultati, ordinati per utente. Nota che il percorso in AIX è diverso: /tmp/check_mk/job/.

In questa pagina