В этой статье описаны некоторые дополнительные настройки системы мониторинга сети «LibreNMS». Сама установка описана тут.
Для удобства, все операции выполняются из консоли с правами «root», для этого нужно ввести команду sudo -s
, в противном случае, перед каждым вводом необходимо добавлять «sudo»1)!
По умолчанию, LibreNMS опрашивает устройства каждые 5 минут, предварительно делая проверку доступности. При необходимости, интервал опроса можно снизить до 1 минуты2), но зачастую это не нужно, т.к. это создает дополнительную большую нагрузку на дисковую подсистему сервера мониторинга и более чем достаточно, просто ежеминутно проверять доступность устройства в сети, посредством отправки ICMP-запроса.
su - librenms
nano config.php
добавляем в него параметр «ping_rrd_step» или, если он там уже есть, – правим, сохраняем, закрываем
$config['ping_rrd_step'] = 60;
./scripts/rrdstep.php -h all
exit
nano /etc/cron.d/librenms
и добавляем в нее
* * * * * librenms /opt/librenms/ping.php >> /dev/null 2>&1
systemctl start rrdcached
При желании, немного извратившись, интервал проверки можно снизить до 30 секунд.
Для снижения нагрузки на дисковую подсистему сервера мониторинга, создаваемую RRD при обновлении графиков, крайне желательно настроить RRDCached.
apt update && apt install rrdcached
nano /etc/default/rrdcached
и вносим в нее изменения
DAEMON=/usr/bin/rrdcached WRITE_TIMEOUT=1800 WRITE_JITTER=1800 WRITE_THREADS=4 BASE_PATH=/opt/librenms/rrd/ JOURNAL_PATH=/var/lib/rrdcached/journal/ PIDFILE=/var/run/rrdcached.pid SOCKFILE=/run/rrdcached.sock SOCKGROUP=librenms DAEMON_GROUP=librenms DAEMON_USER=librenms BASE_OPTIONS="-B -F -R"
chown librenms:librenms /var/lib/rrdcached/journal/
systemctl restart rrdcached
su - librenms
и включаем RRDCached в настройках LibreNMS4)
./lnms config:set rrdcached "unix:/run/rrdcached.sock"
Казалось бы, тут все просто, но нет – в официальной документации, по этому вопросу затаилась… ошибка! Но об этом чуть ниже.
Сначала все, как обычно:
su - librenms
./lnms config:set enable_syslog 1 && exit
nano /etc/syslog-ng/conf.d/librenms.conf
и вставляем в нее следующее
source s_net { tcp(port(514) flags(syslog-protocol)); udp(port(514) flags(syslog-protocol)); }; destination d_librenms { program("/opt/librenms/syslog.php" template ("$HOST||$FACILITY||$PRIORITY||$LEVEL||$TAG||$R_YEAR-$R_MONTH-$R_DAY $R_HOUR:$R_MIN:$R_SEC||$MSG||$PROGRAM\n") template-escape(yes)); }; log { source(s_net); source(s_sys); destination(d_librenms); };
сохраняем, закрываем
syslog-ng-ctl reload
и получаем в ответ ошибку
Config reload failed, reverted to previous config
syslog-ng --syntax-only
а он нам ничего не говорит!
systemctl restart syslog-ng
что вызывает ошибку
Job for syslog-ng.service failed because the control process exited with error code.
journalctl -u syslog-ng
мотаем в самый низ и видим белым по черному
Error resolving reference; content='source', name='s_sys', location='/etc/syslog-ng/conf.d/librenms.conf:12:9
nano /etc/syslog-ng/conf.d/librenms.conf
и смотрим на 12-ю строчку
source(s_sys);
source s_net { tcp(port(514) flags(syslog-protocol)); udp(port(514) flags(syslog-protocol)); }; destination d_librenms { program("/opt/librenms/syslog.php" template ("$HOST||$FACILITY||$PRIORITY||$LEVEL||$TAG||$R_YEAR-$R_MONTH> }; log { source(s_net); destination(d_librenms); };
systemctl restart syslog-ng
и наслаждаемся работающей передачей логов в LibreNMS!
Единственный способ, очистить журнал syslog в LibreNMS, не залезая в базу данных, такой:
sudo su - librenms
Вообще, базовая настройка syslog на MikroTik, выглядит так, но все же лучше немного заморочиться и сделать так.
Обсуждение