Мониторинг скорости интернет канала в Zabbix

Print Friendly, PDF & Email

Задача:

Настроить на сервере Zabbix мониторинг скорости интернет канала

---------------------------------------------------------------

Настраивать будем на сервере установленного при помощи готовых решений Zabbix. Для этого на официальном сайте в меню выбираем “Скачать и установить Zabbix > Готовое решение Zabbix > Установите готовое решение Zabbix”. Скачиваем желаемый тип, справедливости ради, стоит упомянуть что их тут на любой вкус.

Если вы будете использовать аналогичный вариант, то вам понадобятся стандартные (по-умолчанию) пароли Zabbix:

  • логин и пароль zabbix по-умолчанию для браузера: имя пользователя Admin с паролем zabbix для входа под Супер-Администратором Zabbix.
  • логин и пароль по-умолчанию для консоли zabbix: имя пользователя root с паролем zabbix для входа в консоль сервера.

Если вы войдёте в консоль сервера, то увидите пароль для веб-интерфейса

В готовом решении заббих используется операционная система CentOS, на ней и будем устанавливать консольный вариант speedtest.

Инструкция с официального сайта:

sudo yum install wget
wget https://bintray.com/ookla/rhel/rpm -O bintray-ookla-rhel.repo
sudo mv bintray-ookla-rhel.repo /etc/yum.repos.d/
# Other non-official binaries will conflict with Speedtest CLI
# Example how to remove using yum
# rpm -qa | grep speedtest | xargs -I {} sudo yum -y remove {}
sudo yum install speedtest

Мой процесс установки

[root@appliance ~]# yum install wget
Last metadata expiration check: 0:05:26 ago on Sat 06 Feb 2021 02:07:04 PM UTC.
Dependencies resolved.
========================================================================================================================================================================================================================
 Package                                         Architecture                                      Version                                                   Repository                                            Size
========================================================================================================================================================================================================================
Installing:
 wget                                            x86_64                                            1.19.5-10.el8                                             appstream                                            734 k

Transaction Summary
========================================================================================================================================================================================================================
Install  1 Package

Total download size: 734 k
Installed size: 2.8 M
Is this ok [y/N]: y
Downloading Packages:
wget-1.19.5-10.el8.x86_64.rpm                                                                                                                                                           4.4 MB/s | 734 kB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                   2.8 MB/s | 734 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                1/1
  Installing       : wget-1.19.5-10.el8.x86_64                                                                                                                                                                      1/1
  Running scriptlet: wget-1.19.5-10.el8.x86_64                                                                                                                                                                      1/1
  Verifying        : wget-1.19.5-10.el8.x86_64                                                                                                                                                                      1/1

Installed:
  wget-1.19.5-10.el8.x86_64

Complete!
[root@appliance ~]#
[root@appliance ~]# wget https://bintray.com/ookla/rhel/rpm -O bintray-ookla-rhel.repo
--2021-02-06 14:12:42--  https://bintray.com/ookla/rhel/rpm
Resolving bintray.com (bintray.com)... 75.126.208.206
Connecting to bintray.com (bintray.com)|75.126.208.206|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified 
Saving to: ‘bintray-ookla-rhel.repo’

bintray-ookla-rhel.repo                                   [ <=>                                                                                                                      ]     172  --.-KB/s    in 0s

2021-02-06 14:12:43 (116 MB/s) - ‘bintray-ookla-rhel.repo’ saved [172]

[root@appliance ~]# mv bintray-ookla-rhel.repo /etc/yum.repos.d/
[root@appliance ~]# yum install speedtest
bintray--ookla-rhel                                                                                                                                                                     6.0 kB/s | 1.4 kB     00:00
Dependencies resolved.
========================================================================================================================================================================================================================
 Package                                         Architecture                                 Version                                                   Repository                                                 Size
========================================================================================================================================================================================================================
Installing:
 speedtest                                       x86_64                                       1.0.0.2_1.5ae238b-1                                       bintray--ookla-rhel                                       910 k

Transaction Summary
========================================================================================================================================================================================================================
Install  1 Package

Total download size: 910 k
Installed size: 2.2 M
Is this ok [y/N]: y
Downloading Packages:
ookla-speedtest-1.0.0-x86_64-linux.rpm                                                                                                                                                  2.0 MB/s | 910 kB     00:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                   2.0 MB/s | 910 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                                                                1/1
  Installing       : speedtest-1.0.0.2_1.5ae238b-1.x86_64                                                                                                                                                           1/1
  Verifying        : speedtest-1.0.0.2_1.5ae238b-1.x86_64                                                                                                                                                           1/1

