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

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


raspberry_pi:pi_4_model_b:raspberry_pi_os:librenms:configuration:applications

Сбор статистики приложений для LibreNMS

В этой статье собраны настройки для некоторых приложений LibreNMS, используемых лично мной, а также решения проблем и нюансов, которые не описаны в официальной документации, но с которыми столкнулся я.

Этот функционал можно задействовать, или через агента, или через расширения snmpd. Почему-то я остановился на втором варианте… Не помню. :-\

Включение

Все приложения в нормальной ситуации включаются в консоли LibreNMS автоматически после очередного обнаружения, которое выполняется в 33 минуты каждого 6 часа. Можно форсировать это событие, нажав на странице «Device Settings» кнопку «Rediscover device» – тогда обнаружение будет выполнено в течение 5 минут. Если приложение не активируется автоматически, это можно сделать вручную на странице настроек «Applications».

Установка

Все манипуляции проводятся c LibreNMS 23.2.0, установленной на Raspberry Pi 4 Model B под управлением Raspberry Pi OS 11 (bullseye) с правами пользователя «root» (sudo -s). В основном, все они типовые, поэтому базовые действия указаны с комментариями только в пером случае.

Apache

Приложение Apache для LibreNMS

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

    apt install python3-urllib3
  2. скачиваем скрипт

    wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/apache-stats.py -O /etc/snmp/apache-stats.py
  3. добавляем права на запуск

    chmod +x /etc/snmp/apache-stats.py
  4. создаем папку кэша

    mkdir -p /var/cache/librenms/
  5. добавляем в файл конфигурации snmpd

    echo "extend apache /etc/snmp/apache-stats.py" | tee -a /etc/snmp/snmpd.conf >/dev/null
  6. перезапускаем snmpd

    systemctl restart snmpd

Nginx

  1. Базовая настройка, как выше

    wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/nginx -O /etc/snmp/nginx
    chmod +x /etc/snmp/nginx
    echo "extend nginx /etc/snmp/nginx" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd
  2. открываем конфигурацию Nginx

    nano /etc/nginx/sites-enabled/librenms.vhost

    и добавляем в конце секции «server»

    location /nginx-status {
        stub_status on;
        access_log  off;
        allow 127.0.0.1;
        deny  all;
    }
  3. перечитываем конфигурацию

    systemctl reload nginx

Для проверки, можно ввести curl http://localhost/nginx-status, ответ должен быть такой:

root@servos:/home/nikolay# curl http://localhost/nginx-status
Active connections: 1
server accepts handled requests
 93 93 439
Reading: 0 Writing: 1 Waiting: 0

MySQL

  1. Устанавливаем зависимости1)

    apt install php8.2-cli php8.2-mysql

    Приложение MySQL для LibreNMS

  2. создаем файл конфигурации

    nano /etc/snmp/mysql.cnf

    добавляем в него строки, правим, закрываем

    <?php
    $mysql_user = 'root';
    $mysql_pass = 'toor';
    $mysql_host = 'localhost';
    $mysql_port = 3306;

    Последние две можно опустить, если они не отличаются.

  3. далее все, как выше

    wget https://github.com/librenms/librenms-agent/raw/master/snmp/mysql -O /etc/snmp/mysql
    chmod +x /etc/snmp/mysql
    mkdir -p /var/cache/librenms/
    echo "extend mysql /etc/snmp/mysql" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd

OS Updates

Показывает количество ожидающих обновлений.

  1. Стандартные действия

    Приложение OS Updete для LibreNMS
    wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/osupdate -O /etc/snmp/osupdate
    chmod +x /etc/snmp/osupdate
    echo "extend osupdate /etc/snmp/osupdate" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd
  2. добавляем конфигурацию «apt» для периодического автообновления списка пакетов

    echo "APT::Periodic::Update-Package-Lists "1";" > /etc/apt/apt.conf.d/10periodic

