Checkmk dispone attualmente di oltre 2.000 plug-in che consentono di raccogliere metriche rilevanti dai sistemi distribuiti. È inoltre possibile utilizzare plug-in aggiuntivi per estendere le funzionalità dell'agente di monitoraggio. Per iniziare il monitoraggio su Linux e per mostrarti cosa è possibile fare con Checkmk, abbiamo già scritto dei plug-in Linux per il monitoraggio dei server.

Tuttavia, quell'articolo era solo la punta di ciò che è possibile monitorare in Linux. Esistono molti altri plug-in. Nell'articolo precedente abbiamo mostrato come utilizzare una serie di plug-in, tra cui:

  • Come verificare la presenza di aggiornamenti nella distribuzione Linux.
  • Come raccogliere informazioni sull'inventario.
  • Come controllare gli utenti connessi.
  • Come verificare che SSH sia configurato e funzioni correttamente.
  • Come monitorare i database MySQL, i volumi LVM e come controllare lo stato di salute delle unità
  • come controllare lo stato di salute delle unità attraverso il monitoraggio S.M.A.R.T.

Nel secondo articolo della serie, vogliamo approfondire i file system (compresi quelli di rete), Docker e il monitoraggio dei server web. Se non diversamente specificato, l'attenzione sarà rivolta al monitoraggio di Linux. Vediamo come monitorarli con Checkmk!

Operazioni sul file system

Monitorare un file o una cartella di tanto in tanto è importante. Forse è necessario controllare se un file della cache non viene creato o essere avvisati se un file non è stato modificato entro un certo periodo di tempo. Dal 2005 Linux dispone di un modo standard per monitorare le modifiche ai file e alle cartelle: inotify. Il plug-in agente principale fornito con Checkmk, mk_inotifyè basato su inotify ed è un prerequisito per il monitoraggio di una serie di operazioni sul file system.

Per il monitoraggio effettivo di determinati file e cartelle, sono necessari altri due componenti: il modulo Python pynotify e il plug-in inotify. Pynotify è disponibile tramite pip come di consueto, oppure è stato pacchettizzato dalla tua distribuzione. Per installarlo, basta usare:

$ sudo pip install pyinotify

Il inotify lo utilizzerà per raccogliere informazioni su specifiche operazioni sui file, come accesso, apertura, creazione e modifica. È possibile specificare quali file e cartelle monitorare e su quali operazioni si desidera essere informati. Checkmk creerà un servizio per ogni file e cartella che si desidera monitorare. Questo viene fatto attraverso la regola dell'agente Monitor file operations with Inotify (Linux), per l'Enterprise Edition.

Server web NGINX e Apache

Per l'accesso interno o esterno, un server web è solitamente installato su uno o più server in qualsiasi infrastruttura. Al giorno d'oggi, i due più diffusi sono NGINX e Apache. Entrambi sono facili da monitorare con Checkmk.

Per NGINX, il plug-in dell'agente si chiama nginx_status e, come è facile intuire, monitora lo stato globale del processo NGINX (non dei server) in esecuzione su un host. Lo fa collegandosi a NGINX e raccogliendo informazioni dal modulo di stato dello stub. Innanzitutto, questo componente deve essere abilitato affinché Checkmk possa monitorare il server web.

Per verificare se lo è, usare:

nginx -V 2>&1 | grep -o with-http_stub_status_modulee

Se viene visualizzato un output, è così. Se non lo è, può essere abilitato rapidamente modificando il file di configurazione di NGINX (su Debian e derivati si trova in /etc/nginx/sites-enabled/default) sotto il blocco server con:

location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }

Cambiare 127.0.0.1 con l'indirizzo della posizione principale di Checkmk. Ricaricare NGINX e il percorso http://127.0.0.1/nginx_status è aperto alle connessioni, che Checkmk utilizzerà per connettersi e raccogliere le metriche. Per installare il plug-in dell'agente nell'Enterprise Edition, configurare la regola dell'agente NGINX webservers (Linux) e si è pronti a monitorare NGINX con Checkmk.

