Portál AbcLinuxu, 5. května 2025 05:20

Dotaz: SDS Micro - SNMP --> Nagios (Centreon)

26.4.2017 13:09 KVM
SDS Micro - SNMP --> Nagios (Centreon)
Přečteno: 810×
Odpovědět | Admin
Ahoj, nemáte někdo plugin pro Nagios, který umí tahat data z teplotních čidel připojených na SDS micro?

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.4.2017 13:43 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud se nepletu tak SNMP je jeden z vychozich pluginu a MIB je volne ke stazeni..
26.4.2017 14:36 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Myslel jsem pluginy, viz: https://exchange.nagios.org/directory/Plugins
Max avatar 27.4.2017 21:59 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
SDS micro podporuje SNMP, nagios má plugin "check_snmp". Použiješ tedy plugin check_snmp a předhodíš mu příslušné OID. V čem je tedy přesně problém? Resp. jak by se měl plugin lišit od check_snmp?
Zdar Max
Měl jsem sen ... :(
28.4.2017 08:59 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Presne tak, zarizeni pouziva SNMP verzi 1, nazev komunity je sdsxpublic a tebe bude zajimat OID sdsDS18B20actualTempInteger.1-16.
28.4.2017 10:29 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
No třeba tady. Chci monitorovat teplotu cpu. Zadám ./check_snmp -P 2c -C sdsxpublic -m ALL -H ip -o sdsSoCtempValue.0 a dostanu odpověď SNMP OK - 485. Jenže tohle číslo mi je na prd, protože se musí ještě přepočítat vzorcem ((5*(59-30*((3/1024)*485)))/2), abych dostal stupně Celsia. Proto jsem myslel, že spustím nějaký skript, který si stáhne snmp data a přepočítá to pro potřeby centreonu/nagiosu.
28.4.2017 13:05 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Na teplotu SoC chipu si se neptal. Pokud ti celociselna cast teploty cidla(na tu nic nepotrebujes) nestaci budes si muset plugin pravdepodobne napsat sam.
28.4.2017 13:29 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
To je fakt. No škoda. I tak díky.
2.5.2017 19:16 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Tak jsem se pustil do skriptíku a snažím se TEMPFULL vydělit do proměnné FINALTEMP, ale nedaří se:/
TEMPFULL=`snmpwalk -v2c -c $COMMUNITY $IP 1.3.6.1.4.1.33283.1.2.6.1.5.1 | cut -d ' ' -f 4`
DELENOSTO=100
FINALTEMP=$((TEMPFULL / DELENOSTO))
Poradíte mi prosím?
2.5.2017 19:35 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Tak jsem zjistil, že tam je nějaký problém s desetinnými čísly
2.5.2017 19:36 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Co ten skript vypise, repektive "echo $FINALTEMP"?
2.5.2017 19:53 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
13 (což je teplota 1390). Nakonec jsem upravil nějaký hotový skript. Výpočet už je OK (teplota je 13.93 C), ale výsledek:
./check_snmp_temp: řádek 113: [: 13.93: očekáván celočíselný výraz
Not recieving a sane temperature!
Skript:
#!/bin/bash

# Exit codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

#This will check the temperature and compare it to
#supplied warning and critical levels. Output will be parsable by nagios.
#
#Options:
#
#-w INTEGER
#   Exit with WARNING status if the temp is less than INTEGER
#
#-c INTEGER
#   Exit with CRITICAL status if the temp is less than INTEGER
#
#-i STRING
#   IP to check
#
#-C STRING
#   SNMP community to check

WARNINGFLAG=false
CRITICALFLAG=false
IPFLAG=false
COMMUNITYFLAG=false
ARGUEMENTFLAG=false

#This block will test the arguements as parsed
while getopts 'w:c:i:C:' opt; do
        case $opt in
                w) WARNING=$OPTARG
                if ! [ $WARNING -eq $WARNING ] 2>/dev/null; then
                        echo "Warning value is not an integer!" >&2
                        ARGUEMENTFLAG=true
                fi
                WARNINGFLAG=true
                ;;
                c) CRITICAL=$OPTARG
                if ! [ $CRITICAL -eq $CRITICAL ] 2>/dev/null; then
                        echo "Critical value is not an integer!" >&2
                        ARGUEMENTFLAG=true
                fi
                CRITICALFLAG=true
                ;;
                i) IP=$OPTARG
                #Tests if ip is in correct format
                #First check if basic format is correct
                if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
                        #Then test if IP is in sensible range
                        iterator=1
                        while [ $iterator -le 4 ]; do
                                number=`echo $IP | cut -d . -f $iterator`
                                if [ $number -ge 256 ]; then
                                        echo "The IP supplied is not in a valid format" >&2
                                        ARGUEMENTFLAG=true
                                fi
                                iterator=$(($iterator+1))
                        done
                else
                        echo "The IP supplied is not in a valid format" >&2
                        exit 1
                fi
                IPFLAG=true
                ;;
                C) COMMUNITY=$OPTARG
                COMMUNITYFLAG=true
                ;;
                \?) echo "Invalid option: -$OPTARG" >&2
                exit 1
                ;;
                :) echo "Option -$OPTARG requires an argument." >&2
                exit 1
                ;;
        esac
