Speedtest и Zabbix
Появилась задача – мониторинг скорости канала интернета. Решение решил сделать на Zabbix. В качестве замера скорости будет выступать speedtest-cli в виде консольной утилиты.
Установка Speedtest-cli.
Самое просто это установка, но нет!
1 2 3 |
sudo add-apt-repository universe sudo apt update sudo apt install speedtest-cli |
Такая установка выдает ошибку: Unable to locate package speedtest-cli
В итоге установку сделал через pip.
1 2 |
apt-get install python-pip pip install speedtest-cli |
Если в процессе работы потребуется произвести обновление speedtest, то команда для обновления выглядит так:
1 |
pip install speedtest-cli –-upgrade |
Проверяем:
1 2 3 4 5 |
root@zabbix01:~# speedtest-cli --bytes --simple > /tmp/speed.txt root@zabbix01:~# cat /tmp/speed.txt Ping: 9.327 ms Download: 7.30 Mbyte/s Upload: 9.64 Mbyte/s |
Или если убрать –bytes
1 2 3 4 5 |
root@zabbix01:~# speedtest-cli --simple > /tmp/speed.txt root@zabbix01:~# cat /tmp/speed.txt Ping: 6.126 ms Download: 71.09 Mbit/s Upload: 76.41 Mbit/s |
Мне больше понравилось Mbit/s измерять скорость, как то привычнее.
Конфигурация Zabbix агента.
Теперь научим Zabbix понимать что мы хотим, внесем пользовательские значения в конфигурацию агента. Я обычно добавляю в самый низ.
1 2 3 4 |
nano /etc/zabbix/zabbix_agentd.conf UserParameter=upload[*],cat /tmp/speed.txt | grep "Upload:" | cut -d " " -f2 UserParameter=download[*],cat /tmp/speed.txt | grep "Download:" | cut -d " " -f2 |
Так же добавляем возможность выполнения удаленных команд:
1 2 3 4 5 6 7 8 |
### Option: EnableRemoteCommands # Whether remote commands from Zabbix server are allowed. # 0 - not allowed # 1 - allowed # # Mandatory: no # Default: EnableRemoteCommands=1 |
Перезапустим агент, что бы он принял новую конфигурацию.
1 |
/etc/init.d/zabbix-agent restart |
Настройка планировщика (crontab).
Теперь когда будет происходить замер скорости, данные будут записываться в файл, а Zabbix их забирать к себе в базу и строить графики. Но для начала настроим автоматизацию получения этих данных, к примеру через планировщик.
Необходимо для начала узнать путь до speedtest-cli, делается командой whereis.
1 2 |
root@zabbix01:~# whereis speedtest-cli speedtest-cli: /usr/bin/speedtest-cli /usr/share/man/man1/speedtest-cli.1.gz |
Редактируем crontab.
1 |
nano /etc/crontab |
Вносим следующую строчку, которая будет каждые 25 минут запускать за нас speedtest.
1 |
*/25 * * * * root /usr/bin/speedtest-cli --simple > /tmp/speed.txt |
Настройка Zabbix.
Переходим к настройке web интерфейса Zabbix. Нам нужен узел самого Zabbix, в нем и будем добавлять новые элементы данных, если быть точнее, то всего требуется добавить два элемента.
Имя: Download
Ключ: download
Единица измерения: Mbit/s
Имя: Upload
Ключ: upload
Единица измерения: Mbit/s
P.S.
В итоге получаем следующую картину:
- Speedtest-cli производит замер скорости каждые 25 минут и записывает результат в файл.
- Zabbix каждые 30 минут считывает значения из файла.
Почему разница в 5 минут? Я подумал, что может произойти рассинхронизация и данные будут не корректны.
Графики скорости.
Параметры speedtest-cli.
usage: speedtest-cli [-h] [–no-download] [–no-upload] [–bytes] [–share]
[–simple] [–csv] [–csv-delimiter CSV_DELIMITER]
[–csv-header] [–json] [–list] [–server SERVER]
[–exclude EXCLUDE] [–mini MINI] [–source SOURCE]
[–timeout TIMEOUT] [–secure] [–no-pre-allocate]
[–version]
Один комментарий
Пользователь
Супер!
Кратко, лаконично, понятно. А главное – работает!