Ad Widget

Collapse

Как отобразить значение переменной в име

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Анатолий
    Junior Member
    • Feb 2013
    • 5

    #1

    Как отобразить значение переменной в име

    Здравствуйте! Есть такая задача: в название триггера на состояние порта коммутатора (например Fa0/19 OperStatus is down) вписать некоторую переменную (имя этого порта, полученного системой из oid'a). Перепробовал разные варианты - значение переменной не пишется или отображаются вместо значения знаки вопросов. Как можно решить эту проблему?
  • Navoyenok
    Senior Member
    • Dec 2011
    • 101

    #2
    Здравствуйте, Анатолий.

    В настоящее время тоже решаю эту задачу. Пока не придумал простых вариантов. Остановился на следующем: Каждый интерфейс мониториться шаблоном. Имя шаблона - его OID. В этом шаблоне есть элемент, который хранит имя (называется -NAME). При возникновении события в агент заббикса на сервере заббикса выполняет скрипт, которому передается имя хоста его ip-адрес и Имя шаблона. Этот скрипт зная OID запросом выбирает из БД Zabbix имя элемента OID-NAME, сам формирует и отправляет письмо об ошибке. Теоретически должно сработать. Осталось только проверить.
    Может кто подскажет более легкий путь.

    С уважением, Navoyenok

    Comment

    • Анатолий
      Junior Member
      • Feb 2013
      • 5

      #3
      Спасибо, Navoyenok!

      К сожалению, нам такой вариант не подойдет...

      Comment

      • Navoyenok
        Senior Member
        • Dec 2011
        • 101

        #4
        Анатолий.

        Схема, описанная выше, оказалась работоспособной. Реализовали у себя - работает!

        С уважением, Navoyenok

        Comment

        • Анатолий
          Junior Member
          • Feb 2013
          • 5

          #5
          Navoyenok

          А можно получить ваш скрипт? Мой e-mail: [email protected]

          Comment

          • Navoyenok
            Senior Member
            • Dec 2011
            • 101

            #6
            Анатолий.

            Я бы с удовольствием, но технической возможности, к сожалению, нет

            С уважением, Navoyenok

            Comment

            • Navoyenok
              Senior Member
              • Dec 2011
              • 101

              #7
              Анатолий, доброго времени суток.

              Скрипт называется /home/zabbix/bin/ifcheck.pl

              --- начало скрипта ---
              #!/usr/bin/perl
              use strict;
              use DBI;

              my($HOSTNAME) = $ARGV[0];
              my($TRIGGER) = $ARGV[1];
              my($EMAIL) = $ARGV[2];

              my($res,$work);
              my($ResultatMail);

              $work = $TRIGGER;
              $work =~ m/(.+)-(.+)/;
              my($left) = $1;
              my($right) = $2;

              if( $left eq "" ) {
              exit 0;
              }

              $work = $left."-NAME";

              sub FindElementValue {
              my $HN = $_[0];
              my $IT = $_[1];

              my($SQLString);

              my($Result);
              my($dbh);

              $SQLString = "SELECT lastvalue FROM hosts,items WHERE (hosts.hostid=items.hostid) AND (host=\"".$HN."\") AND ";
              $SQLString .= "(description=\"".$IT."\");";

              $dbh = DBI->connect('DBI:mysql:zabbixdb', 'zabbixreadonlyuser', 'password'
              ) || die "Could not connect to database: $DBI::errstr";
              my($sth) = $dbh->prepare($SQLString);
              $sth->execute();
              ($Result) = $sth->fetchrow_array();
              $sth->finish();
              $dbh->disconnect();

              return($Result);
              }

              my($result) = FindElementValue($HOSTNAME,$work);

              $ResultatMail = "";
              if( $result eq "") {
              $result = "Incorrect Name Detected (I'm Looking for STRING. Check OID please)";
              }
              `/usr/bin/printf "$ResultatMail\n" | /usr/bin/mail -a "From: zabbix\@zabbix.com" -s "$HOSTNAME: $result: Down" $EMAIL`;

              --- Конец скрипта - --

              Скрипт запускается используя Remote Command (в настройке действий):
              ZabbixServer:/home/zabbix/bin/ifcheck.pl "{HOSTNAME}" "{ITEM.NAME}" [email protected]

              При этом "{ITEM.NAME}" должен быть вида: xxxxxxx-ЧтоТо
              Имя интерфейса должно быть вида: xxxxxx-NAME
              (Ну это понятно и из скрипта)

              Пишите, постараюсь помочь.

              С уважением, Navoyenok

              Comment

              • Анатолий
                Junior Member
                • Feb 2013
                • 5

                #8
                Navoenok

                Спасибо, в понедельник буду разбираться

                Comment

                Working...