Uwaga, żeby sobie nic nie ponadpisywać, zrobić kopię i przejrzeć ten kod. Dawno to było, USE AT OWN RISK:)
Nie mam opcji testu na takich wersjach, przepisuję i adaptuję z backupa, gdzie miałem inny swój plugin na zbliżonych wersjach.
Generalnie na dzień dzisiejszy przepisałbym to uwzględniając wersję LK i zbyt niskie temperatury, oraz parę innych rzeczy 😉
Plugin ma wylądować w /usr/lib/nagios/plugins/:
wget "https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=5384&cf_id=24" -O /usr/lib/nagios/plugins/check_lc_temp
Uprawnienia do wykonywania:
chmod +x /usr/lib/nagios/plugins/check_lc_temp
W pierwszej kolejności sprawdzenie czy działa plugin(generalnie czy są zależności itp.). Jeśli temperatura będzie trzycyfrowa to mamy encountera z nowszą wersją LK(jako dirty hack można próbować thresholdy dać trzycyfrowe przełączniki -w oraz -c i stworzyć dwie osobne komendy dla nowych i starych LK).
STATE UNKNOWN na dzień dobry informuje o prawdopodobieństwie braku zależności.
Good:
┌─[root@nagios]─[~] └──╼ /usr/lib/nagios/plugins/check_lc_temp -H 192.168.1.1 STATE CRITICAL - 50
┌─[✗]─[root@nagios]─[~] └──╼ /usr/lib/nagios/plugins/check_lc_temp -H 192.168.1.2 STATE OK - 23
Definicja komendy sprawdzania temperatury z LK:
┌─[root@nagios]─[~] └──╼ cat /etc/nagios3/command_check_lc_temp.cfg # 'check_lc_temp' command definition define command{ command_name check_lc_temp command_line /usr/lib/nagios/plugins/check_lc_temp -H '$HOSTADDRESS$' }
Hosty do sprawdzania:
┌─[root@nagios]─[~] └──╼ cat /etc/nagios3/conf.d/service_check_lc_temp.cfg define service { host_name LK1, LK2, LK3, LK4, LK5 service_description check_lc_temp check_command check_lc_temp use service-template }
Templatka usługi(uwaga na nadpisanie, może być wbudowana):
┌─[root@nagios]─[~] └──╼ cat /etc/nagios3/conf.d/service_template.cfg define service { name service-template active_checks_enabled 1 max_check_attempts 3 check_period 24x7 notification_period 24x7 notifications_enabled 1 retain_status_information 1 retain_nonstatus_information 1 contact_groups admins register 0 }
Aktualizacja DeCha
Masz styczność z nowszą wersją LK prawdopodobnie… Aby operować na wartościach z miejscami po przecinku w całym kodzie trzeba zmienić kod pluginu(użyć bc na pobranej wartości itp., trzeba by testować, nie na dziś;) ). Dla samego sprawdzania można wykorzystać fakt, że:
ergo (jeśli nic nie skopałem w kodzie[będziem rzeźbić]):
Definicja komendy sprawdzania temperatury z LK:
┌─[root@nagios]─[~] └──╼ cat /etc/nagios3/command_check_lc_temp.cfg # 'check_lc_temp' command definition -starsze LK define command{ command_name check_lc_temp command_line /usr/lib/nagios/plugins/check_lc_temp -H '$HOSTADDRESS$' } # 'check_lcnewer_temp' command definition - nowsze LK(w domyśle te same thresholdy co w default'cie oryg. pluginu) define command{ command_name check_lcnewer_temp command_line /usr/lib/nagios/plugins/check_lc_temp -H '$HOSTADDRESS$' -w 280 -c 350 }
Hosty do sprawdzania:
┌─[root@nagios]─[~] └──╼ cat /etc/nagios3/conf.d/service_check_lc_temp.cfg #starsze LK define service { host_name starszyLK1, starszyLK2, starszyLK3, starszyLK4, starszyLK5 service_description check_lc_temp check_command check_lc_temp use service-template } #nowsze LK define service { host_name nowszyLK1, nowszyLK2, nowszyLK3, nowszyLK4, nowszyLK5 service_description check_lcnewer_temp check_command check_lcnewer_temp use service-template }
Aktualizacja DeCha #2
Zmiana(zmienia jedynie wyświetlanie dla potrzeb data retention i informacyjnych). Dla nowszych LK w definicji thresholdów nadal używaj formatu: 300=30.0 stopni etc.
W kodzie pluginu zmień(najlepiej zrób sobie osobny plik wykonywalny dla nowszej wersji LK):
#111
# Check if we met critical or warning threshold of $temperature and deal with it accordingly if [ $temperature -gt $critical ];then echo "STATE CRITICAL - $temperature" exit $STATE_CRITICAL elif [ $temperature -gt $warning ];then echo "STATE WARNING - $temperature" exit $STATE_WARNING else echo "STATE OK - $temperature" exit $STATE_OK fi
na (dirty hack :D):
#222
# Check if we met critical or warning threshold of $temperature and deal with it accordingly #Sam musisz pilnowac, ktorej wersji LK uzywasz i ktory plugin ja sprawdza tempdisplay=$(echo "scale=1;$temperature/10"|bc) if [ $temperature -gt $critical ];then echo "STATE CRITICAL - $tempdisplay" exit $STATE_CRITICAL elif [ $temperature -gt $warning ];then echo "STATE WARNING - $tempdisplay" exit $STATE_WARNING else echo "STATE OK - $tempdisplay" exit $STATE_OK fi
Wynik:
#111 ┌─[✗]─[root@nagiostest]─[~/dechalktemptest] └──╼ ./check_lcnewer_temp -H 192.168.1.1 -w 240 -c 300 STATE WARNING - 270 #222 ┌─[✗]─[root@nagiostest]─[~/dechalktemptest] └──╼ ./check_lcnewer_temp -H 192.168.1.1 -w 240 -c 300 STATE WARNING - 27.0
Co do definicji hostów… :
┌─[✗]─[root@nagiostest]─[~/dechalktemptest] └──╼ cat /etc/nagios3/conf.d/host_nowszyLK1.cfg define host { use host-template host_name nowszyLK1 alias nowszyLK1 address 192.168.1.1 contact_groups admins } ┌─[✗]─[root@nagiostest]─[~/dechalktemptest] └──╼ cat /etc/nagios3/conf.d/host_nowszyLK2.cfg define host { use host-template host_name nowszyLK2 alias nowszyLK2 address 192.168.1.2 contact_groups admins }
itd…
STATE CRITICAL – 257
jak uzyskać 25,7 bo nie bardzo zrozumiałem ??
PolubieniePolubienie
Aktualizacja we wpisie…
PolubieniePolubienie
Tam mam HW:2.0 SW:3.15
No właśnie w kodzie chodzi o zmianę, /10
bo wartości nadal są trzy cyfrowe – zmiana/zwiększenie Warning treshold i Critical treshold nie rozwiązuje problemu
PolubieniePolubienie
Aktualizacja…
PolubieniePolubienie
i gdzie definiujesz hosty LK1 ….
PolubieniePolubienie
Aktualizacja…
PolubieniePolubienie
Działa wyśmienicie – dziękuje bardzo
p.s.
jedyne co trzeba jeszcze ew. pozostawić wartości trzycyfrowe
# Main
critical=350
warning=280
root@server:/usr/lib/nagios/plugins# /usr/lib/nagios/plugins/check_lc_temp -H 192.168.1.19 -w 28 -c 35
STATE CRITICAL – 25.1
root@server:/usr/lib/nagios/plugins# /usr/lib/nagios/plugins/check_lc_temp -H 192.168.1.19 -w 280 -c 350
STATE OK – 25.1
Dorobię sobie jeszcze powiadomienia sms i bajka
Dziękuję i pozdrawiam
PolubieniePolubienie