Активация/деактивация узлов Zabbix с помощью API на PHP

Тематические термины: Zabbix , API , PHP .

Zabbix сервер позволяет автоматизировать многие задачи по его администрированию средствами API запросов. Для этого необходимо отправить серверу JSON-команды по http(s).

Пример скрипта

Данный скрипт представлен несколькими функциями, в конце скрипта которые мы просто вызываем:

  1. function my_curl_zabbix($arr) {
  2. global $auth;
  3. $url = ‘http://monitoring.remontka.local/zabbix/api_jsonrpc.php’;
  4. $arr[jsonrpc] = ‘2.0’;
  5. $arr[id] = ‘1’;
  6. $arr[auth] = $auth;
  7. $postfields = json_encode($arr);
  8. $curl = curl_init();
  9. curl_setopt($curl, CURLOPT_URL, $url);
  10. curl_setopt($curl, CURLOPT_HTTPHEADER, array(‘Content-Type: application/json-rpc’));
  11. curl_setopt($curl, CURLOPT_HEADER, false);
  12. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  13. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
  14. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  15. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  16. curl_setopt($curl, CURLOPT_POST, 1);
  17. curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
  18. $return = curl_exec($curl);
  19. curl_close($curl);
  20. return json_decode($return, true);
  21. }
  22. function z_auth() {
  23. $jsonData = array(«method» => «user.login»,»params» => array(«user» => «username»,»password» => «userpassword»));
  24. $auth_arr = my_curl_zabbix($jsonData);
  25. return $auth_arr[result];
  26. }
  27. function z_get_hosts($filter_arr) {
  28. $jsonData = array(«method» => «host.get»,»params» => array(«output» => array(«hostid», «host», «name»),»selectInventory» => «name»));
  29. if ($filter_arr) {
  30. $jsonData[params][filter] = $filter_arr;
  31. }
  32. $result = my_curl_zabbix($jsonData);
  33. return $result[result];
  34. }
  35. function z_update_hosts($host_id, $action) {
  36. $jsonData = array(«method» => «host.update»,»params» => array(«hostid» => «{$host_id}»));
  37. switch ($action) {
  38. case ‘disable’:
  39. $jsonData[params][status] = 1;
  40. break;
  41. case ‘enable’:
  42. $jsonData[params][status] = 0;
  43. break;
  44. default:
  45. return false;
  46. }
  47. $result = my_curl_zabbix($jsonData);
  48. return $result;
  49. }
  50. $auth = z_auth();
  51. $z_host = z_get_hosts(array(‘host’=>’myServer’));
  52. z_update_hosts($z_host[0][hostid], ‘disable’);

Описание скрипта

Строка Описание
1 — 21 Функция отправки запроса на http-сервер с помощью CURL.
9 — 17 Задаем опции для curl. Подробнее на их описании останавливаться не будем.
23 — 27 Функция авторизации на сервере Zabbix.
29 — 36 Получаем список хостов и информацию по ним. В качестве аргумента можно передать фильтр. Без фильтра функция возвращает все хосты.
38 — 52 Обновляем состояние хоста. Для этого передаем его идентификатор и конкретное действие — деактивировать (disable) или активировать (enable).
54 Выполняем аутентификацию. Полученный идентификатор авторизации заносим в переменную $auth.
55 Получаем информацию о хосте, который необходимо включить или отключить. В качестве аргументов передаем имя хоста.
56 Деактивируем хост. Передаем функции id хоста и действие (disable).
EnglishRussianUkrainian