Instalação do LibreNMS no Debian 10, ferramenta de monitoramento de dispositivos


LibreNMS é um monitoramento de rede baseado em PHP/MySQL/SNMP que inclui suporte para uma ampla gama de hardware de rede e sistemas operacionais, incluindo Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP e muitos mais.

LibreNMS é um fork do Observium

Requisitos:

Instalação Debian 10 Limpa

Instale os pacotes necessários

# apt install acl curl composer fping git graphviz imagemagick \
  mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.3-cli \
  php7.3-curl php7.3-fpm php7.3-gd php7.3-json php7.3-mbstring \
  php7.3-mysql php7.3-snmp php7.3-xml php7.3-zip python-memcache \
  python-mysqldb rrdtool snmp snmpd whois python3-pymysql \
  python3-dotenv python3-redis python3-setuptools

Criaremos um usuário librenms

# useradd librenms -d /opt/librenms -M -r
# usermod -a -G librenms www-data

Download LibreNMS

# cd /opt
# git clone https://github.com/librenms/librenms.git

Ajustes as permissões

# chown -R librenms:librenms /opt/librenms
# chmod 770 /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
# setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

Instale dependências de PHP

# su - librenms
$ ./scripts/composer_wrapper.php install --no-dev
$ exit

Configuração do MariaDB

# mariadb -u root

Defina a senha para o usuario root do MariaDB e em seguida crie o banco/usuário
librenms e defina também uma senha para o mesmo, recomendo você gerar uma senha aleatória
em https://senhasegura.remontti.com.br Não esqueção de alterar nas linhas a baixo SENHA_ROOT/SENHA_LIBRENMS

USE mysql;
UPDATE user SET password=PASSWORD('SENHA_ROOT') WHERE User='root';
UPDATE user SET plugin="mysql_native_password";

CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'SENHA_LIBRENMS';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
quit;

Ative o innodb_file_per_table e desative o lower_case_table_names no banco de dados

# vim /etc/mysql/mariadb.conf.d/50-server.cnf

Adicione logo a baixo de “[mysqld]”

[mysqld]
innodb_file_per_table=1
lower_case_table_names=0

Reinicie o serviço

# systemctl  restart mariadb

Altere a memoria limite usada pelo php, bem como tempo de execução, e time zone: https://www.php.net/manual/pt_BR/timezones.php

# sed -i 's/memory_limit = 128M/memory_limit = 256M/' /etc/php/7.3/fpm/php.ini /etc/php/7.3/cli/php.ini
# sed -i 's/max_input_time = 60/max_input_time = 300/' /etc/php/7.3/fpm/php.ini /etc/php/7.3/cli/php.ini
# sed -i 's/;date.timezone =/date.timezone = America\/Sao_Paulo/' /etc/php/7.3/fpm/php.ini /etc/php/7.3/cli/php.ini
# echo 'opcache.enable=1' >> /etc/php/7.3/fpm/conf.d/10-opcache.ini
# echo 'opcache.memory_consumption=256' >> /etc/php/7.3/fpm/conf.d/10-opcache.ini
# systemctl restart php7.3-fpm

NGINX

Remova o arquivo default

# rm /etc/nginx/sites-enabled/default
# vim /etc/nginx/sites-available/librenms.conf

Criaremos um novo arquivo, altere o server_name, se desejar restringir pode desomtar as linhas onde cito.

