NVIDIA-Grafikkarten unter Linux mit Checkmk überwachen

Das Überwachen von NVIDIA-Grafikkarten unter Linux gelingt mit Checkmk durch einen einfachen Local-Check. Einzig das nvidia-smi-Binary muss vorhanden sein.

Der Check übermittelt die Metriken für Temperatur, Speichernutzung und Stromverbrauch.

Visualisierung der Metriken in Checkmk
#!/bin/bash

# Version 1.0, 2021-07-24, (c) Daniel Neubert, https://neubert.at

TEMP_WARN=50
TEMP_CRIT=60

NVIDIA_SMI=`/usr/bin/which nvidia-smi`

if [ -z "{NVIDIA_SMI}" ] || [ ! -x "${NVIDIA_SMI}" ]; then
  exit
fi

trim() {
  local s2 s="$*"
  until s2="${s#[[:space:]]}"; [ "$s2" = "$s" ]; do s="$s2"; done
  until s2="${s%[[:space:]]}"; [ "$s2" = "$s" ]; do s="$s2"; done
  echo "$s"
}

for GPU_INDEX in `${NVIDIA_SMI} --query-gpu=index --format=csv,noheader`; do
    while IFS="," read -r index gpu_name driver_version temperature_gpu memory_total memory_used utilization_gpu power_draw
    do
        if (( $(trim $temperature_gpu) >= ${TEMP_CRIT} )); then
            SEVERITY=2
        elif (( $(trim $temperature_gpu) >= ${TEMP_WARN} )); then
            SEVERITY=1
        else
            SEVERITY=0
        fi

        echo "${SEVERITY} NVIDIA_GPU_$(trim $index) gpu_temp=$(trim $temperature_gpu);${TEMP_WARN};${TEMP_CRIT}|power_draw=$(trim $power_draw)|gpu_memory=$(trim $memory_used);;0;$(trim $memory_total) $(trim $gpu_name), Version $(trim $driver_version) - Temp GPU $(trim $temperature_gpu)"°C" - $(trim $memory_used)MB/$(trim $memory_total)MB used - Power $(trim $power_draw)W"
    done  < <( nvidia-smi --query-gpu=index,gpu_name,driver_version,temperature.gpu,memory.total,memory.used,utilization.gpu,power.draw --format=csv,noheader,nounits )

Das Script findet sich auch in meinem Github-Repository für Checkmk: https://github.com/glutorange/checkmk

Beitrag erstellt am 25.07.2021 um 00:54:06 Uhr von Daniel in Kategorie(n): Checkmk, Linux, Technik

Check_MK-Plugin für Hetzner Storagebox Monitoring

Wer wie ich bei Hetzner eine Storagebox betreibt und den Füllstand mit Check_MK überwachen möchte, für den hab ich ein kleines Plugin erstellt:

#!/bin/bash
echo "<<<df>>>"
echo "/storagebox sb `echo df | sftp -q storagebox | tail -1 | awk '{print $1" "$2" "$3" "$5}'` /storagebox"

Das Mini-Script wird dann im Plugin-Ordner abgelegt, also z.B.

/usr/lib/check_mk_agent/plugins

Das Ergebnis sieht dann – nach reinventarisierung des Hosts – im Check_MK wie folgt aus:

Dadurch, dass die Daten direkt an das df-Plugin gehen, kann man hier natürlich mit den regulären Rulesets arbeiten.

Das ganze setzt voraus, dass man auf dem Monitoring-Host eine SSH-Konfiguration für den Zugriff auf die Storagebox konfiguriert hat und den entsprechenden SSH-Key bei Hetzner hinterlegt hat.

Host storagebox 
	User uXYZXYZ
	Hostname uXYZXYZ.your-storagebox.de
	Port 23
	IdentityFile ~/.ssh/id_rsa_storagebox

Führt man das Script auf der Kommandozeile aus, dann sieht es wie folgt aus:

root@core:/usr/lib/check_mk_agent/plugins# ./storagebox 
<<<df>>>
/storagebox sb 524288000 281441050 242846949 53% /storagebox
root@core:/usr/lib/check_mk_agent/plugins#

Bei Gelegenheit schreibe ich mal was zur Hetzner Cloud, wer Interesse hat, darf gerne meinen Referal-Link nutzen: https://hetzner.cloud/?ref=LfVjlTiMI0Ws

Beitrag erstellt am 21.11.2020 um 20:04:03 Uhr von Daniel in Kategorie(n): Checkmk, Referal, Technik

[Impressum]