Ad Widget

Collapse

Zabbix API

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • kiruka4
    Junior Member
    • Nov 2014
    • 12

    #1

    Zabbix API

    Всем добрый день. Хочу попробовать использовать все прелести API. Но никак не пойму что да как. Можете описать последовательность действий , чтоб выполнить хоть самый простой запрос? В документации есть пример:
    {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
    "user": "Admin",
    "password": "zabbix"
    },
    "id": 1
    }

    Куда нужно это вписать? Нужно ли качать какие-то дополнительные программы/библтотеки. Расскажите,пожалуйста, как сделать так чтоб увидеть хоть какой-нибудь результат.
    Догадываюсь что спрашиваю азы, но вот именно азов и не знаю.
  • sadman
    Senior Member
    • Dec 2010
    • 1611

    #2
    Используете то, чем владеете, с соответствующими библиотечками

    Для Perl можете использовать пример:
    Code:
    #!/usr/bin/perl -w
    use strict;
    use warnings;
    
    use Zabbix::API;
    use Data::Dumper;
    
    # Who is can operate with API
    my $zbxUser="superuser";
    # Pass of who is can operate with API
    my $zbxPass="superpass";
    # Group on the Zabbix server, which contain interested data
    my $zbxGroup="Zabbix administrators";
    
    # Implemented verbosities so far are 0, 1 and 2, where:
    # 0 - does not emit any messages,
    # 1 - prints out the LWP::UserAgent progress messages and the responses sent by the Zabbix server,
    # 2 - prints out the LWP::UserAgent progress messages and dumps to stdout (via Data::Dumper) the queries sent to the server and the responses received.
    my $verbosity=0;
    
    my $zabbix = Zabbix::API->new(server => 'http://localhost/zabbix/api_jsonrpc.php', verbosity => $verbosity);
    
    print "[*] Log to Zabbix\n";
    eval { $zabbix->login(user =>  $zbxUser, password =>  $zbxPass) };
    if ($@) { die 'could not authenticate' };
    
    print "[*] Fetch group info\n";
    my $group = $zabbix->fetch('UserGroup', params => { filter => { name => $zbxGroup } }) ->[0];
    #print Dumper $group;
    print Dumper $group->users;
    
    print "[*] Done\n";

    Comment

    • kiruka4
      Junior Member
      • Nov 2014
      • 12

      #3
      Originally posted by sadman
      Используете то, чем владеете, с соответствующими библиотечками
      А можете чуть подробней. Скачать библиотеку. Например,zabipi. кладу ее в любую папку. А куда писать ваш код? Создать файл с расширением .pl? И чтоб увидеть ответ - просто запустить данный файл на выполнение?

      Я тут попробовал создать .sh-файл:
      Code:
      #!/bin/bash
      curl -i -k -X POST -H 'Content-Type: application/json-rpc' -d '
      {
      	"jsonrpc": "2.0",
      	"method": "hostgroup.get",
      	"params": {
      		"output": "extend",
      		"sortfield": "name"
      	},
      	"id": 1,
      	"auth":"7d834ccc5988b4f531087290cadf97c5"
      }' https://zabbix.it.loc/n5/api_jsonrpc.php
      Запускаю его через терминал и вывод получаю тоже в терминал. Причем вывод очень неудобно читать(новые значение не переносятся на новую строку).

      Хочу понять, есть ли какая-то разница с тем что Вы написали?

      Comment

      • yukra
        Senior Member
        • Apr 2013
        • 1359

        #4
        А вы чего хотите то? То что АПИ потрогать - понятно, а вот в целом, для чего оно вам?

        Comment

        • kiruka4
          Junior Member
          • Nov 2014
          • 12

          #5
          Originally posted by yukra
          А вы чего хотите то? То что АПИ потрогать - понятно, а вот в целом, для чего оно вам?
          Вообще пытаюсь сделать какую-нибудь альтернативу зависамости для триггеров из низкоуровнего обнаружения.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Не знаю, насколько при такой задумке к месту баш...
            Но, вот попробуйте zabbix-bash, коль хотите.

            Comment

            • kiruka4
              Junior Member
              • Nov 2014
              • 12

              #7
              Нет. Баш абсолютно не цель. Просто для меня работа с АПИ в новинку. Баш был ближе всего , поэтому использовал его чтоб проверить работоспособность в принципе.

              В принципе, у меня уже часть вопросов отсеялась. Я даже сделал зависимость между двумя автодискаверными триггерами. Теперь цель все это автоматизировать. Я решил использовать php

              Подскажите, какой мой следующий шаг после того как я выкачаю библиотеки? Без разницы в какой директории они будут лежать? Какие-то настройки не нужны? Спасибо.

              Comment

              • sadman
                Senior Member
                • Dec 2010
                • 1611

                #8
                Для php даже примеров полно: http://zabbixapi.confirm.ch/#examples.

                Очевидно, что в данном конкретном случае нужно обеспечить вашему скрипту доступ к 'ZabbixApiAbstract.class.php' и 'ZabbixApi.class.php'.

                Comment

                • kiruka4
                  Junior Member
                  • Nov 2014
                  • 12

                  #9
                  Ну да. Логично))) Спасибо большое. Буду пробовать.

                  Comment

                  Working...