server {
 listen      80;
 listen      [::]:80;
 server_name librenms.seudominio.com.br 192.168.0.100;
 root        /opt/librenms/html;
 index       index.php;

 # Desmomente para deixar restringido apenas para determinados prefixos
 #allow  192.168.87.0/24;
 #allow  2001:0db8::/32;
 #deny   all;
 #error_page  403   http://www.remontti.com.br;

 charset utf-8;
 gzip on;
 gzip_types text/css application/javascript text/javascript application/x-javascript image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon;

 proxy_read_timeout 300;
 proxy_connect_timeout 300;
 proxy_send_timeout 300;

 location / {
  try_files $uri $uri/ /index.php?$query_string;
 }
 location /api/v0 {
  try_files $uri $uri/ /api_v0.php?$query_string;
 }
 location ~ \.php {
  include fastcgi.conf;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

Crie o link em sites-available e reinicie o nginx

# ln -s /etc/nginx/sites-available/librenms.conf /etc/nginx/sites-enabled/
# systemctl restart nginx

Configurando o snmpd

# mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old
# cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
# chmod 600 /etc/snmp/snmpd.conf

Altere as variáveis para seus valores

# SUA_COMMUNITY="minhacommunity"
# SEU_NOME="Rudimar Remontti"
# SEU_EMAIL="noc@remontti.com.br"
# LOCALIZACAO="Rua RR, Frederico Westphalen/RS, Brasil [-27.334143, -53.420506]"

Agora rodamos o comando que ira trocar alterar as variáveis em /etc/snmp/snmpd.conf

# sed -i "s/RANDOMSTRINGGOESHERE/$SUA_COMMUNITY/" /etc/snmp/snmpd.conf
# sed -i "s/Your Name/$SEU_NOME/" /etc/snmp/snmpd.conf
# sed -i "s/your@email.address/$SEU_EMAIL/" /etc/snmp/snmpd.conf
# sed -i "s/syslocation/#syslocation/" /etc/snmp/snmpd.conf
# sed -i "9i\syslocation $LOCALIZACAO" /etc/snmp/snmpd.conf

Baixa o script de detecção de distro

# curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
# chmod +x /usr/bin/distro
# systemctl restart snmpd

Ajustando rotinas no Cron

# cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
# systemctl  restart cron

Configuração do logrotate

# cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
# logrotate /etc/logrotate.d/librenms --debug
# systemctl restart logrotate

Agora acesse seu servido em seu navegador: “http://librenms.seudominio.com.br/install”

Tenha todos os pré-requisitos

Clique no ícone do banco de dados e preencha os dados do banco com usuário e senha criada anteriormente.

Clique em Build database para ele criar todo seu banco de dados.

Se tudo deu certo clique no ícone da chave

Crie o usuário para acessar seu LibreNMS web

Clique no ícone “v” para finalizar

Um “erro” irá aparecer, não se assuste, ele apenas não conseguiu modificar o /opt/librenms/.env, então copie o conteúdo:

Iremos limpar o arquivo atual, e edite o mesmo

# echo > /opt/librenms/.env
# vim /opt/librenms/.env

Colando as informações copiadas do navegado.

APP_KEY=base64:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxx=

DB_HOST=localhost
DB_DATABASE=librenms
DB_USERNAME=librenms
DB_PASSWORD=SENHA_LIBRENMS

#APP_URL=
NODE_ID=xxxxxxxxxxxxx

Mais uma vez altere as permissões bem como faça alguns ajustes

# chown -R librenms:librenms /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
# chmod -R ug=rwX /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
# cp /opt/librenms/misc/lnms-completion.bash /etc/bash_completion.d/
# ln -s /opt/librenms/lnms /usr/bin/lnms

Logue com librenms e rode o comando:

# su - librenms
$  ./scripts/github-remove -d 
Are you sure you want to delete all modified and untracked files? [y/N] y <<<
$ exit

Finalize

Entre com usuário senha que criou


Adicione seu próprio servidor para monitorar

Valide as configurações

Extra: Plugin Weathermap

# cd /opt/librenms/html/plugins
# git clone https://github.com/librenms-plugins/Weathermap.git
# chown -R librenms:librenms /opt/librenms/html/plugins/Weathermap/
# chmod 775 /opt/librenms/html/plugins/Weathermap/configs
# echo '*/5 * * * * librenms /opt/librenms/html/plugins/Weathermap/map-poller.php' >> /etc/cron.d/librenms

Ative o plugin em OverView ->Plugins -> Plugin Admin

Recomendo a leitura: https://docs.librenms.org/

Gostou? Quer me ajudar? 🙂

Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!

Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.

Fontes:
https://github.com/librenms/librenms
https://docs.librenms.org/Installation/

Rudimar Remontti

Trabalho atualmente como Gerente de Redes em um Provedor de Internet no Rio Grande do Sul.

Você pode gostar...

10 Resultados

  1. Gilda disse:

    Essa ferramenta consome muito HW? Como faço essa otimização?

  2. Vicente Filho disse:

    cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms (Não existe ou não encontrado)

    $ ./scripts/composer_wrapper.php install –no-dev (Exige PHP >=8.1 e não deixa instalar)

  3. Vicente Filho disse:

    Nesse ponto Aqui:
    “./scripts/composer_wrapper.php install –no-dev”

    Esta exigindo PHP >=8.1
    e não sai dai.

    “cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms”
    Não existe ou não encontrado

  4. Geeek disse:

    Poderia completar seu tutorial com o plugin https://github.com/librenms-plugins/Weathermap/blob/master/INSTALL.md
    Acretido que seria muito interessante.

  5. Kiko Nascimento disse:

    Muito massa! Server rodando já. Obrigado.

  6. Miralvo disse:

    boa tarde, depois da instalação deu o erro Fail: Database: incorrect column (notifications/datetime)
    Fail: Database: incorrect column (users/created_at)
    Fail: We have detected that your database schema may be wrong, please report the following to us on Discord (https://t.libren.ms/discord) or the community site (https://t.libren.ms/5gscd):
    Fix:
    Run the following SQL statements to fix.

    SQL Statements
    SET TIME_ZONE=’+00:00′;
    ALTER TABLE `notifications` CHANGE `datetime` `datetime` timestamp NOT NULL DEFAULT ‘1970-01-02 00:00:00’ ;
    ALTER TABLE `users` CHANGE `created_at` `created_at` timestamp NOT NULL DEFAULT ‘1970-01-02 00:00:01’ ;

  7. Rodrigo disse:

    Alguem sabe como mudar de quanto em quanto tempo o sensor faz a leitura ?

  8. Eduardo Alves disse:

    Deu erro pra mim, quando criei o link no diretório sites-enabled, o nginx não reinicio de jeito nenhum

  9. Vagner Carvalho disse:

    Instalação bem tranquila.

    Uma dica em:
    Criaremos um usuário librenms

    Loga com # su -l

    Vlw

  10. Adeilton Junior disse:

    Eu adoro o libre.
    Instalação Limpa e eficaz. Uso a bastante tempo.
    Obrigado por compartilhar.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *