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

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

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

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

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

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

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

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

<?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 ... otocol=tcp
http://192.168.175.111/script.php?alarm ... otocol=tcp

http://192.168.175.111/script.php?hname ... otocol=tcp
http://192.168.175.111/script.php?hname ... otocol=tcp

actionban = curl -X GET http://192.168.60.111/script.php?hname= ... t=<ip-host>
actionban = curl -X GET http://192.168.60.111/script.php?hname= ... t=<ip-host>


Тесты
Отправка данных
http://192.168.175.111/script.php?alarm ... 3&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 ... l=<F-PROTO>
actionban = curl -X GET http://192.168.175.111/script.php?hname ... t=<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 ... t=<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 ... t=<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 ... l=<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;
Пример вида последних данных
Пример вида последних данных
количество слов: 1012

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