Для роутеров и контроллеров RTU, имеется возможность активировать сбор и отсылку статистики на заданный сервер с помощью демона CollectD.
CollectD — это гибкая и легко масштабируемая программа для Linux-систем, которая собирает системную и пользовательскую информацию с роутеров и отправляет данные на выбранный сервер. Данные отображаются в режиме реального времени через браузер и могут быть использованы для мониторинга производительности системы и прогнозирования нагрузки на систему.
Преимущества сервиса CollectD:
- Легко расширяемое количество собираемых показателей (более 90 плагинов для сбора информации о системе и приложениях);
- Сервис не нагружает систему и не снижает ее производительность.
Данные мониторинга передаются в интерпретатор статистики Graphite, а затем отображаются в виде графиков на дашборде для визуализации метрик.
Существует множество средств для визуализации, но мы выбрали редактор графиков Grafana — красиво оформленный и простой в установке дашборд, который может работать с большим количеством устройств, имеет функцию оповещения и большое количество настроек готовых плагинов.
Сбор метрик
Сбор метрик производится с помощью подключаемых плагинов. По умолчанию сервис настроен на вывод следующих параметров:
- Uptime — Время работы роутера с момента последнего включения.
- 5 min Load — Средняя загрузка процессора.
- CPU Usage — Информация о степени загруженности процессора.
- Memory Usage — Количество свободной и используемой оперативной памяти.
- Processes — Информация о количестве запущенных процессов, в том числе о некорректно закрытых и нагружающих память и процессор роутера.
- Network — Трафик на сетевых интерфейсах.
- Free diskspace — Объем свободного места на диске.
Вывод других показателей можно настроить при установке дополнительных плагинов.
1. Настройка роутера RTU
По умолчанию сбор статистики в роутере отключён. Активировать сбор статистики можно, настроив конфигурационный файл по адресу:
/etc/collectd.conf
Укажите в пункте Hostname
имя, которое будет отображаться на сервере статистики:
Hostname "nameOfHost"
Укажите адрес сервера, куда будет посылаться статистика:
<Plugin network>
Server "111.111.111.111"
</Plugin>
Далее активируйте плагины в этом файле, сняв #
с плагинов LoadPlugin
. Для плагина network
можно указать также порт для соединения. Подробнее о настройке плагина network.
После настроек необходимо перезапустить сервис collectd:
/etc/init.d/collectd restart
Внимание! Важно, чтобы время на ПК и в роутере было синхронизировано.
2. Установка сервера
Настройка будет проводиться на примере системы Ubuntu 16.04 LTS.
2.1 Устанавливаем collectd на сервер:
sudo apt install collectd
Настраиваем collectd, для этого в файле /etc/collectd/collectd.conf
необходимо привести строки к виду:
Hostname "nameOfServer"
FQDNLookup true
BaseDir "/var/lib/collectd"
LoadPlugin network
LoadPlugin write_graphite
<Plugin network>
Listen "111.111.111.111"
</Plugin>
<Plugin write_graphite>
<Carbon>
Host "localhost"
Port "2003"
Prefix "collectd."
StoreRates true
AlwaysAppendDS false
EscapeCharacter "_"
</Carbon>
</Plugin>
2.2 Устанавливаем Graphite:
sudo apt install graphite-web graphite-carbon
Редактируем файл:
sudo nano /etc/graphite/local_settings.py
В нем необходимо указать:
SECRET_KEY = 'ranDomvALuE'
TIME_ZONE = 'Europe/Moscow'
Создаем базу Graphite:
sudo -u _graphite graphite-manage syncdb --noinput
Включаем автозагрузку carbon:
sudo nano /etc/default/graphite-carbon
И задаем:
CARBON_CACHE_ENABLED=true
Настраиваем сохранение метрик:
sudo nano /etc/carbon/storage-schemas.conf
Указываем параметры:
[collectd]
priority = 100
pattern =^collectd\.*
retentions = 30s:7d,10m:2y
Запускаем carbon:
carbon-cache
Устанавливаем nginx:
sudo apt-get install nginx
Приводим файл default к данному виду:sudo nano /etc/nginx/sites-available/default
server {
listen 80;
root /usr/share/graphite-web/;
error_log /var/log/nginx/error.log;
location / {
uwsgi_pass 127.0.0.1:3031;
include uwsgi_params;
add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Methods "GET,OPTIONS";
}
}
Устанавливаем uwsgi:
sudo apt install uwsgi uwsgi-plugin-python
Создаем файл с таким содержанием:
sudo nano /etc/uwsgi/apps-enabled/grafite.ini
[uwsgi]
processes = 2
socket = 127.0.0.1:3031
gid = _graphite
uid = _graphite
wsgi-file = /usr/share/graphite-web/graphite.wsgi
Перезапускаем приложения:
sudo service nginx restart
sudo service uwsgi restart

Graphite имеет минимальную функциональность, для его расширения установим надстройку Grafana, которая имеет:
1. Админ-панель
2. Функцию отправки тревожных уведомлений,
3. Большое количество настроек готовых плагинов и более привлекательный вид.
2.3 Устанавливаем Grafana:
Добавляем репозиторий в /etc/apt/sources.list
:
sudo nano /etc/apt/sources.list
Добавляем в конце файла:
deb https://packagecloud.io/grafana/testing/debian/ jessie main
Сохраняем файл. После этого выполняем:
curl https://packagecloud.io/gpg.key | sudo apt-key add -
sudo apt update
sudo apt install grafana
Создаем и редактируем файл конфигурации для nginx:
sudo nano /etc/nginx/sites-available/grafana
Приводим его к следующему виду:
server {
listen 8090;
root /usr/share/grafana;
index index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Активируем конфигурацию:
sudo ln -s /etc/nginx/sites-available/grafana /etc/nginx/sites-enabled/
Перезапускаем nginx:
sudo service nginx restart
Открываем в браузере http://localhost:3000 (или http://127.0.0.1:3000) и видим интерфейс Grafana.
Логин/пароль: admin/admin
.
В веб-интерфейсе выберите Data Source, затем Add Data Source, укажите имя collectD
, тип Graphite
, URL http://127.0.0.1
, затем Save&Test. Должно появиться поле Success.
Затем необходимо:
- Зайти в
Home
. - Выбрать
Import
, появится окно, нажать кнопкуUpload .json File
. - Выбрать файл с сохраненным представлением метрик
Server_Metrics.json
. - Выбрать имя для дашборда.
- Выбрать источник данных
collectd
.
После этого появятся графики со статистикой с устройств.
3. Передача данных мониторинга через сеть Internet
Для передачи данных мониторинга через сеть Internet необходимо, чтобы на сервере был публичный статический IP адрес, либо проброшен udp-порт от Маршрутизатора с публичным статическим IP до сервера, на котором установлен CollectD.
3.1 На роутере в консоли вводим:
nano /etc/collectd.conf
В поле плагина network добавляем IP сервера с collectd и udp-порт:
Server "<servername_or_ip>" "udp-port"
3.2 На сервере добавляем в /etc/collectd/collectd.conf
строку в плагине network:
Listen "<ip>" "udp-port"
3.3 На сервере изменяем настройки carbon для прослушивания udp-порта в файле /etc/carbon/carbon.conf
:
ENABLE_UDP_LISTENER = True
3.4 На роутере и сервере перезапускаем collectd:
sudo service collectd restart
На сервере также перезапускаем carbon-cache:
sudo service carbon-cache restart