Portál AbcLinuxu, 6. května 2025 14:33

Dotaz: Nagios a nahrazení návratové hodnoty za text

13.10.2022 14:52 PD321 | skóre: 4
Nagios a nahrazení návratové hodnoty za text
Přečteno: 371×
Odpovědět | Admin
Kontroluju prostřednictvím Nagiosu stav zařízení přes SNMP. V některých případech dostávám chybový kód v podobě čísla. Protože si je nepamatuji chtěl bych je nahradit číslem:

check_command check_snmp! -C "heslo" -r 2 -P 2c -o 1.3.6.1.4.1.25506.2.6.1.1.1.1.19.68 | sed 's/41/Fan error/g' | sed 's/2/Normal/g'

Takhle mi to funguje a chyba 41 je nahrazena textem "Fan error" a 2 zase "Normal". Chtěl jsem, aby pokud návratová hodnota není 2 (Normal) aby se vyvolal poplach. Jenže při použití roury a SEDu to Nagios vyhodnotí zeleně jako "Status OK" a přitom v posledním sloupci je "Status Information - SNMP CRITICAL - *Fan error*". Když tu část se SEDem kompletně odstraním:

check_command check_snmp! -C "heslo" -r 2 -P 2c -o 1.3.6.1.4.1.25506.2.6.1.1.1.1.19.68

tak se situace vyhodnotí červeně jako "Status CRITICAL" a "Status Information - SNMP CRITICAL - *Fan error*" a pošle email. Jenže pak mám místo slovního hodnocení opět jenom číslo. Nenapdá vás jak tam zachovat slovní popis závady a zároveň správné vyhodnocení chyby? Díky

Ř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

13.10.2022 15:12 X
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tahle to asi nepujde. Nagios si hlida navratovy kod toho pluginu. Jako reseni se nabizi si proste vyrobit vlastni upraveny plugin, ktery bude vracet text a zaroven spravny navratovy kod.
13.10.2022 16:04 PD321 | skóre: 4
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Ale v případě čtení seriového čísla, kdy to vrací text a nikoliv číslo, mě to takhle funguje

check_command check_snmp! -C "heslo" -r CNx -P 2c -o SNMPv2-SMI::mib-2.47.1.1.1.1.11.2

Pokud S/N neobsahuje CNx, tak vyhlásí poplach:
Status CRITICAL
Status Information SNMP CRITICAL - *"CN28F610GH"*
13.10.2022 17:27 X
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
To je funkce prepinace '-r', jak to souvisi s tvym pozdavkem?
13.10.2022 23:34 PD321 | skóre: 4
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Asi jsem zaměnil pojmy text a návratová hodnota. Návratová hodnota je správná do doby, než se výstup skriptu pokusím upravit pomocí SEDu. Pravděpodobně přitom nějak znehodnotím návratovou hodnotu "2-critical" na OK. Tak že můj upravený dotaz zní: lze nějak upravit text ("42" na "Chyba chladiče") tak, abych přitom nezměnil návratovou hodnout?

Dík
Max avatar 14.10.2022 00:20 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Návratová hodnota určuje stavy. Nevím, zda to jde, ale pokud by jsi změnil návratovou hodnotu sedu, tak by to znamenalo, že příkaz "sed" neproběhl správně. I kdyby to šlo, není to dobrý nápad. Zabal to třeba do bash scriptu a budeš to mít čistě a bez problémů.
Zdar Max
Měl jsem sen ... :(
14.10.2022 19:34 PD321 | skóre: 4
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Možná hloupá otázka, ale kde se zjeví návratová hodnota? Když check_snmp spustím přímo v Bashi, tak dostanu

SNMP CRITICAL - *41* | iso.3.6.1.4.1.25506.2.6.1.1.1.1.19.92=41
14.10.2022 20:26 X
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Vystup na stdout neni navratova hodnota.

https://github.com/nagios-plugins/nagios-plugins/blob/e362e3f13d69719068fc36a21bd0f85b2cc7f2bf/plugins/check_snmp.c#L731

Pokud tomu nerozumis bude lepsi nechat to v tom stavu v jakem to mas..
14.10.2022 22:39 PD321 | skóre: 4
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Než se náležitě dovzdělám, obešel jsem problém parametrem -u a místo jednotek jsem tam nacpal nápovědu.
14.10.2022 12:59 čavo | skóre: 15
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Priznám, že netuším na čo reaguje nagios, či na text, alebo návratovú hodnotu.

Ak na hodnotu, tak si ju treba odložiť a následne po skončení nahradzovania poslať:
docasnysubor=`mktemp`
check_command check_snmp! -C "heslo" -r 2 -P 2c -o 1.3.6.1.4.1.25506.2.6.1.1.1.1.19.68 > $docasnysubor
navratovahodnota=$?
sed 's/41/Fan error/g;s/2/Normal/g' <$docasnysubor
rm $docasnysubor
exit $navratovahodnota
Ak na vystup, tak ju po nahradení tam nechajte, možno sa s tým vysporiada:
check_command check_snmp! -C "heslo" -r 2 -P 2c -o 1.3.6.1.4.1.25506.2.6.1.1.1.1.19.68 | sed 's/41/41 - Fan error/g;s/2/2 - Normal/g'
Ak sa nevysporiada, tak máte smolu.
Max avatar 13.10.2022 17:48 Max | skóre: 72 | blog: Max_Devaine
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak tak, jak říká pan X. Nejde o to, co to vypisuje, jde o to, jaký je návratový kód. Tady jsem kdysi psal vysvětlení: Nagios + Centreon + MySQL - skripty. Pokud chceš nějaký příklad, tak tady jsem si něco psal: github.com. Je to malý, krátký script na monitoring teplotního sensoru.
Zdar Max
Měl jsem sen ... :(
13.10.2022 19:01 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nedá sa ako použiť návratná hodnota programu (t. j. exit(VALUE) resp. return v main() v C programovacom jazyku)?

C program:
int main(int argc, char **argv)
{
	return argv[1][0]-'0';
}
A výsledok:
(./main 0 && echo "ok") || echo "wrong"
Návratna hodnota posledne vykonaného príkazu je uložená vo $?.
debian.plus@protonmail.com
13.10.2022 19:06 z_sk | skóre: 34 | blog: analyzy
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Pre testovanie dobrého výsledku:
(./main 0 && echo "ok") || echo "wrong"
Pre testovanie zlého výsledku:
(./main 1 && echo "ok") || echo "wrong"
debian.plus@protonmail.com
14.10.2022 13:54 MM
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nevyřešilo by se to celé, pokud bys SNMP krámu podstrčil MIBku, která by ti to přechroupala z čísla na text automagicky? Pak by nebyl potřeba sed atp. a asi by to padalo rovnou z toho check_snmp jako text i s návratovou hodnotou. K tomu MIBky jsou,...
Řešení 1× (PD321 (tazatel))
17.10.2022 23:31 PD321 | skóre: 4
Rozbalit Rozbalit vše Re: Nagios a nahrazení návratové hodnoty za text
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nakonec jsem to vyřešil napsáním vlastního pluginu v Pythonu. Bylo to 2 dny moření a zjišťování jak Nagios předává parametry, ale celkově snažší než se pokoušet zachytávat výstup z check_snmp.

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.