Ad Widget

Collapse

Zabbix-Мониторинг ПК в AD+уведомление на почту

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • suxxoi
    Junior Member
    • Mar 2016
    • 14

    #1

    Zabbix-Мониторинг ПК в AD+уведомление на почту

    Возникла задача в Zabbix
    Версия системы 2.2
    Ежедневно на почту должны приходить отчеты о состоянии системы.
    В отчете в виде графиков должна быть информация о всех машинах в AD.
    Графики которые должны быть :
    1. Использование оперативной памяти(часовой график) за предыдущий день
    2. Свободное место на диске(если дисков несколько, то по каждому)
    3. Нагрузка на CPU
    4. Использование оперативной памяти процессом W3W

    Я только недавно начал осваивать Zabbix, куда копать, такую информацию можно вытащить по SNMP или обязательно ставить агента на каждую клиентскую машину?
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Получать данные несложно через агентов, которые ставятся при помощи GPO.

    Сложнее вам будет с отчетом. Тут или Zabbix API или прямо в базе селектить.

    Comment

    • suxxoi
      Junior Member
      • Mar 2016
      • 14

      #3
      Originally posted by sadman
      Получать данные несложно через агентов, которые ставятся при помощи GPO.

      Сложнее вам будет с отчетом. Тут или Zabbix API или прямо в базе селектить.

      Не подскажите,как через GPO поставить агентов, если версии Windows систем разные+плюс нужно конфигурационный файл запустить и отредактировать, в нем указывается имя машины которая будет мониториться, ни разу этого не делал и поэтому не совсем понимаю, как это будет выглядеть

      Как я понимаю, реализация будет проходить в два этапа
      1. Настройка Windows GPO или же SNMP
      2.1 В Zabbix обнаружение - Действие (после чего перемещается в группу узлов с шаблоном)
      2.2 Написание шаблона по нужды, данные или по SNMP или Заббикс агент(на второй вариант конечно мануала больше)
      2.3 написание шаблона (не представляю даже как это сделать)
      2.4 Настройка отправки по email

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Вот ссылка с гугола: https://habrahabr.ru/post/168185/
        В комментариях есть ссылка на MSI-файл.
        В деталях пояснить не могу, так как мониторинг наших рабочих станций не окупается ))

        Имя машины специально указывать не нужно, просто обратите внимание на строчку "HostnameItem=system.hostname" в конфиге агента.

        Originally posted by suxxoi
        Как я понимаю, реализация будет проходить в два этапа
        1. Настройка Windows GPO или же SNMP
        2.1 В Zabbix обнаружение - Действие (после чего перемещается в группу узлов с шаблоном)
        2.2 Написание шаблона по нужды, данные или по SNMP или Заббикс агент(на второй вариант конечно мануала больше)
        2.3 написание шаблона (не представляю даже как это сделать)
        2.4 Настройка отправки по email
        1. Установка;
        2. Как один из вариантов обнаружения: https://www.zabbix.com/documentation...o_registration . Стоковых шаблонов Template Windows OS, Template Zabbix Agent на первое время хватит вполне, ничего писать не нужно;
        3. Формирование отчета для имейла - самая сложная задача, универсального решения не видел, каждый выпиливает его сам, исходя из имеющихся талантов.

        Comment

        • Gabalino
          Senior Member
          • Mar 2013
          • 103

          #5
          1. MSI пакеты доступны www.suiviperf.com/zabbix/index.php
          2. Сделайте файл трансформации и распространяйте через GPO

          Comment

          • suxxoi
            Junior Member
            • Mar 2016
            • 14

            #6
            Originally posted by Gabalino
            1. MSI пакеты доступны www.suiviperf.com/zabbix/index.php
            2. Сделайте файл трансформации и распространяйте через GPO
            Спасибо, очень полезная ссылка, скачал оба пакета, через ORCA отредактировал нужные поля и запустил через GPO, несколько ПК успешно проинсталировались

            Для чего нужны пакеты в той же ссылке?
            zabbix_agent-3.0.1_msi-source.zip
            DOWNLOAD EXE Script installer
            zabbix_agent-3.0.1_installer.zip
            zabbix_agent-3.0.1_nsis-source.zip

            Comment

            • yukra
              Senior Member
              • Apr 2013
              • 1359

              #7
              Originally posted by sadman
              Сложнее вам будет с отчетом. Тут или zabbix api или прямо в базе селектить.
              У меня где то в истории по сообщениям был тред, где я с товарищем разбирал какой то скрипт на перле, который комплексные экраны на почту высылал. Сделать динамические элементы на экране и фигачить цикл по хостам должно быть не трудно (для человека, который умеет в перл)

              Comment

              • Gabalino
                Senior Member
                • Mar 2013
                • 103

                #8
                Originally posted by suxxoi
                Спасибо, очень полезная ссылка, скачал оба пакета, через ORCA отредактировал нужные поля и запустил через GPO, несколько ПК успешно проинсталировались

                Для чего нужны пакеты в той же ссылке?
                zabbix_agent-3.0.1_msi-source.zip
                DOWNLOAD EXE Script installer
                zabbix_agent-3.0.1_installer.zip
                zabbix_agent-3.0.1_nsis-source.zip
                Эти файлы можно использовать для сборки MSI пакетов со своими параметрами. Но лучше создать в Orca файл трансформации, чтобы каждый раз не собирать пакет.

                Comment

                • suxxoi
                  Junior Member
                  • Mar 2016
                  • 14

                  #9
                  Originally posted by yukra
                  У меня где то в истории по сообщениям был тред, где я с товарищем разбирал какой то скрипт на перле, который комплексные экраны на почту высылал. Сделать динамические элементы на экране и фигачить цикл по хостам должно быть не трудно (для человека, который умеет в перл)
                  Буду очень признателен, если найдете. Я в perl не силен, на php только писал.

                  Comment

                  • yukra
                    Senior Member
                    • Apr 2013
                    • 1359

                    #10
                    Originally posted by suxxoi
                    Буду очень признателен, если найдете. Я в perl не силен, на php только писал.

                    Comment

                    • suxxoi
                      Junior Member
                      • Mar 2016
                      • 14

                      #11
                      Спасибо, сейчас отредактировал скрипт

                      Подскажите по действиям
                      1. файлу меняем расширение на .pl
                      2. закидываю в каталог /usr/lib/zabbix/externalscripts
                      3. Запускаем в crontab

                      Плюс еще в самом файле строку zz.yukra.ru/chart2.php , посмотрел в Zabbix
                      у меня строчка другая mydc.ru/zabbix/charts.php, ее оставляю?

                      Второй вопрос по курла исправить параметр "-d" на какой?

                      И третий, Script name в Media types, это все таки названия комплексных экранов или графиков рядом? Судя по ссылке в скрипте zz.yukra.ru/chart2.php, это просто графики

                      Comment

                      • yukra
                        Senior Member
                        • Apr 2013
                        • 1359

                        #12
                        Originally posted by suxxoi
                        Спасибо, сейчас отредактировал скрипт

                        Подскажите по действиям
                        1. файлу меняем расширение на .pl
                        2. закидываю в каталог /usr/lib/zabbix/externalscripts
                        3. Запускаем в crontab
                        Да, только по п.2 не уверен, зависит от конфига сервера.
                        Originally posted by suxxoi
                        Плюс еще в самом файле строку zz.yukra.ru/chart2.php , посмотрел в Zabbix
                        у меня строчка другая mydc.ru/zabbix/charts.php, ее оставляю?
                        zz.yukra.ru - мой заббикс, вы конечно меняете на свой
                        Originally posted by suxxoi
                        Второй вопрос по курла исправить параметр "-d" на какой?
                        У меня: "name=$login&password=$pass&enter&autologin=1&ente r=Sign in"
                        В оригинале: "form=1&form_refresh=1&name=$login&password=$pass& enter=Enter"
                        Originally posted by suxxoi
                        И третий, Script name в Media types, это все таки названия комплексных экранов или графиков рядом? Судя по ссылке в скрипте zz.yukra.ru/chart2.php, это просто графики
                        Code:
                        my $sth = $dbh->prepare(qq{select screenid, resourceid from  screens_items order by screenid});
                        $sth->execute();
                        my %screens;
                        
                        #---get all graffics, using curl
                        while (my ($id, $ids) = $sth->fetchrow_array())
                        {
                            if(length($ids) > 2){
                                #print "$id => $ids\n";
                                my $p = "$path/$id.$ids.png";
                                my $strcomm  = `curl  -c $cook -b $cook -d "form=1&form_refresh=1&name=$login&password=$pass&enter=Enter" zabbix.caravan.ru/index.php`;
                                $strcomm  = `curl  -c $cook -b $cook -F  "graphid=$ids" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" zabbix.caravan.ru/chart2.php > $p`;
                            }
                        }
                        sql запросом получаем список графиков на скрине, потом выдергиваем по 1 графику курлом. То есть отвечает на вопрос "Script name в Media types, это все таки названия комплексных экранов или графиков" - комплексных экранов.

                        И обратите внимание что движок форума тут в тегах зачем то лишних пробелов навтыкал

                        Comment

                        • suxxoi
                          Junior Member
                          • Mar 2016
                          • 14

                          #13
                          Originally posted by yukra
                          Да, только по п.2 не уверен, зависит от конфига сервера. zz.yukra.ru - мой заббикс, вы конечно меняете на свой

                          У меня: "name=$login&password=$pass&enter&autologin=1&ente r=Sign in"
                          В оригинале: "form=1&form_refresh=1&name=$login&password=$pass& enter=Enter"

                          Code:
                          my $sth = $dbh->prepare(qq{select screenid, resourceid from  screens_items order by screenid});
                          $sth->execute();
                          my %screens;
                          
                          #---get all graffics, using curl
                          while (my ($id, $ids) = $sth->fetchrow_array())
                          {
                              if(length($ids) > 2){
                                  #print "$id => $ids\n";
                                  my $p = "$path/$id.$ids.png";
                                  my $strcomm  = `curl  -c $cook -b $cook -d "form=1&form_refresh=1&name=$login&password=$pass&enter=Enter" zabbix.caravan.ru/index.php`;
                                  $strcomm  = `curl  -c $cook -b $cook -F  "graphid=$ids" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" zabbix.caravan.ru/chart2.php > $p`;
                              }
                          }
                          sql запросом получаем список графиков на скрине, потом выдергиваем по 1 графику курлом. То есть отвечает на вопрос "Script name в Media types, это все таки названия комплексных экранов или графиков" - комплексных экранов.

                          И обратите внимание что движок форума тут в тегах зачем то лишних пробелов навтыкал

                          Не пойму что не правильно делаю, ошибка и все, вот файл скрипт

                          /usr/lib/zabbix/externalscripts/graphReport.pl

                          #!/usr/bin/perl
                          use File::Path;
                          use MIME::Lite;
                          use DBI;

                          my $path = './graph';
                          if(-e $path) { rmtree($path); }
                          mkdir($path);

                          my $stime = `date +%Y%m%d`; chop($stime); $stime .= '1000';
                          if( length($stime) != 12 ) { print "Error get date"; exit; }

                          my $period = 86400; #24 hour
                          my $width=600;
                          my $height=100;

                          my $login = 'admin'; #---in zabbix
                          my $pass = 'zabbix'; #---in zabbix

                          my $cook = "./coockfile";
                          my $dsn = 'DBI:mysql:zabbix:localhost';
                          my $db_user_name = 'zabbix';
                          my $db_password = 'passbdzab';

                          my $dbh = DBI->connect($dsn, $db_user_name, $db_password);
                          my $sth = $dbh->prepare(qq{select screenid, resourceid from screens_items order by screenid});
                          $sth->execute();
                          my %screens;

                          #---get all graffics, using curl
                          while (my ($id, $ids) = $sth->fetchrow_array())
                          {
                          if(length($ids) > 2){
                          print "$id => $ids\n";
                          my $p = "$path/$id.$ids.png";
                          my $strcomm = `curl -c $cook -b $cook -d "username=$login&password=$pass&enter=Sing in" 172.28.249.150/zabbix/index.php`;
                          $strcomm = `curl -c $cook -b $cook -F "graphid=$ids" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" 172.28.249.150/zabbix/chart.php > $p`;
                          }
                          }

                          #---get user-mail and sinc by screen
                          my ($sendto, $exec_path);
                          $sth = $dbh->prepare(qq{select sendto, exec_path from media, media_type where media.mediatypeid=media_type.mediatypeid});
                          $sth->execute();
                          my %user_screen;
                          while (my ($sendto, $exec_path) = $sth->fetchrow_array())
                          {
                          if(length($exec_path) > 0){
                          if(!defined($user_screen{$sendto})) { $user_screen{$sendto} = $exec_path; }
                          else { $user_screen{$sendto} .= ":$exec_path"; }
                          }
                          }
                          $sth->finish();

                          #---get name report
                          my ($id, $report);
                          my $sth = $dbh->prepare(qq{select screenid, name from screens;});
                          $sth->execute();
                          my %name_report;
                          while (my ($id, $report) = $sth->fetchrow_array()){
                          $name_report{$report} = $id;
                          }
                          $sth->finish();

                          $dbh->disconnect();

                          #---send mail for all users
                          while(($user,$screens) = each %user_screen){
                          my $msg = MIME::Lite->new(
                          From => '[email protected]',
                          To => $user,
                          Subject => 'Zabbix Report',
                          Type => 'multipart/related' );
                          my $str="<body>\n";

                          my @massend = split(/:/,$screens);
                          my @files = glob($path.'/*');

                          #---get all html
                          foreach my $mid (@massend)
                          {
                          if(defined($name_report{$mid})) {
                          $str .= "<br>\n<H1 ALIGN=\"center\">$mid</H1>\n";
                          }
                          else { next; }

                          my $i=0;
                          foreach my $file (@files){
                          if( $file =~ /(\/$name_report{$mid}\.)/ )
                          {
                          $str .="<br>\n<div align=\"center\"><img src=\"cid:$name_report{$mid}.$i.png\"></div>\n";
                          $i++;
                          }

                          }
                          }
                          $str .= "</body>\n";
                          #print $str."\n";

                          #---attach html
                          $msg->attach( Type => 'text/html; charset= utf-8',#windows-1251',
                          Data => $str );

                          #---attach files
                          foreach my $mid (@massend)
                          {
                          if(defined($name_report{$mid})) { }
                          else { next; }

                          my $i=0;
                          foreach my $file (@files){
                          if( $file =~ /(\/$name_report{$mid}\.)/ )
                          {
                          $msg->attach( Type => 'image/png',
                          Path => $file,
                          Id => "$name_report{$mid}.$i.png");
                          #print "$name_report{$mid}.$i.png => $file\n";
                          $i++;

                          }
                          }
                          }

                          $msg->send();
                          }

                          exit ;


                          Папка создается и файлы *.png в нем,но с ошибкой на фото

                          Вот данные файла

                          cat coockfile
                          # Netscape HTTP Cookie File
                          # http://curl.haxx.se/docs/http-cookies.html
                          # This file was generated by libcurl! Edit at your own risk.

                          172.28.249.150 FALSE /zabbix/ FALSE 0 zbx_sessionid ae38bdbe09d9b463f5436513ad785ac4
                          172.28.249.150 FALSE /zabbix/ FALSE 0 PHPSESSID bavrmstl27buvr37lv43ooo5t2
                          Attached Files

                          Comment

                          • yukra
                            Senior Member
                            • Apr 2013
                            • 1359

                            #14
                            Как минимум у вас дергаете не тот php-файл

                            Comment

                            • suxxoi
                              Junior Member
                              • Mar 2016
                              • 14

                              #15
                              Originally posted by yukra
                              Как минимум у вас дергаете не тот php-файл

                              http://static1.keep4u.ru/2016/03/24/zr.png
                              Исправил, теперь файл не отображается пишет, что большой размер, поместил вывод файла


                              while (my ($id, $ids) = $sth->fetchrow_array())
                              {
                              if(length($ids) > 2){
                              print "$id => $ids\n";
                              my $p = "$path/$id.$ids.png";
                              my $strcomm = `curl -c $cook -b $cook -d "name=$login&password=$pass&enter=enter" 172.28.249.150/zabbix/index.php `;
                              $strcomm = `curl -c $cook -b $cook -F "graphid=$ids" -F "period=$period" -F "stime=$stime" -F "width=$width" -F "height=$height" 172.28.249.150/zabbix/charts.php > $p`;
                              }
                              }
                              Last edited by suxxoi; 25-03-2016, 09:04.

                              Comment

                              Working...