Сегодня я задался целью – получить информацию по тесту SpeedTest через
Zabbix
и как добавляется информация на карту сетей. Вот самая важная часть – это вывести информацию на карту, и чтобы она обновлялась с учетом времени, которое задано в «Элементы данных
».
Шаг №1: Развернут сервис мониторинга Zabbix
на Ubuntu 18.04 Server
, о том как это сделать смотреть заметку.
Шаг №2: Устанавливаю (на хост где выполнен «Шаг №1») утилиту которая взаимодействует с сервисом speedtest.net
дабы вывести текущий PING
, скорость загрузки и отдачи, но все это через консоль командной строки
ekzorchik@srv-zabbix:~$ apt-cache search speedtest-cli speedtest-cli - Command line interface for testing internet bandwidth using speedtest.net ekzorchik@srv-zabbix:~$ sudo apt-get install -y speedtest-cli
Шаг №3: Создаю папку где будет располагаться результат консольного взаимодействия утилиты speedtest-cli
с сайтом через который делается замер текущего ответа Вашей системы, скорости загрузки и отдачи:
ekzorchik@srv-zabbix:~$ sudo mkdir /usr/lib/zabbix/script
Шаг №4: Запускаю speedtest:
ekzorchik@srv-zabbix:~$ sudo speedtest-cli --simple Ping: 4.422 ms Download: 48.80 Mbit/s Upload: 3.87 Mbit/s ekzorchik@srv-zabbix:~$
Шаг №5: Создаю файл с показателями speedtest:
ekzorchik@srv-zabbix:~$ sudo bash -c "speedtest-cli --simple > /usr/lib/zabbix/script/speed.txt"
Шаг №6: Извлекаю из него («Шаг №5») информацию: ping, Download, Upload
Ping:
ekzorchik@srv-zabbix:~$ cat /usr/lib/zabbix/script/speed.txt | grep Ping | cut -d " " -f2 4.33
Download:
ekzorchik@srv-zabbix:~$ cat /usr/lib/zabbix/script/speed.txt | grep Download | cut -d " " -f2 50.44
Upload:
ekzorchik@srv-zabbix:~$ cat /usr/lib/zabbix/script/speed.txt | grep Upload | cut -d " " -f2 3.83
Шаг №7: Добавляю в cron
строку обновления информации: Ping, Download & Upload
и сохранения полученных значений в файл «Шаг №5»:
ekzorchik@srv-zabbix:~$ sudo crontab -e */10 * * * * speedtest-cli --simple > /usr/lib/zabbix/script/speed.txt
Шаг №8: Теперь создаю конфигурационный файл «speedtest.conf
» для Zabbix
—агента который будет считывать эти три параметра (ping, Download, Upload
):
ekzorchik@srv-zabbix:~$ sudo nano /etc/zabbix/zabbix_agentd.d/speedtest.conf UserParameter=ping[*],cat /usr/lib/zabbix/script/speed.txt | grep Ping | cut -d " " -f2 UserParameter=Download[*],cat /usr/lib/zabbix/script/speed.txt | grep Download | cut -d " " -f2 UserParameter=Upload[*],cat /usr/lib/zabbix/script/speed.txt | grep Upload | cut -d " " -f2 ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-agent ekzorchik@srv-zabbix:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t ping ping [t|4.33] ekzorchik@srv-zabbix:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t Download Download [t|50.44] ekzorchik@srv-zabbix:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t Upload Upload [t|3.83] ekzorchik@srv-zabbix:~$
Отлично, показания из Zabbix
-агента по предопределенным ключам снимаются.
Шаг №9: Значит можно в Web
-интерфейсе Zabbix
создать элементы данных (лучше создать отдельный Шаблон и навешивать его на текущий хост).
http://IP&DNS/zabbix - user&pass - Настройка – Шаблоны – Создать шаблон
Имя шаблона: Template_SpeedTEST
Группы: Zabbix servers
И нажимаю «Добавить
». После перехожу в созданных шаблон и внутри него перехожу в «Элементы данных
» и создаю три элемента:
Тип информации: Числовой (с плавающей точкой)
После привязываю данный шаблон к хосту: Zabbix server
http://IP&DNS/zabbix - user&pass - Настройка – Узлы сети
– нахожу узел «Zabbix Server
», захожу в него, затем «Шаблоны
» — «Добавить
» — Группа: Zabbix servers
, нахожу созданных шаблон с именем Template_SpeeTEST
, отмечаю его галочкой и нажимаю «Выбрать
»
Затем «Обновить
». Итого должно получиться так:
Спустя, к примеру несколько минут вижу снимаемые/читающиеся показатели:
Задача: Как сделать чтобы извлекаемые данные Agent
(ом) отображались на карте
http://IP&DNS/zabbix - user&pass - Мониторинг – Карты сетей – Изменить карту сети
Этап №1: Создаю объект который будет являться у меня «Интернетом
»
Элементы карты сети: Добавить
Тип: Изображение
Подпись: Интернет
Расположение подписи: По умолчанию
Иконки: к примеру Satellite_antenna_(48)
И нажимаю «Применить
».
Этап №2: Затем нужно настроить связь между хостом “Zabbix server
» и объектом “Интернет
». Для этого выделяю (растягиваю квадрат) их левой кнопкой мыши дабы у обоих элементов вокруг них появилась пунктирная линия, т.е вот так:
И нажимаю Связь: «Добавить
», появляется линия и отметка что элементы связаны:
Переход на «Действие: Изменить
» позволит настроить подпись, тип линии, цвет и предопределить индикаторы связи. Меня пока интересует настройка «Подпись
»
Подпись:
Ping: {Zabbix server:Ping.last(0)} ↓ DL: {Zabbix server:Download.last(0)} ↑ UP: {Zabbix server:Upload.last(0)}
После нажимаю «Применить
» — «Закрыть
» — «Применить
» — «Закрыть
» — «Обновить
» — «OK
»
На заметку: В подписи выше нужно Ping написать с маленькой буквы ping, т.е. именно так у меня выше он определен в скрипте, или изменить везде на заглавную. И все будет работать, проверено и на Zabbix 5.0 LTS
Результат:
http://IP&DNS/zabbix - user&pass - Мониторинг – Карты сетей – Local network
– и вот скриншот уже настроенной динамической связи между двумя элементами.
Получилось и я понял, как это делается. Теперь я еще более приблизился к тому, чтобы мой собственный сервер с сервисом Zabbix
во главе стал «Умным домом
» по моей инфраструктуре. Чем больше времени посвящаешь что интересно, тем продуктивнее ты себя чувствуешь. На этом пока у меня всё, вектор направления получен, с уважением автор блога Олло Александр aka ekzorchik.