Il monitoraggio di Apache funziona in modo simile. Il modulo di stato di Apache deve essere abilitato, cosa che di solito avviene in Debian/Ubuntu. Il percorso /server_status è quindi aperto al monitoraggio tramite Checkmk. Il plug-in dell'agente necessario è apache_status. La regola dell'agente è Apache webserver (Linux) per la CEE. Una volta configurato il tutto, verrà visualizzata una serie di utili metriche da Apache. Numero di slot, lavoratori, accessi, carico della CPU per ogni lavoratore, numero di connessioni, server e altro ancora possono essere monitorati con il plug-in. apache_status plug-in.

Nodi e contenitori Docker

Oggigiorno è raro avere un'infrastruttura che non coinvolga i container e la relativa orchestrazione. In locale o in remoto, i container Docker sono utilizzati per molti compiti. Ci sono molti server Linux che sfruttano la loro potenza. A questo punto, potrebbe essere superfluo dire che i container possono e devono essere monitorati con Checkmk.

Il plug-in dell'agente principale da avere è mk_docker.py. È l'eseguibile di base che consente agli altri plug-in di raccogliere informazioni sui nodi e sui container Docker. I plug-in per il monitoraggio dei nodi sono:

  • docker_node_disk_usage monitora il numero e la dimensione dei contenitori totali e attivi, delle immagini, dei volumi locali e della cache di compilazione di un nodo Docker.
  • docker_node_info_containers monitora il numero totale di container su un nodo, compresi quelli in pausa e quelli fermati.
  • docker_node_info è il plug-in di base per monitorare se l'applicazione Docker è in esecuzione o meno.

Per i container, Checkmk offre:

  • docker_container_cpu monitora l'utilizzo della CPU di un contenitore Docker. docker_container_cpu_cgroupv2 fa lo stesso, ma per cgroup v2.
  • docker_container_diskstat monitora il throughput dei dispositivi a blocchi dei container Docker. È possibile monitorare ogni singolo disco o un controllo sommario di tutti. docker_container_diskstat_cgroupv2 è l'equivalente per cgroup v2.
  • docker_container_status_health monitora lo stato di salute dei container. Utilizza l'API HEALTHCHECK di Docker.
  • docker_container_mem si assicura, a differenza di quanto ci si potrebbe aspettare dal nome, che il contenitore Docker rispetti i limiti di utilizzo della memoria del nodo o quelli configurati per il contenitore stesso. Non misura l'uso generale della memoria. È disponibile anche una versione per cgroup v2, docker_container_mem_cgroupv2.
  • docker_container_status controlla se un contenitore è in esecuzione o meno ed è quindi il plug-in di controllo più semplice per il monitoraggio di Docker.
  • docker_container_status_uptime monitora il tempo di attività dei contenitori Docker. Può essere configurato per avvisare quando il tempo di attività scende o supera determinati livelli.

La regola dell'agente nel CEE è denominata Docker node and containers.

Esportazioni NFS (Linux e Solaris)

NFS è il modo più semplice per condividere cartelle e relativi file su Linux e sui sistemi operativi correlati. Esiste da sempre e da anni è il metodo classico per esportare una directory su più host. NFS è presente su qualsiasi distribuzione Linux e il suo monitoraggio è supportato da Checkmk.

nfsexports è il plug-in dell'agente per tenere sotto controllo le esportazioni NFS e, una volta installato, vi informerà della disponibilità di ogni esportazione come definito in /etc/exports o attraverso exportfs. Vi avviserà in caso di malfunzionamento del demone del server NFS o del portmapper e se una delle esportazioni non è disponibile. Configurarlo attraverso la regola dell'agente NFS4 exports (Linux, Solaris) nel CEE.

Per monitorarle in modo indipendente, è possibile creare un servizio Checkmk per ciascuna esportazione.

Statistiche NFS IO

Sapere che le esportazioni NFS sono attive e accessibili è solo una parte del monitoraggio di NFS. Verificare che funzionino come dovrebbero è il passo successivo. Checkmk offre un plug-in a questo scopo, chiamato nfsiostat. Come suggerisce il nome, restituisce informazioni sul numero di operazioni e di byte al secondo sulle esportazioni NFS, sulle statistiche di lettura/scrittura e sulle ritrasmissioni.

Affinché l'agente possa svolgere il suo lavoro, il comando nfsiostat deve essere installato sui sistemi client. Questo si trova nella cartella nfs-utils o nel pacchetto nfs-common a seconda che si utilizzi una distribuzione basata su Red Hat o Debian. La regola dell'agente in CEE per configurarlo si chiama NFS IO Stats (Linux).