Installed:
  speedtest-1.0.0.2_1.5ae238b-1.x86_64

Complete!
[root@appliance ~]#

Проверяем работу

[root@appliance ~]# speedtest

   Speedtest by Ookla

     Server: Deutsche Telekom - Dusseldorf (id = 30906)
        ISP: Versatel Deutschland
    Latency:     9.48 ms   (0.52 ms jitter)
   Download:    54.23 Mbps (data used: 69.4 MB)
     Upload:    16.70 Mbps (data used: 7.5 MB)
Packet Loss:     0.0%
 Result URL: https://www.speedtest.net/result/c/7d3b703e-9410-43fb-921c-a88baac00e77
[root@appliance ~]#

Проверяем как информация записывается в файл

[root@appliance ~]# speedtest > /tmp/speedtest.txt
[root@appliance ~]# cat /tmp/speedtest.txt

   Speedtest by Ookla

     Server: Contabo - Dusseldorf (id = 35154)
        ISP: Versatel Deutschland
    Latency:    10.30 ms   (0.43 ms jitter)
   Download:    54.25 Mbps (data used: 70.7 MB)
     Upload:    16.73 Mbps (data used: 12.3 MB)
Packet Loss:     0.5%
 Result URL: https://www.speedtest.net/result/c/652f71a8-95bc-44a4-b411-dae61d1ddc64
[root@appliance ~]#

Теперь необходимо извлечь необходимые нам файлы. Смотрим справку:

[root@appliance ~]# speedtest -help
Speedtest by Ookla is the official command line client for testing the speed and performance of your internet connection.

Version: speedtest 1.0.0.2

Usage: speedtest [<options>]
  -h, --help                        Print usage information
  -V, --version                     Print version number
  -L, --servers                     List nearest servers
  -s, --server-id=#                 Specify a server from the server list using its id
  -I, --interface=ARG               Attempt to bind to the specified interface when connecting to servers
  -i, --ip=ARG                      Attempt to bind to the specified IP address when connecting to servers
  -o, --host=ARG                    Specify a server, from the server list, using its host's fully qualified domain name
  -p, --progress=yes|no             Enable or disable progress bar (Note: only available for 'human-readable'
                                    or 'json' and defaults to yes when interactive)
  -P, --precision=#                 Number of decimals to use (0-8, default=2)
  -f, --format=ARG                  Output format (see below for valid formats)
  -u, --unit[=ARG]                  Output unit for displaying speeds (Note: this is only applicable
                                    for ‘human-readable’ output format and the default unit is Mbps)
  -a                                Shortcut for [-u auto-decimal-bits]
  -A                                Shortcut for [-u auto-decimal-bytes]
  -b                                Shortcut for [-u auto-binary-bits]
  -B                                Shortcut for [-u auto-binary-bytes]
      --selection-details           Show server selection details
      --ca-certificate=ARG          CA Certificate bundle path
  -v                                Logging verbosity. Specify multiple times for higher verbosity
      --output-header               Show output header for CSV and TSV formats

 Valid output formats: human-readable (default), csv, tsv, json, jsonl, json-pretty

 Machine readable formats (csv, tsv, json, jsonl, json-pretty) use bytes as the unit of measure with max precision

 Valid units for [-u] flag:
   Decimal prefix, bits per second:  bps, kbps, Mbps, Gbps
   Decimal prefix, bytes per second: B/s, kB/s, MB/s, GB/s
   Binary prefix, bits per second:   kibps, Mibps, Gibps
   Binary prefix, bytes per second:  kiB/s, MiB/s, GiB/s
   Auto-scaled prefix: auto-binary-bits, auto-binary-bytes, auto-decimal-bits, auto-decimal-bytes

[root@appliance ~]#

Для вывода данных в формате мегабайты в секунду, необходимо использовать специальный ключ

[root@appliance ~]# speedtest -uMB/s

   Speedtest by Ookla

     Server: Lippe Data UG - Düsseldorf (id = 39002)
        ISP: Versatel Deutschland
    Latency:     7.14 ms   (0.80 ms jitter)
   Download:     6.64 MB/s (data used: 61.4 MB)
     Upload:     2.09 MB/s (data used: 13.4 MB)
Packet Loss:     0.0%
 Result URL: https://www.speedtest.net/result/c/2ad5acc8-6b27-417d-a1f4-2d6222ed9292
[root@appliance ~]# 

Или же можно запросить вывод в формате CSV

[root@appliance ~]# speedtest -uMB/s --format=csv
"PHILUNET GmbH - Dusseldorf","33397","15.428","0.122","N/A","6308617","2087205","41009760","10801440","https://www.speedtest.net/result/c/bfe2e856-66c1-40cf-b7e6-eb4ed48ed775"
[root@appliance ~]#