done

#Checks to see if any arguments are missing:
if ! $WARNINGFLAG; then
        echo "A Warning level is required!" >&2
        ARGUEMENTFLAG=true
fi
if ! $CRITICALFLAG; then
        echo "A Critical level is required!" >&2
        ARGUEMENTFLAG=true
fi
if ! $IPFLAG; then
        echo "An IP address is required!" >&2
        ARGUEMENTFLAG=true
fi
if ! $COMMUNITYFLAG; then
        echo "A community name is required!" >&2
        ARGUEMENTFLAG=true
fi
if $ARGUEMENTFLAG; then
        exit $STATE_UNKNOWN
fi

#Checks for sane Warning/Critical levels
if [ $WARNING -gt $CRITICAL ]; then
        echo "Warning level should not be higher than Critical level"
        exit $STATE_UNKNOWN
fi

#grabs the current temperature using snmpwalk from the ip and snmp community provided
FULLTEMP=`snmpwalk -v2c -c $COMMUNITY $IP 1.3.6.1.4.1.33283.1.2.6.1.5.1 | cut -d ' ' -f 4`
CURRENTTEMP=$(echo "scale=2; $FULLTEMP/100" | bc)

#Checks for sane temperature
if ! [ $CURRENTTEMP -eq $CURRENTTEMP ]; then
        echo "Not recieving a sane temperature!"
        exit $STATE_UNKNOWN
fi

#Checks the temperature against the warning and critical levels and gives a nagios compatible response
if [ $CURRENTTEMP -lt $WARNING ]; then
        echo "TEMP OK - Current Temperature is $CURRENTTEMP"
        exit $STATE_OK
elif [ $CURRENTTEMP -lt $CRITICAL ]; then
        echo "TEMP WARNING - Current Temperature is $CURRENTTEMP"
        exit $STATE_WARNING
else
        echo "TEMP CRITICAL - Current Temperature is $CURRENTTEMP"
        exit $STATE_CRITICAL
fi
2.5.2017 23:50 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Bash neocekava cislo s desetinou carkou, tzn. budes vsechna porovnani muset opravit:
if ! (( $(echo "$CURRENTTEMP == $CURRENTTEMP" | bc) )); then
..
if (( $(echo "$CURRENTTEMP < $WARNING" | bc) )); then
..
etc.
3.5.2017 08:12 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Diky moc za nakopnutí, funguje:)

PS: a ještě mám jeden dotaz. Zkouším ještě jeden hotový skript a řeším zápis proměnných. Předpokládám, že když je v helpu uvedeno -n, --sensor_names=STRING[,STRING[..]], tak můžu zapsat víc hodnot. Nějak ale nerozumím té syntaxi. Zkoušel jsem např. -n sensor1,sensor2, ale to nejde.
3.5.2017 08:32 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Pocitam, ze testujes tento kod v Perlu, kde hodnoty za parametrem -n jsou oddelene carkou a nactene do pole:
@ar_sensornames = split(/,/, $o_sensornames);
Co to napise?
3.5.2017 09:53 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Přesně tak.