PHP-FPM

  1. Стандартные действия

    wget https://github.com/librenms/librenms-agent/raw/master/snmp/phpfpmsp -O /etc/snmp/phpfpmsp
    chmod +x /etc/snmp/phpfpmsp
    echo "extend phpfpmsp /etc/snmp/phpfpmsp" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd
  2. открыть файл конфигурации PHP-FPM

    nano /etc/php/8.2/fpm/pool.d/librenms.conf

    в соответствующем месте раскомментировать или добавить следующее

    pm.status_path = /fpm-status

    и перезапустить PHP-FPM

    systemctl restart php8.2-fpm
  3. открыть файл скрипта

    nano /etc/snmp/phpfpmsp

    и заменить или исправить

    url="http://localhost/fpm-status?full"

Nginx

  • Открыть файл конфигурации

    nano /etc/nginx/sites-enabled/librenms.vhost
  • и в конце секции «server» добавить

    location /fpm-status {
            allow 127.0.0.1;
            deny all;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_pass   unix:/run/php-fpm-librenms.sock;
    }

Apache

  • Открыть файл конфигурации Apache2

    nano /etc/apache2/sites-enabled/librenms.conf
  • и перед закрывающим тегом «</VirtualHost>» добавить

    <LocationMatch "/fpm-status">
    Order Allow,Deny
    Allow from localhost
    ProxyPass unix:/run/php-fpm-librenms.sock|fcgi://localhost/fpm-status
    </LocationMatch>

Приложение PHP-FPM для LibreNMS

Для проверки можно использовать curl http://localhost/fpm-status, ответ должен быть такой:

root@servos:/home/nikolay# curl http://localhost/fpm-status
pool:                 librenms
process manager:      dynamic
start time:           15/Mar/2023:08:20:12 +1000
start since:          206819
accepted conn:        28536
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       2
active processes:     1
total processes:      3
max active processes: 5
max children reached: 160
slow requests:        0

RRDCached

Установка стандартная:

wget https://raw.githubusercontent.com/librenms/librenms-agent/master/agent-local/rrdcached -O /etc/snmp/rrdcached
chmod +x /etc/snmp/rrdcached
echo "extend rrdcached /etc/snmp/rrdcached" | tee -a /etc/snmp/snmpd.conf >/dev/null
systemctl restart snmpd

Вот только… не рабочая!

Приложение RRDCached для LibreNMSДолго пришлось повозиться, т.к. нигде никакие ошибки не появлялись, хотя оно не работало, пока я не вспомнил, что тут есть встроенный отладчик! Хотя и потом пришлось приложить голову, чтобы понять, в чем дело! 8-)

  1. На странице устройства нажимаем три точки справа от шестеренки, далее «Capture»;
  2. переходим на закладку «Poller» и нажимаем «Run»;
  3. ищем поиском (Ctrl+F) «rrd» и…

В моем случае, находим целую группу ошибок, говорящую нам, что скрипт не может подключиться никаким из доступных ему вариантов. Но в одном случае, так и должно быть, т.к. мы не публикуем службу на порту, а вот другая ошибка –

[Errno 13] Permission denied: /var/run/rrdcached.sock

– уже странная, т.к. этот сокет вполне себе используется и проблем, вроде, нет.

Далее, используя отборный русский мат, опытным путем выясняем, что в файле конфигурации RRD

nano /etc/default/rrdcached

нужно настроить «SOCKMODE», дав права для сокета на чтение и запись для «других»2)!

SOCKMODE=0766

