Блог простого адміну Пишемо свій плагін для Nagios
Поради, рішення, конфіги, патчі, скрипти, утиліти для системного адміністратора Linux/FreeBSD
Пишемо свій плагін для Nagios
Розробка плагінів для Nagios – справа нехитра. Прочитавши офіційний мануал http://nagiosplug.sourceforge.net/developer-guidelines.html я переписав вчорашній скрипт для перевірки стану реплікації для використання з-під Nagios. Одразу попереджу, що не претендую на абсолютну правильність реалізації. Частину вимог з манули я навмисно проігнорував. А тепер суть змін:
- Висновок має бути в один рядок і не більше 80 символів
- Код повернення повинен відповідати таблиці http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN76
- Додано прапори для порогів WARNING, CRITICAL
- Додано підказку щодо використання
use strict; use DBI; use Getopt::Long; sub usage(); my $user = ""; my $password = ""; my $hostname = "localhost"; my $warning = 360; my $critical = 1800; my $opt_help; GetOptions ("H=s" => \$hostname, "u=s" => \$user, "p=s" => \$password, "w=i" => \$warning, "c=i" => \$critical, "help" => \$opt_help );
my $dsn="DBI:mysql:host=$hostname"; my ($sql_running, $io_running, $seconds_behind); my ($ res, $ text); my $dbh=DBI->connect($dsn, $user, $password); if (!$ dbh) print $!; exit 3; # unknown > my $sth=$dbh->prepare("SHOW SLAVE STATUS") ; if (! $ sth) print $!; $dbh->disconnect(); exit 3; > if (! $sth->execute()) print $!; $dbh->disconnect(); exit 3; > if (my $ref = $sth->fetchrow_hashref()) for (keys %) $io_running = $ref-> "n/a" if/Slave_IO_Running/; $sql_running = $ref-> "n/a" if /Slave_SQL_Running/; $seconds_behind = $ref-> "n/a" if /Seconds_Behind_Master/; > if ($io_running eq "Yes" && $sql_running eq "Yes") if ($seconds_behind finish; $dbh->disconnect(); print $text; exit $res;