Už jsem pochopil tu syntaxi:) Měl jsem tam jen jedno OID v parametru -d jen pro jeden sensor. Takhle je to už OK:
./check_snmp_temperature.pl -H 10.0.14.111 -C sdsxpublic -n sensor1,sensor2 -d .1.3.6.1.4.1.33283.1.2.6.1.5.1,.1.3.6.1.4.1.33283.1.2.6.1.5.2 -i 100C -o C -f -a sensor1 -w 85 -c 90
OK - sensor1 Temperature is 10.68C | sensor1=10.68;85;90
Ideálně bych chtěl ale docílit toho, že OID nebudu vyplňovat ručně, ale už ho přidělím sensorům přímo ve skriptu.
3.5.2017 18:08 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Uvnitr toho skriptu je pripravene pole %system_types, ktere si muzes upravit a nasledne pouzit parametr --type. Jak, je popsano v komentari.
4.5.2017 10:04 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Nj., jenže tam je to jako parametr -N a -D a ten já nikde v parametrech nepoužívám
4.5.2017 10:07 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
resp. netuším, jaké hodnoty tam zadat..
Řešení 1× (David Indra)
4.5.2017 13:15 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Melo by to jit takto:
sdmicro" => [ "", "", "C", ['Sensor1', 'Sensor2', 'Sensor3', 'Sensor4'], ['.1.3.6.1.4.1.33283.1.2.6.1.5.1','.1.3.6.1.4.1.33283.1.2.6.1.5.2','.1.3.6.1.4.1.33283.1.2.6.1.5.3','.1.3.6.1.4.1.33283.1.2.6.1.5.4'] ],
4.5.2017 13:46 KVM
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Perfektní: sdmicro" => [ "", "", "100C", ['Sensor1', 'Sensor2', 'Sensor3', 'Sensor4'], ['.1.3.6.1.4.1.33283.1.2.6.1.5.1','.1.3.6.1.4.1.33283.1.2.6.1.5.2','.1.3.6.1.4.1.33283.1.2.6.1.5.3','.1.3.6.1.4.1.33283.1.2.6.1.5.4'] ]. Koukám, že to má takto ten "alteon". Moc díky.
4.5.2017 13:55 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Nemas zac. Jeste bych poprosil o oznaceni reseni prispevku.
17.6.2017 00:14 David
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dobrý den, poradíte mi, prosím, jak z tohoto dostat celé desetinné číslo? ./check_snmp -C sdsxpublic -H 10.0.14.111 -o .1.3.6.1.4.1.33283.1.2.9.1.6.3 -u kWh -l spotreba -w 50 -c 90 SNMP OK - spotreba 22 kWh | spotreba=22, resp. kompletní performance data z ./check_snmp -C sdsxpublic -H 10.0.14.111 -o .1.3.6.1.4.1.33283.1.2.9.1.6.3 SNMP OK - "22.809 kWh" |, jako např. spotreba=22.809,50,90
20.6.2017 00:35 David
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
To vazne nikdo nevite?
20.6.2017 08:46 NN
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Dotaz neni srozumitelny. O co jde, grepnout z vystupu snmp_check cislo? Nebo ho zpracovat ve skriptu? Nebo ten check nefunguje podle predstav?
20.6.2017 15:16 David
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Potřebuji, aby výstup (perfdata) vypadal takto spotreba=22.809,50,90. Aby se mi generovaly grafy. Buďto mám jen text 22.809 kWh (chybí perfdata) nebo perfdata jako celé číslo bez desetinných míst. Děkuji za pomoc.
26.6.2017 12:42 David
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)
Pokusím se to zformulovat ještě jednou:)

Zadám
./check_snmp -C sdsxpublic -H 10.0.14.111 -o sdsS0actualEnergyFlow.3 -l spotreba
a výstup je
SNMP OK - spotreba "0.001 kW" |
. Za znaménkem roury | nic není. Tam by měly být perfdata pro generování grafů. Zadám tedy
./check_snmp -C sdsxpublic -H 10.0.14.111 -o sdsS0actualEnergyFlow.3 -u kW -l spotreba -w 100 -c 200
a výstup je
SNMP OK - spotreba 0 kW | spotreba=0
. Takže mám za rourou petrdata. Jenže ty jsou ořízlé jen na celé číslo bez desetiných míst. Jak tedy docílím, aby výstup bypadal takto:
SNMP OK - spotreba 0.001 kW | spotreba=0.001
nebo ideálně takto
SNMP OK - spotreba 0.001 kW | spotreba=0.001,100,200
Mooc díky za pomoc:)
27.6.2017 18:39 David
Rozbalit Rozbalit vše Re: SDS Micro - SNMP --> Nagios (Centreon)

Tenhle dotaz jsem přesunul do Linuxové poradny a tak prosím o případné zamčení toho vlákna. Moc díky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.