der denny aus de im www

Sie sind hier:   Startseite > Linux > QNAP Systeminfo direkt zu InfluxDB senden
Seitenanfang
Seite
Menü

QNAP Systeminfo direkt zu InfluxDB senden

Systeminformationen kann man natürlich auch via SNMP auslesen, aber wenn es nur auf die Visualisierung via InfluxDB und Grafana ankommt ist der direkte Weg evt. einfacher.

Benötigt wird ein Shell-Script das diverse Systeminformationen ausliest und via CURL an Influx sendet. Ich empfehle die ermittelten Werte genau zu prüfen. Vorallem /sbin/getsysinfo liefert ggf. falsche Werte. z.b. fängt "getsysinfo hdsmart" ab 1 zu zählen, alle anderen Befehle zählen ab 0. Mein QNAP bekommt aber nicht mehr die neueste Firmware, das kann bei euch anderst sein.

 

#!/bin/bash

LA1=`cat /proc/loadavg | cut -d" " -f1`
LA5=`cat /proc/loadavg | cut -d" " -f2`
LA15=`cat /proc/loadavg | cut -d" " -f3`

ETH_RX_BYTES=`ifconfig eth0 | grep 'TX bytes:' | cut -d: -f2 | cut -d" " -f1`
ETH_TX_BYTES=`ifconfig eth0 | grep 'TX bytes:' | cut -d: -f3 | cut -d" " -f1`

UP=`cat /proc/uptime | cut -d" " -f1 | cut -d. -f1`

SYSTEMP=`/sbin/getsysinfo systmp | cut -d" " -f1`


# echo "SYS FAN"
# /sbin/getsysinfo sysfan 1
# echo "SYS FAN STATUS"
# /sbin/getsysinfo sysfannum

# echo "HDD Num"
# /sbin/getsysinfo hdnum
# echo " "
# /sbin/getsysinfo hdmodel 1


HD2_TEMP=`/sbin/getsysinfo hdtmp 2 | cut -d" " -f1`
HD1_TEMP=`/sbin/getsysinfo hdtmp 1 | cut -d" " -f1`

HD1_STATUS=`/sbin/getsysinfo hdstatus 0`
HD2_STATUS=`/sbin/getsysinfo hdstatus 1`


HD1_SMART=`/sbin/getsysinfo hdsmart 1`
HD2_SMART=`/sbin/getsysinfo hdsmart 2`

VOL0_TOTAL=`/sbin/getsysinfo vol_totalsize 0`
VOL1_TOTAL=`/sbin/getsysinfo vol_totalsize 1`

VOL0_FREE=`/sbin/getsysinfo vol_freesize 0 | cut -d" " -f1 | cut -d. -f1`
VOL1_FREE=`/sbin/getsysinfo vol_freesize 1 | cut -d" " -f1 | cut -d. -f1`

VOL0_STATUS=`/sbin/getsysinfo vol_status 0`
VOL1_STATUS=`/sbin/getsysinfo vol_status 1`

echo ""
echo "### QNAP SYSTEMINFO ###"
echo "Uptime: $UP"
echo "Load 01min: $LA1"
echo "Load 05min: $LA5"
echo "Load 15min: $LA15"
echo "System Temperatur: $SYSTEMP"
echo "HDD 1 Temperatur: $HD1_TEMP"
echo "HDD 1 SMART Status: $HD1_SMART"
echo "HDD 2 Temperatur: $HD2_TEMP"
echo "HDD 2 SMART Status: $HD2_SMART"
echo "Volume 1 Free Space: $VOL0_FREE"
echo "Volume 1 Status: $VOL0_STATUS"
echo "Volume 2 Free Space: $VOL1_FREE"
echo "Volume 2 Status: $VOL1_STATUS"
echo "eth0 TX transfered bytes: $ETH_TX_BYTES"
echo "eth0 RX transfered bytes: $ETH_RX_BYTES"
echo ""

opts="-i -XPOST"
url="'http://10.10.11.108:8086/write?db=qnap_ts220&u=influxadmin&p=12345'"
databin="--data-binary 'sysinfo,hostname=ds sys_load01=$LA1,sys_load05=$LA5,sys_load15=$LA15,sys_uptime=$UP,sys_temp=$SYSTEMP,hdd1_temp=$HD1_TEMP,hdd1_smart=\"$HD1_SMART\",hdd2_temp=$HD2_TEMP,hdd2_smart=\"$HD2_SMART\",vol0_free=$VOL0_FREE,vol1_free=$VOL1_FREE,vol0_status=\"$VOL0_STATUS\",vol1_status=\"$VOL1_STATUS\"'"

echo $databin
echo ""
eval curl $opts $url $databin

 

Die gesendeten Bytes übertragen ich in dem Beispielscript nicht. Das sollte man lieber getrennt machen. Den Influx User/Passwort müsst ihr natürlich entfernen bzw. anpassen. Die url genauso, dort eure IP vom Influx anpassen.

 

Okay, als nächstes in die crontab den Aufruf einfügen. Der Path zu eurem Script muss natürlich stimmen. 

0-59/1 * * * * /bin/sh /usr/local/bin/sysinfo > /dev/null 2>&1

 

Noch ein Hinweis den ich auf einer anderen Seite gefunden habe:

  1. Edit your crontab file eg: vi /etc/config/crontab
  2. Make crontab see the changes: crontab /etc/config/crontab
  3. Restart the crontab service: /etc/init.d/crond.sh restart

 

Seitenanfang
Seite
Menü
Seitenanfang
Seite
Menü

Powered by CMSimple | Template: ge-webdesign.de | Login