Передать Отправить данные в Zabbix через Веб интерфейс http https

Процесс установки zabbix а так же дополнительных различных вспомогательных программ
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 815
Стаж: 5 лет 3 месяца
Откуда: Вологодская область
Поблагодарили: 35 раз
Контактная информация:

Передать Отправить данные в Zabbix через Веб интерфейс http https

Сообщение Артём Мамзиков »

Возникла задача передачи данных через Веб интерфейс по 80 порту http (на удаленном узле не было возможности использовать заббикс агент , заббикс траппер)
Так же для этих целей можно настроить отдельный порт в конфигурации на Веб сервере (Apache, Nginx и т.д.)
настраиваем в iptables доступ для этого порта определенным ip адресам.

Рассмотрим один из примеров.

В папке Веб- интерфейса Zabbix нужно создать файлик script.php путь в моем случае такой \var\www\html\html\
Файл script.php
script.zip
script.zip
(504 байт) 13 скачиваний

Код: Выделить всё

<?php

if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['host'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'];}
if(isset($_GET['porotocol'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'] . ' ' . $_GET['name'] . ' ' . $_GET['protocol'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['host'] . ' ' . $_GET['name'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;

// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>
Проверяем что переменные не пустые и принимаем данные, далее передаем через траппер, можно было напрямую в Базу данных или через API, но тогда придётся указать Логин Пароль от БД или Zabbix. Поэтому отправим данные в заббикс через траппер, в шаблоне указан ключ приема getipportunauthorizedaccess

Отправка данных с Fail2Ban

Для теста из браузера

Код: Выделить всё

http://192.168.175.111/script.php?alarm=true&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp

Код: Выделить всё

http://192.168.175.111/script.php?alarm=false&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp

Код: Выделить всё

http://192.168.175.111/script.php?hname=Serv&currentip=thip192.168.175.204&alarm=true&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp

Код: Выделить всё

http://192.168.175.111/script.php?hname=Serv&currentip=thip192.168.175.204&alarm=false&ip=192.168.175.123&port=445&name=dom9&host=iphost&protocol=tcp

Код: Выделить всё

actionban = curl -X GET http://192.168.60.111/script.php?hname=<hname>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>

Код: Выделить всё

actionban = curl -X GET http://192.168.60.111/script.php?hname=<hname>\&currentip=<currentip>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>

Тесты
Отправка данных

Код: Выделить всё

http://192.168.175.111/script.php?alarm=1&ip=192.168.175.123&port=445

Код: Выделить всё

curl -X POST -d "alarm=1&ip=192.168.175.123&port=80" http://192.168.175.111/script.php
curl -X GET http://192.168.175.111/script.php?alarm=1\&ip=192.168.175.123\&port=445

curl -X GET http://192.168.175.111/script.php?alarm=true\&ip=<ip>\&port=<port>\&name=<name>\&host=<ip-host>\&protocol=<protocol>
curl -X GET http://192.168.175.111/script.php?alarm=false\&ip=<ip>\&port=<port>\&name=<name>\&host=<ip-host>\&protocol=<protocol>
На стороне удаленного узла
Действия
Открывает триггер

Код: Выделить всё

actionban = curl -X GET http://192.168.175.111/script.php?alarm=true&ip=<ip>&port=<F-PORT>&name=<name>&host=<ip-host>&protocol=<F-PROTO>

Код: Выделить всё

actionban = curl -X GET http://192.168.175.111/script.php?hname=<hname>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>

Код: Выделить всё

zabbix_sender -z 192.168.175.111 -p 10051 -s <hname> -k getipportunauthorizedaccess -o "<hname> true <ip>:<name> <ip-host>"

Код: Выделить всё

actionban = curl -X GET http://192.168.175.111/script.php?hname=<hname>\&currentip=<currentip>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host>

Код: Выделить всё

zabbix_sender -z 192.168.175.111 -p 10051 -s <hname> -k getipportunauthorizedaccess -o "<hname> <currentip> true <ip>:<name> <ip-host>"

Код: Выделить всё

actionban = curl -X GET http://192.168.175.111/script.php?hname=<hname>\&currentip=<hip>\&alarm=true\&ip=<ip>\&port=<name>\&host=<ip-host> & sleep 10&& zabbix_sender -z 192.168.175.111 -p 10051 -s \"<hname>\" -k getipportunauthorizedaccess -o \"<hname> <hip> true <ip>:<name> <ip-host>\
Закрывает

Код: Выделить всё

actionunban = curl -X GET http://192.168.175.111/script.php?alarm=false&ip=<ip>&port=<F-PORT>&name=<name>&host=<ip-host>&protocol=<F-PROTO>

Разное тесты настройки
// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>

01.03.2023 09:10:57 Serv thip192.168.175.204 true 192.168.175.5:445 screensquid
Триггер
Последнее значение: {ITEM.LASTVALUE}

Попытка доступа c {ITEM.VALUE} на ip {HOST.CONN} ; {HOST.HOST} ;{HOST.NAME}

Попытка доступа
НА {{ITEM.VALUE}.iregsub("thip([0-9.]+)\s+", "\1")}
PORT {{ITEM.VALUE}.iregsub(":([0-9]+)\s+", "\1")}
C {{ITEM.VALUE}.iregsub("\s+([0-9.]+):", "\1")}
{{ITEM.VALUE}.iregsub("[0-9.:]+\s+(.*)", "\1")}


{{ITEM.VALUE}.iregsub("\s+([0-9.:]+)\s+", "\1")}

true 192.168.175.123:445
Файл script.php
Показать
Принимающая сторона
/var/www/html/script.php
<?php

if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'] . ' ' . $_GET['protocol'];
} else {$text = $text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
echo $text;

// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s 'fail2ban' -k getipportunauthorizedaccess -o '$text'");
?>


НОВЫЙ С ИМЕНЕМ
<?php

if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];
} else {$text =$_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text =$_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'] . ' ' . $_G
} else {$text = $_GET['hname'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' . $_GET['host'];}
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;

// Отправим данные траппером в заббикс
shell_exec("zabbix_sender -z 127.0.0.1 -p 10051 -s '$hostname' -k getipportunauthorizedaccess -o '$text'");
?>



ТЕКУЩИЙ IP хоста
<?php

if(isset($_GET['hname'])){
if(isset($_GET['alarm'])){
if(isset($_GET['ip'])){
if(isset($_GET['port'])){
$hostname = $_GET['hname'];
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];
if(isset($_GET['name'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'];}
if(isset($_GET['host'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' .
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'];}
if(isset($_GET['porotocol'])){
$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] . ' ' .
} else {$text = $_GET['hname'] . ' ' . $_GET['currentip'] . ' ' . $_GET['alarm'] . ' ' . $_GET['ip'] . ':' . $_GET['port'] . ' ' . $_GET['name'] .
} else {$text = error_port;}
} else {$text = error_ip;}
} else {$text = error_alarm;}
} else {$text = error_hname;}
echo $text;
Пример вида последних данных
Пример вида последних данных
количество слов: 1142
Аватара пользователя
Дмитрий Иванов
Гость
Сообщения: 7
Стаж: 1 год 2 месяца
Контактная информация:

Передать Отправить данные в Zabbix через Веб интерфейс http https

Сообщение Дмитрий Иванов »

1) Ключ приема getipportunauthorizedaccess в заббиксе где то надо прописать ?
2) что означают параметры
$_GET['hname']))
$_GET['alarm']))
$_GET['ip']))
$_GET['port']))
$_GET['currentip']
3) ссылки http://192.168.175.111 не открываются если проблема их запостить в текстовом виде, то можно хотя бы скрин,
нужен самый простой пример без тригеров итд, нужно просто передать данные например на хост в забиксе именем host1, итему с имемен item1, значение итема скажем число 7
4) Правильно понимаю общую схему мы копируем script.php на сервер с забиксом там где его index.php, потом из браузера(или другой проги) запрашиваем script.php и передаем ему три значения host, item_name, item_value ?
количество слов: 34
Ответить Вложения 2 Пред. темаСлед. тема

Вернуться в «Установка Заббикс и Дополнений»