SMART

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

    apt install smartmontools
  2. выполняем часть стандартных действий

    wget https://github.com/librenms/librenms-agent/raw/master/snmp/smart -O /etc/snmp/smart

    Приложение SMART для LibreNMS

    chmod +x /etc/snmp/smart
  3. открываем пустой файл конфигурации

    nano /etc/snmp/smart.config

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

    cache=/var/cache/librenms/smart
    smartctl=/usr/bin/env smartctl
    useSN=0
    sda

    Где «useSN», это использование для отображения в консоли LibreNMS серийный номер накопителя (=1) или его символьное название (=0), а «sda», это название накопителя в системе3) – может быть, как коротким «sda», так и полным «/dev/sda» – это влияет на отображение его в консоли LibreNMS соответствующим образом. На каждый отслеживаемый накопитель отдельная строка, подробнее в документации. Касательно кэша, см. ниже.

  4. открываем файл «sudoers» командой

    visudo

    добавляем в него, сохраняем и закрываем

    Debian-snmp ALL=(ALL) NOPASSWD: /etc/snmp/smart, /usr/bin/env smartctl

    Имя пользователя «Debian-snmp» необходимо заменить на то, с правами какого пользователя запускается демон SNMP4).

  5. и опять, как обычно

    echo "extend smart /usr/bin/sudo /etc/snmp/smart" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd

    Отдельно стоит сказать про путь кэша – если отслеживаемых накопителей в системе 1 или 2, то данная настройка не актуальна, т.к. он банально не используется и, главное, этого файла не должно быть5)! Если больше, то крайне желательно добавить в Cron задание, которое будет вне периода выполнения основного скрипта считывать параметры SMART и обновлять (аргумент «-u») их в файле «/var/cache/librenms/smart».

    echo "*/3 * * * * root /etc/snmp/smart -u" | tee -a /etc/cron.d/librenms >/dev/null

    В таком случае, при выполнении опроса устройства, будет использоваться как раз файл кэша, а не оперативный запрос от скрипта.

Systemd

  1. Все стандартно

    wget https://github.com/librenms/librenms-agent/raw/master/snmp/systemd.py -O /etc/snmp/systemd.py
    chmod +x /etc/snmp/systemd.py
    echo "extend systemd /etc/snmp/systemd.py" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd
  2. дополнительно можно создать файл конфигурации

    nano /etc/snmp/systemd.json

    и добавить в него

    {
        "systemctl_cmd": "/bin/systemctl",
        "include_inactive_units": "True"
    }

Raspberry Pi

Данное приложение добавляет специфические для этой платформы данные – температуру CPU и GPU, напряжения ядра и памяти, частоту, кодеки. Оно не отображается в меню настроек устройства «Applications» и в главном меню LibreNMS!Приложение Raspberry Pi для LibreNMS

  1. Базовые действия

    wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/raspberry.sh -O /etc/snmp/raspberry.sh
    chmod +x /etc/snmp/raspberry.sh
    echo "extend raspberry /usr/bin/sudo /bin/sh /etc/snmp/raspberry.sh" | tee -a /etc/snmp/snmpd.conf >/dev/null
    systemctl restart snmpd
  2. дополнительно открываем файл sudoers командой

    visudo

    добавляем в него, сохраняем и закрываем

    Debian-snmp ALL=(ALL) NOPASSWD: /bin/sh /etc/snmp/raspberry.sh

    Имя пользователя «Debian-snmp» необходимо заменить на то, с правами какого пользователя запускается демон SNMP6).


Дисклеймер

  • Использование материалов данной базы знаний разрешено на условиях лицензии, указанной внизу каждой страницы! При использовании материалов активная гиперссылка на соответствующую страницу данной базы знаний обязательна!
  • Автор не несет и не может нести какую либо ответственность за последствия использования материалов, размещенных в данной базе знаний. Все материалы предоставляются по принципу «как есть». Используйте их исключительно на свой страх и риск.
  • Все высказывания, мысли или идеи автора, размещенные в материалах данной базе знаний, являются исключительно его личным субъективным мнением и могут не совпадать с мнением читателей!
  • При размещении ссылок в данной базе знаний на интернет-страницы третьих лиц автор не несет ответственности за их техническую функциональность (особенно отсутствие вирусов) и содержание! При обнаружении таких ссылок, можно и желательно сообщить о них в комментариях к соответствующей статье.
1)
не забываем, исправлять версию PHP на используемую!
2)
Не уверен, что это лучшее решение т.к. даются права для «всех», но оно рабочее!
3)
Посмотреть, какие настройки скрипт считает подходящими, можно запустив «/etc/snmp/smart -g».
4) , 6)
Посмотреть можно командой «ps auxwwww | grep snmpd».
5)
А он появляется, если запустить «/etc/snmp/smart -u», к примеру, для проверки…

Обсуждение

Ваш комментарий:
Z G L D Q R I F I T T X᠎ I B X Q
 
Последнее изменение: 2023/03/25 18:22 — Николай Солошин