Сторінка 1 з 1

Выводим состояние серверов из Zabbix на страницу сайта

Додано: 24-11-2020 21:43:38
toxi
Добавляем скрипт в крон:
Желательно хранить скрипт в каталоге, который не опубликован на сайте. Иначе скрипт можно будет запускать из браузера, да и файл с куки можно будет утащить.

Код: Виділити все

* * * * * root php /var/www/get_image.php > /dev/null 2>&1

Код: Виділити все

<?php
//Основные настройки, не забудьте указать свои значения!

//1. Папка для хранения изображений
define('TMP_PATH', '/tmp/');
//2. URL веб-интерфейса Zabbix
define('ZABBIX_URL', 'https://monitoring.local/');
//3. Пользователь в Zabbix
define('ZABBIX_USER', 'root');
//4. Пароль для Zabbix
define('ZABBIX_PW', '');

// Получение картинок загрузки OpenVPN
$resources_openvpn = array();

//График загрузки OpenVPN 1
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1110&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1110&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 2
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1100&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1100&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 3
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1101&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1101&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 4
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1102&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1102&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 5
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1103&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1103&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 6
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1104&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1104&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 7
#$resources_openvpn[] = array('url' => 'http://monitoring.local/chart2.php?graphid=494&width=1138&period=86400', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 8
$resources_openvpn[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1106&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1106&width=760', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 9
#$resources_openvpn[] = array('url' => 'http://monitoring.local/chart2.php?graphid=494&width=1138&period=86400', 'x' => 26, 'y' => 400);
//График загрузки OpenVPN 10
#$resources_openvpn[] = array('url' => 'http://monitoring.local/chart2.php?graphid=494&width=1138&period=86400', 'x' => 26, 'y' => 400);

// Получение картинок загрузки сети
$resources_network = array();

//График загрузки сети 1
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1005&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1005&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 2
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1016&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1016&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 3
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1027&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1027&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 4
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1038&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1038&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 5
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1049&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1049&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 6
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1060&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1060&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 7
#$resources_network[] = array('url' => 'http://monitoring.local/chart2.php?graphid=494&width=1138&period=86400', 'x' => 26, 'y' => 400);
//График загрузки сети 8
$resources_network[] = array('url' => 'https://monitoring.local/chart2.php?graphid=1070&from=now-1h&to=now&profileIdx=web.graphs.filter&profileIdx2=1070&width=760', 'x' => 26, 'y' => 400);
//График загрузки сети 9
#$resources_network[] = array('url' => 'http://monitoring.local/chart2.php?graphid=494&width=1138&period=86400', 'x' => 26, 'y' => 400);
//График загрузки сети 10
#$resources_network[] = array('url' => 'http://monitoring.local/chart2.php?graphid=494&width=1138&period=86400', 'x' => 26, 'y' => 400);

//Конец настроек
//Ниже менять ничего не надо, если вы не уверены, что вы делаете.

$error = false;

//"Логинимся" скриптом в Zabbix
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ZABBIX_URL . '/index.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('form'=>'1', 'form_refresh'=>'1','name'=>ZABBIX_USER, 'password'=>ZABBIX_PW,'enter'=>'Enter'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt"); //Сохраняем куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");

$t = curl_exec($ch);
curl_close($ch);

//Получаем изображения
foreach($resources_openvpn as $k => $res)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $res['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");

$file = curl_exec($ch);
if($file) file_put_contents(TMP_PATH . 'temp_img_openvpn' . $k . '.png', $file);
else $error = true;
curl_close($ch);
}

//Получаем изображения
foreach($resources_network as $k => $res)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $res['url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");

$file = curl_exec($ch);
if($file) file_put_contents(TMP_PATH . 'temp_img_network' . $k . '.png', $file);
else $error = true;
curl_close($ch);
}

?>
Выводим картинки на страницу:

Код: Виділити все

<img src="/tmp/temp_img_network0.png" />
<img src="/tmp/temp_img_network1.png" />
<img src="/tmp/temp_img_network2.png" />
<img src="/tmp/temp_img_network3.png" />
<img src="/tmp/temp_img_network4.png" />
<img src="/tmp/temp_img_network5.png" />
Источник: https://habr.com/ru/post/104460/