Ad Widget

Collapse

Ссылка на график в триггере

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Turedeo
    Junior Member
    • Apr 2009
    • 13

    #1

    Ссылка на график в триггере

    Добрый день,
    Есть необходимость вставлять в тело письма ссылку на график параметра (например температуры). Для определения триггера я использую шаблоны. Как в шаблоне триггера указать ссылку на параметр который будет по нему оцениваться. Я так понимаю ссылка должна быть динамической.
  • noname
    Senior Member
    • Jan 2008
    • 120

    #2
    Может имеет смысл ручками посмотреть ссылку на график и добавить ее в комментарий триггера и использовать {trigger.comment}? Сам не пользовался, но выглядит логично. Из чтения документации не нашел ничего, чтобы тебе помогало лучше.

    Comment

    • Turedeo
      Junior Member
      • Apr 2009
      • 13

      #3
      {comment} не спасет, т.к. все равно на каждом триггере хоста придется вручную забивать. Интересно имено задания ссылки в шаблоне.

      Comment

      • asbel
        Junior Member
        • Nov 2008
        • 15

        #4
        Мы для этого написали свой скрипт, добавили его в Media types и используем его в Actions. Он рассылает письма в том формате и с теми данными, которые нам интересны

        Comment

        • novoselov.ai
          Senior Member
          • Jun 2009
          • 107

          #5
          Originally posted by asbel
          Мы для этого написали свой скрипт, добавили его в media types и используем его в actions. Он рассылает письма в том формате и с теми данными, которые нам интересны
          Можете поделиться?

          Comment

          • asbel
            Junior Member
            • Nov 2008
            • 15

            #6
            нет смысла, он ни к кому, кроме нас точно не подойдет)
            я просто подсказал напровление, где копать

            Comment

            • noname
              Senior Member
              • Jan 2008
              • 120

              #7
              Вот такой набросок я сделал:
              Code:
              #!/usr/bin/perl -w
              use strict;
              use DBI;
              
              my %db = (
                      user    => 'your_user',
                      pass    => 'your_pass',
                      host    => 'your_host',
                      name    => 'your_db_name',
                      port    => 'your_db_port'
              );
              
              eval{
                      # for postgres
                      my $dbh = DBI->connect("dbi:Pg:dbname=$db{ name };host=$db{ host };port=$db{ port }", $db{ user }, $db{ pass }, { RaiseError => 1 }) or
                              die "Couldn't connect to server: $DBI::errstr\n";
              
                      # for mysql
                      #my $dbh = DBI->connect("dbi:mysql:dbname=$db{ name }:host=$db{ host }:port=$db{ port }", $db{ user }, $db{ pass }, { RaiseError => 1 }) or
                      #       die "Couldn't connect to server: $DBI::errstr\n";
                      
                      my $sql = "SELECT
                                      distinct t1.triggerid, 
                                      h1.host,
                                      t1.description,
                                      g1.name,
                                      i1.itemid 
                              FROM 
                                      triggers as t1,
                                      functions as f1,
                                      items as i1,
                                      hosts as h1,
                                      hosts_groups as hg1,
                                      groups as g1 
                              WHERE 
                                      t1.value=1 and 
                                      f1.triggerid=t1.triggerid and 
                                      i1.itemid=f1.itemid and 
                                      h1.hostid=i1.hostid and 
                                      hg1.hostid=h1.hostid and 
                                      g1.groupid=hg1.groupid and 
                                      t1.status=0  and 
                                      i1.status=0 and
                                      h1.status=0;";
              
                      my $ref = $dbh->selectall_arrayref( $sql) or die "Couldn't execute sql: $sql. Reason: $DBI::errstr";
                      my @rows = @$ref;
              
                      open(FILE, '>', '/tmp/script.test');
                      foreach my $row( @rows){
                              my ($triggerid, $host, $description, $group_name, $itemid) = @$row;
                              print FILE "$host: $description! ref = \"http:\/\/your_zabbix_server\/history.php\?action=showgraph&itemid=$itemid\"\n";
                      }
                      close FILE;
              
                      $dbh->disconnect();
              };
              Этот скрипт я прописал в actions как действие на срабатывание триггера. В данном случае он записывает в файлик выражения вида:
              www.ru: MySQL is not available (120 sec)! ref = "http://my_server/history.php?action=showgraph&itemid=35486"
              www.ru: MySQL is not available (240 sec)! ref = "http://my_server/history.php?action=showgraph&itemid=35486"
              www.ru: WebServer is not available (120 sec)! ref = "http://my_server/history.php?action=showgraph&itemid=35487"
              www.ru: WebServer is not available (240 sec)! ref = "http://my_server/history.php?action=showgraph&itemid=35487"

              Тут можно:
              - отправлять письма на мыло
              - с помощью xmpp отправлять на jabber
              - с помощью OSCAR отправлять в асю.
              - можно напрямую изменять базу данных.

              В общем вариантов к этому шаблону море.

              Я написал пример для постгреса. Для мускуля, к примеру, надо раскомментировать соответствующую строчку и закоментировать DBI->connect постгресовский.

              И еще момент: следует убедиться, что необходимые модули для соединения с БД присутствуют. Иначе можно получить сообщения от zabbix_agentd в логе примерно следующего содержания:
              Can't locate DBI.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/vendor_perl/5.8.8/i686-linux /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl/5.8.8/i686-linux /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/5.8.8/i686-linux /usr/lib/perl5/5.8.8 /usr/local/lib/site_perl .) at /home/zabbix/test.pl line 3.
              BEGIN failed--compilation aborted at /home/zabbix/test.pl line 3.
              Last edited by noname; 03-07-2009, 11:33.

              Comment

              Working...