Блог на обикновен администратор, който пише нашия плъгин за Nagios

Съвети, решения, конфигурации, пачове, скриптове, помощни програми за системен администратор на Linux/FreeBSD

Пишем нашия плъгин за Nagios

Разработването на добавки за Nagios е лесен въпрос. След като прочетох официалното ръководство http://nagiosplug.sourceforge.net/developer-guidelines.html, пренаписах вчерашния скрипт, за да проверя състоянието на репликация за използване под Nagios. Веднага ви предупреждавам, че не претендирам за абсолютна коректност в изпълнението. Умишлено пренебрегнах някои от изискванията на ръководството. А сега същността на промените:

  1. Изходът трябва да бъде на един ред и не повече от 80 знака
  2. Кодът за връщане трябва да съответства на таблицата http://nagiosplug.sourceforge.net/developer-guidelines.html#AEN76
  3. Добавени флагове за прагове ПРЕДУПРЕЖДЕНИЕ, КРИТИЧНО
  4. Добавен съвет за употреба
#!/usr/local/bin/perl -w

използвайте строг; използване на DBI; използвайте Getopt::Long; подизползване(); my $user = ""; my $password = ""; my $hostname = "localhost"; my $warning = 360; my $critical = 1800; моята $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); ако (! $dbh) печат $!; изход 3; # неизвестен > my $sth=$dbh->prepare("SHOW SLAVE STATUS") ; ако ( ! $sth) отпечатайте $!; $dbh->disconnect(); изход 3; > if (!$sth->execute()) print $!; $dbh->disconnect(); изход 3; > if (моят $ref = $sth->fetchrow_hashref()) за (ключове %) $io_running = $ref-> "n/a" ако/Slave_IO_Running/; $sql_running = $ref-> "n/a" ако /Slave_SQL_Running/; $seconds_behind = $ref-> "n/a" ако /Seconds_Behind_Master/; > if ($io_running eq "Yes" && $sql_running eq "Yes") if ($seconds_behind finish; $dbh->disconnect(); print $text; exit $res;