La verdad es que ya hacía tiempo que tenía ganas de empezar a escribir esta sería de post que hacen referencia al empleo del API de Zabbix, en su versión 1.8. Sí, la versión 2.0 ya salió, pero todavía no la empleamos en producción.
Tras una época empleando la API de Zabbix para realizar un poco de todo, empiezas a comprender qué es lo que hace y cómo hacerlo, si bien hay que decir que la documentación es un tema pendiente. Pues bien, ya metiéndonos en la materia, el empleo de la API se puede realizar desde prácticamente cualquier lenguaje de programación que soporte json, ya que Zabbix tiene un fichero (api_jsonrpc.php) al que se lanzan todas las llamadas. Si bien es cierto que se puede emplear desde cualquier lenguaje, vamos a ver aquí cómo hacerlo desde perl y desde php.
Lógicamente la API como el resto de partes de Zabbix necesita autenticación, por lo que tendremos que habilitar el empleo de la API al usuario que vayamos a dar de alta. Para hacer esto hay dos formas, a bien añadimos al usuario al grupo "API" (lo más aconsejable) o bien le damos acceso a la API a uno de los otros grupos. La mejor solución es añadir el usuario que vayamos emplear a la API, ya que precisamente para eso está.
![]() |
Grupos de usuarios Zabbix |
Una vez el usuario esté ya listo para poder loguearse con la API, ya sólo nos queda escribir el código necesario para hacerlo. Si deseamos emplear perl, tenemos que instalar las librerías json. Para ello antes de nada,
shell> apt-get intall libjson-perl libjson-rpc-perl libtest-json-perlCon las librerías instaladas, ya podemos comenzar a escribir nuestro código. Lo primero será autenticarse. Así que vamos a ver cómo poder hacerlo.
- perlEn perl existen dos formas de poder acceder a la API de Zabbix. La primera es empleando la API escrita en perl, que permite emplear funciones de más alto nivel. Este es un proyecto independiente, por lo que la continuidad y calidad del mismo no depende en estos momentos de zabbix. La forma de emplearla,
#!/usr/bin/env perl use strict; use warnings; use Zabbix::API; my $zabbix = Zabbix::API->new(server => 'http://localhost/api_jsonrpc.php', verbosity => 1); $zabbix->login(user => 'javier', password => 'javier');
La otra forma de emplear perl para acceder a Zabbix es mediante json y acceso a la API de Zabbix directamente. Se le mandan las cadenas en formato json y es Zabbix quien las procesa. Para autenticarse por lo tanto,#!/usr/bin/env perl use 5.010; use strict; use warnings; use JSON::RPC::Client; use Data::Dumper; my $client = new JSON::RPC::Client; my $uri = 'http://localhost/api_jsonrpc.php'; my $json_obj = { jsonrpc => "2.0", method => "user.login", params => { user => "javier", password => "javier" }, id => 1 }; my $response = $client->call($uri, $json_obj); my $authHash; if ($response->content->{'result'}) { $authHash = $response->content->{'result'}; #print "Auth successful - ID hash: " . $authHash . "\n"; print $response->jsontext; } else { #print "sorry, incorrect auth\n"; exit; }
- phpAccede al API de Zabbix nativamente, al igual que lo hace la mayor parte del código de la web y es la forma más óptima de realizar las consultas. La forma de autenticarse,
<?php include_once "include/config.inc.php"; $config = select_config(); $login = CUser::authenticate(array('user'=>"javier", \ 'password'=>"javier", \ 'auth_type'=>$config['authentication_type'])); ?>
Lo escrito hasta aquí aunque parezca poco es esencial, ya que sin estas líneas el resto de código que escribamos no funcionará. Poco a poco iremos viendo las funciones,
- CHost::get
- CHost::create
- CHost::update
- CHost::delete
- CHostGroup::get
- CHostGroup::create
- CHostGroup::update
- CHostGroup::delete
- CMap::get
- CMap::create
- CMap::update
- CMap::delete
- CMap::addElements
- CMap::updateElements
- CMap::deleteElements
No hay comentarios :
Publicar un comentario