Начиная с прошивки 1.5 для роутеров и контроллеров RTU, присутствует возможность активировать сбор и отсылку статистики на заданный сервер с помощью демона CollectD.

CollectD — это гибкая и легко масштабируемая программа для Linux-систем, которая собирает системную и пользовательскую информацию с роутеров и отправляет данные на выбранный сервер.

Данные отображаются в режиме реального времени через браузер и могут быть использованы для мониторинга производительности системы и прогнозирования нагрузки на систему.


Преимущества сервиса CollectD:
1. Легко расширяемое количество собираемых показателей (более 90 плагинов для сбора информации о системе и приложениях);
2. Сервис не нагружает систему и не снижает ее производительность.


Данные мониторинга передаются в интерпретатор статистики 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>


Далее активируйте плагины в этом файле (сняв # c плагинов 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 (интерпретатор данных, собранных collectd):
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
# точность сохранения метрик. Метрики с полуминутной точностью хранятся - неделю, с 10-минутной - 2 года.


Запускаем carbon:
sudo service carbon-cache start


Устанавливаем 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


В браузере набираем localhost (или 127.0.0.1) и попадаем на сервер сбора статистики Graphite.


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


Может потребоваться перезапустить сервис

sudo /etc/init.d/grafana-server restart


В веб-интерфейсе выберите

Data Source

затем

Add Data Source

указать имя collectD, тип Graphite, url http://127.0.0.1, затем Save&Test.

Должно появиться поле Success.


Затем необходимо:

1. Зайти в Home

2. Затем Import, появится окно, необходимо нажать кнопку Upload .json File

3. Выбрать файл с сохраненным представлением метрик Server_Metrics.json

4. Выбрать имя для дашборда

5. Выбрать источник данных collectd.
После этого появятся графики со статистикой с устройств.


3. Передача данных мониторинга через сеть 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


Сопутствующие статьи:

Как подключиться к роутеру RTU?


Дополнительная информация:

Wiki на GITHUB

Страница роутера на сайте Teleofis

Контроллеры на платформе роутера RTU