Начиная с прошивки 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?
Дополнительная информация: