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

Тематические термины: Zabbix, API, PHP.
Zabbix сервер позволяет автоматизировать многие задачи по его администрированию средствами API запросов. Для этого необходимо отправить серверу JSON-команды по http(s).
Пример скрипта
Данный скрипт представлен несколькими функциями, в конце скрипта которые мы просто вызываем:
- function my_curl_zabbix($arr) {
- global $auth;
- $url = 'http://monitoring.dmosk.local/zabbix/api_jsonrpc.php';
- $arr[jsonrpc] = '2.0';
- $arr[id] = '1';
- $arr[auth] = $auth;
- $postfields = json_encode($arr);
- $curl = curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json-rpc'));
- curl_setopt($curl, CURLOPT_HEADER, false);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($curl, CURLOPT_POST, 1);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $postfields);
- $return = curl_exec($curl);
- curl_close($curl);
- return json_decode($return, true);
- }
- function z_auth() {
- $jsonData = array("method" => "user.login","params" => array("user" => "username","password" => "userpassword"));
- $auth_arr = my_curl_zabbix($jsonData);
- return $auth_arr[result];
- }
- function z_get_hosts($filter_arr) {
- $jsonData = array("method" => "host.get","params" => array("output" => array("hostid", "host", "name"),"selectInventory" => "name"));
- if ($filter_arr) {
- $jsonData[params][filter] = $filter_arr;
- }
- $result = my_curl_zabbix($jsonData);
- return $result[result];
- }
- function z_update_hosts($host_id, $action) {
- $jsonData = array("method" => "host.update","params" => array("hostid" => "{$host_id}"));
- switch ($action) {
- case 'disable':
- $jsonData[params][status] = 1;
- break;
- case 'enable':
- $jsonData[params][status] = 0;
- break;
- default:
- return false;
- }
- $result = my_curl_zabbix($jsonData);
- return $result;
- }
- $auth = z_auth();
- $z_host = z_get_hosts(array('host'=>'myServer'));
- 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). |