Нам необходимо добавить команду в Cron. Сделаем чтобы данные обновлялись каждые 30 минут

[root@appliance ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

[root@appliance ~]# crontab -e

Вставляем строку и для выполнения и сохраняемся. (работает как стандартный редактор VI)

*/30 * * * * root /usr/bin/speedtest > /tmp/speedtest.txt

Командой “crontab -e” изменить cron не получилось. Сделал изменения в файле “crontab” и сразу всё заработало.

[root@appliance ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
*/30 * * * * root /usr/bin/speedtest > /tmp/speedtest.txt

[root@appliance ~]#

Теперь из создаваемого каждые 30 минут файла, нам необходимо получить необходимые данные.

Команда для получения пинга (Latency, Ping):

[root@appliance ~]# cat /tmp/speedtest.txt | grep Latency | sed 's/ //g' |  cut -d ':' -f2 | sed "s/m.*//"
14.86
[root@appliance ~]# cat /tmp/speedtest.txt | grep Latency | sed 's/ //g' |  cut -d ':' -f2 | grep -o '^[^m]*'
14.86
[root@appliance ~]#

Команда для получения скорости скачивания (Download)

[root@appliance ~]# cat /tmp/speedtest.txt | grep Download | sed 's/ //g' |  cut -d ':' -f2 | sed "s/M.*//"
52.13
[root@appliance ~]# cat /tmp/speedtest.txt | grep Download | sed 's/ //g' |  cut -d ':' -f2 | grep -o '^[^M]*'
52.13
[root@appliance ~]#

Команда для получения скорости отдачи (Upload):

[root@appliance ~]# cat /tmp/speedtest.txt | grep Upload | sed 's/ //g' |  cut -d ':' -f2 | sed "s/M.*//"
16.56
[root@appliance ~]# cat /tmp/speedtest.txt | grep Upload | sed 's/ //g' |  cut -d ':' -f2 | grep -o '^[^M]*'
16.56
[root@appliance ~]#

Теперь необходимо настроить передачу данных на Zabbix сервер. Для этого в файл настроек zabbix_agentd.conf необходимо добавить соответствующие строки. Не забываем сделать резервную копию.

[root@appliance ~]# cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf_backup

Вписываем в самом низу конфига (/etc/zabbix/zabbix_agentd.conf) следующие строки

UserParameter=upload[*],cat /tmp/speedtest.txt | grep Upload | sed 's/ //g' |  cut -d ':' -f2 | grep -o '^[^M]*'
UserParameter=download[*],cat /tmp/speedtest.txt | grep Download | sed 's/ //g' |  cut -d ':' -f2 | grep -o '^[^M]*'

перезапускаем агента забикса

[root@appliance ~]# service zabbix-agent restart
Redirecting to /bin/systemctl restart zabbix-agent.service
[root@appliance ~]#

Проверить работу можно выполнив соответствующие запросы работу

[root@appliance ~]# zabbix_get -s 127.0.0.1 -p 10050 -k 'upload'
16.80
[root@appliance ~]# zabbix_get -s 127.0.0.1 -p 10050 -k 'download'
54.09
[root@appliance ~]#

Переходим к настройкам веб-интерфейса забикса. Открываем “Configurations > Hosts”, выбираем “Zabbix Server” и создаём новый “item”. Настраиваем мониторинг для входящего трафика. Заполняем поля согласно картинки.

Настраиваем мониторинг для исходящего трафика.

Для отображения информации на карте, необходимо выделить два устройства, создать между ними Link и в свойствах метки (Label) добавить следующие строки.

↓ DL: {Zabbix server:download.last(0)} 
↑ UP: {Zabbix server:upload.last(0)}

Если все правильно сделали, необходимо немного подождать и вы увидите примерно следующую картину

Помогла статья? Есть возможность отблагодарить автора

QR Link:

QR Code

Вам может также понравиться...

комментариев 5

  1. Ромашка:

    А зачем так сложно? можно же получать данные speedtest в json и парсить их на стороне заббикс сервера 🙂

  1. 03.04.2021

    […] Система zabbix 5.2, установленная из готового решения. Где брать и как устанавливать готовое решение забикс, можно глянуть в статье: “Мониторинг скорости интернет канала в Zabbix“. […]

  2. 12.04.2021

    […] статье “Мониторинг скорости интернет канала в Zabbix” я настраивал мониторинг пропускной способности […]

  3. 15.09.2021

    […] от статьи “Мониторинг скорости интернет канала в Zabbix” в том, что всё будет настроено на основе шаблона и […]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *