Инструменты пользователя

Инструменты сайта


raspberry_pi:pi_4_model_b:raspberry_pi_os:librenms:configuration:extensions

Это старая версия документа!


Настройка дополнительных компонентов LibreNMS

В этой статье описаны некоторые дополнительные настройки системы мониторинга сети «LibreNMS». Сама установка описана тут.

:!: Для удобства, все операции выполняются из консоли с правами «root», для этого нужно ввести команду sudo -s, в противном случае, перед каждым вводом необходимо добавлять «sudo»1)!

Быстрая проверка ICMP

По умолчанию, LibreNMS опрашивает устройства каждые 5 минут, предварительно делая проверку доступности. При необходимости, интервал опроса можно снизить до 1 минуты2), но зачастую это не нужно, т.к. это создает дополнительную большую нагрузку на дисковую подсистему сервера мониторинга и более чем достаточно, просто ежеминутно проверять доступность устройства в сети, посредством отправки ICMP-запроса.

  1. Если установлен RRDCached3), его необходимо предварительно остановить

    systemctl stop rrdcached
  2. авторизуемся под пользователем «librenms»

    su - librenms
  3. открываем файл конфигурации

    nano config.php

    добавляем в него параметр «ping_rrd_step» или, если он там уже есть, – правим, сохраняем, закрываем

    $config['ping_rrd_step'] = 60;
  4. обновляем файлы RRD

    ./scripts/rrdstep.php -h all
  5. выходим из пользователя

    exit
  6. открываем конфигурацию Cron для LibreNMS

    nano /etc/cron.d/librenms

    и добавляем в нее

    *    *    * * *   librenms    /opt/librenms/ping.php >> /dev/null 2>&1
  7. запускаем службу RRDCached

    systemctl start rrdcached

При желании, немного извратившись, интервал проверки можно снизить до 30 секунд.

Настройка RRDCached

Для снижения нагрузки на дисковую подсистему сервера мониторинга, создаваемую RRD при обновлении графиков, крайне желательно настроить RRDCached.

  1. Устанавливаем пакет и его зависимости

    apt update && apt install rrdcached
  2. открываем конфигурацию

    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"
  3. меняем группу и владельца

    chown librenms:librenms /var/lib/rrdcached/journal/
  4. перезапускаем для применения новых настроек

    systemctl restart rrdcached
  5. авторизуемся под пользователем «librenms»

    su - librenms

    и включаем RRDCached в настройках LibreNMS4)

    ./lnms config:set rrdcached "unix:/run/rrdcached.sock"

Сбор сообщений syslog

Казалось бы, тут все просто, но нет – в официальной документации, по этому вопросу затаилась… ошибка! Но об этом чуть ниже. Сначала все, как обычно:

  1. авторизуемся под пользователем «librenms»

    su - librenms
  2. включаем поддержку syslog и выходим

    ./lnms config:set enable_syslog 1 && exit
  3. обновляем списки пакетов и устанавливаем syslog-ng5)

    apt update && apt install syslog-ng-core
  4. открываем новую конфигурацию

    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);
    };

    сохраняем, закрываем

  5. перечитываем конфигурацию

    syslog-ng-ctl reload

    и получаем в ответ ошибку

    Config reload failed, reverted to previous config
  6. вызываем синтаксический анализ

    syslog-ng --syntax-only

    а он нам ничего не говорит!

  7. тогда перезапускаем демона

    systemctl restart syslog-ng

    что вызывает ошибку

    Job for syslog-ng.service failed because the control process exited with error code.
  8. открываем журнал

    journalctl -u syslog-ng

    мотаем в самый низ и видим белым по черному

    Error resolving reference; content='source', name='s_sys', location='/etc/syslog-ng/conf.d/librenms.conf:12:9
  9. опять открываем конфигурацию

    nano /etc/syslog-ng/conf.d/librenms.conf

    и смотрим на 12-ю строчку

    source(s_sys);
  10. ищем такой источник выше, не находим, удивляемся и удаляем эту строку из пути лога, в итоге получается, что правильная базовая конфигурация выглядит так

    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);
    };
  11. еще раз перезапускаем демона

    systemctl restart syslog-ng

    и наслаждаемся работающей передачей логов в LibreNMS!

MikroTik

Вообще, базовая настройка syslog на MikroTik, выглядит так, но все же лучше немного заморочиться и сделать так.

1)
К примеру «sudo systemctl status rrdcached».
2)
А предварительную ping-проверку можно вовсе отключить.
3)
См. ниже.
4)
Тоже самое можно сделать через верб интерфейс по пути «Global Settings» → «Poller» → «Datastore: RRDTool» → «Enable rrdcached (socket)», но зачем…
5)
При этом «rsyslog» автоматически удаляется!

Обсуждение

Ваш комментарий:
T E N᠎ U᠎ B J O V F J I W N P M O
 
Последнее изменение: 2023/03/21 12:44 — Николай Солошин