LibreNMS – Uma Ferramenta de Monitoramento de Rede Completa para Linux

O LibreNMS é um sistema de monitoramento de rede de código aberto, poderoso e rico em recursos, baseado em PHP e com descoberta automática, que utiliza o protocolo SNMP. Ele suporta uma ampla gama de sistemas operacionais, incluindo Linux, FreeBSD, bem como dispositivos de rede, incluindo Cisco, Juniper, Brocade, Foundry, HP e muitos outros.

Recursos do LibreNMS:

  1. Ele descobre automaticamente toda a rede usando estes protocolos: CDP, FDP, LLDP, OSPF, BGP, SNMP e ARP.
  2. Ele possui uma interface Web amigável para dispositivos móveis, com painéis personalizáveis.
  3. Suporta um agente Unix.
  4. Suporta escalabilidade horizontal para expandir com sua rede.
  5. Suporta um sistema de alerta altamente flexível e personalizável; envia notificações por e-mail, irc, slack e muito mais.
  6. Suporta uma API para gerenciar, representar graficamente e recuperar dados do seu sistema.
  7. Oferece um sistema de faturamento de tráfego.
  8. Também suporta aplicativos Android e iOS que oferecem funcionalidades principais.
  9. Suporta integração com NfSen, collectd, SmokePing, RANCID e Oxidized.
  10. Suporta múltiplos métodos de autenticação, como MySQL, HTTP, LDAP, Radius e Active Directory.
  11. Permite atualização automática e muitos outros recursos.

Uma demonstração online está disponível para você experimentar antes de instalar o LibreNMS em sistemas Linux.

Demo URL: https://demo.librenms.org/
Username: demo
Password: demo

Ambiente de Teste:

  1. Ubuntu 16.04 com LEMP Stack
  2. CentOS 7 com LEMP Stack

Neste tutorial, aprenderemos como instalar a Ferramenta de Monitoramento de Rede LibreNMS em um sistema Ubuntu ou CentOS Linux recém-instalado (as mesmas instruções também funcionam em distribuições baseadas em Debian e RHEL).

NOTA: Todas as instruções neste artigo devem ser executadas como usuário root, se não estiver, use o comando sudo para obter privilégios de usuário root.

Passo 1: Instalar Pacotes Necessários

1. Comece instalando todos os pacotes necessários usando o gerenciador de pacotes padrão, conforme mostrado.

No Ubuntu/Debian

$ sudo apt install composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php7.0-cli php7.0-curl php7.0-fpm php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-snmp php7.0-xml php7.0-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

No CentOS/RHEL

# yum install epel-release
# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# yum install composer cronie fping git ImageMagick jwhois mariadb mariadb-server mtr MySQL-python net-snmp net-snmp-utils nginx nmap php72w php72w-cli php72w-common php72w-curl php72w-fpm php72w-gd php72w-mysql php72w-process php72w-snmp php72w-xml php72w-zip python-memcached rrdtool

2. Depois que todos os pacotes estiverem instalados, os serviços nginx, php-fpm, mariadb e snmp serão iniciados e habilitados para iniciar automaticamente durante a inicialização (isso é normalmente o caso do Ubuntu), caso contrário, você pode executar os comandos abaixo para iniciá-los e habilitá-los.

------------ On Debian/Ubuntu ------------ 
$ sudo systemctl nginx start php7.0-fpm mysql snmp 
$ sudo systemctl enable nginx php7.0-fpm mysql snmp

------------ On CentOS/RHEL ------------ 
# systemctl nginx start php-fpm mariadb snmpd 
# systemctl enable nginx php-fpm mariadb snmpd

Passo 2: Instalar a Ferramenta de Monitoramento LibreNMS

3. Em seguida, crie um usuário do sistema chamado librenms, com o comando useradd; onde a flag -M desabilita a criação do diretório home do usuário, e -r habilita a criação de uma conta de sistema. Em seguida, adicione o usuário librenms ao grupo www-data (no Ubuntu) ou nginx (no CentOS) da seguinte forma.

------------ On Debian/Ubuntu ------------ 
$ sudo useradd librenms -d /opt/librenms -M -r
$ sudo usermod -a -G librenms www-data   

------------ On CentOS/RHEL ------------ 
# useradd librenms -d /opt/librenms -M -r
# usermod -a -G librenms nginx           

4. Em seguida, instale o LibreNMS via comando composer conforme mostrado.

------------ On Debian/Ubuntu ------------ 
$ cd /opt
$ sudo composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

------------ On CentOS/RHEL ------------ 
# cd /opt
# composer create-project --no-dev --keep-vcs librenms/librenms librenms dev-master

Passo 3: Criar Banco de Dados do LibreNMS

5. Antes de começar a usar o servidor MariaDB, você precisa garantir a segurança da sua instalação, execute o script de segurança fornecido no pacote binário. Ele pedirá para definir uma senha de root, remover usuários anônimos, desabilitar login remoto de root e remover o banco de dados de teste.

Você pode iniciar o script emitindo o comando abaixo e responder todas as perguntas com yes/y.

$ sudo mysql_secure_installation   [On Debian/Ubuntu]
# mysql_secure_installation        [On CentOS/RHEL]

6. Em seguida, faça login no banco de dados do MariaDB para criar um banco de dados para o LibreNMS (lembre-se de usar uma senha forte/segura em um ambiente de produção).

$ sudo mysql -u root -p
MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> CREATE USER 'librenms'@'localhost' IDENTIFIED BY '=@!#@%$libre';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

7. Depois, desabilite o modo estrito do MySQL por enquanto (a compatibilidade com o modo estrito do MySQL ainda não foi adicionada).

$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu]
# vi /etc/my.cnf        [On CentOS/RHEL]

Dentro da seção [mysqld] por favor adicione.

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

Em seguida, reinicie o servidor de banco de dados para aplicar as alterações.

$ sudo systemctl restart mysql     [On Debian/Ubuntu]
# systemctl restart mariadb        [On CentOS/RHEL]

Passo 4: Configurar e Iniciar o PHP-FPM

8. Em seguida, defina o seu date.timezone no arquivo php.ini para o fuso horário atual, por exemplo “África/Kampala”, conforme mostrado na captura de tela a seguir.

------------ On Debian/Ubuntu ------------ 
$ sudo vim /etc/php/7.0/fpm/php.ini
$ sudo vim /etc/php/7.0/cli/php.ini

------------ On CentOS/RHEL ------------ 
# vi /etc/php.ini
Set Time Zone in PHP File

9. Em seguida, habilite o módulo PHP mcrypt no Ubuntu e reinicie o php-fpm conforme mostrado.

------------ On Debian/Ubuntu ------------ 
$ sudo phpenmod mcrypt
$ sudo systemctl restart php7.0-fpm

10. No CentOS/RHEL, você precisa fazer as seguintes alterações no arquivo de configuração do php-fpm.

# vi /etc/php-fpm.d/www.conf

Faça as seguintes alterações.

;user = apache
user = nginx

group = apache   ; keep group as apache

;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php7.2-fpm.sock

listen.owner = nginx
listen.group = nginx
listen.mode = 0660

11. Reinicie o serviço php-fpm conforme mostrado.

# systemctl restart php-fpm

Passo 5: Configurar o Nginx para o LibreNMS

12. Neste passo, você precisa configurar um bloco de servidor Nginx para o librenms para acessar a interface web. Crie um arquivo .conf para ele conforme mostrado.

$ sudo vim /etc/nginx/conf.d/librenms.conf     [On Debian/Ubuntu]
# vi /etc/nginx/conf.d/librenms.conf           [On CentOS/RHEL]         

Adicione o seguinte config, edite server_name conforme necessário.

server {
 listen      80;
 server_name librenms.example.com;
 root        /opt/librenms/html;
 index       index.php;

 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;
 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.0-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

13. Em seguida, salve e saia do arquivo. Também remova a configuração do bloco de servidor padrão e reinicie o servidor Nginx.

------------ On Debian/Ubuntu ------------ 
$ sudo rm /etc/nginx/sites-enabled/default
$ sudo systemctl restart nginx

------------ On CentOS/RHEL ------------ 
# systemctl restart nginx

NOTA: No CentOS/RHEL, você precisará desativar a seção do site padrão, se este for o único site que você está hospedando. Exclua a seção do servidor do arquivo /etc/nginx/nginx.conf.

14. Também no CentOS/RHEL, você precisa instalar a ferramenta de política para o SELinux e configurar os contextos necessários pelo LibreNMS usando os comandos a seguir.

------------ On CentOS/RHEL ------------ 
# yum install policycoreutils-python
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/logs(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/logs(/.*)?'
# restorecon -RFvv /opt/librenms/logs/
# semanage fcontext -a -t httpd_sys_content_t '/opt/librenms/rrd(/.*)?'
# semanage fcontext -a -t httpd_sys_rw_content_t '/opt/librenms/rrd(/.*)?'
# restorecon -RFvv /opt/librenms/rrd/
# setsebool -P httpd_can_sendmail=1
# setsebool -P httpd_execmem 1

15. Permitir fping criando o arquivo http_fping.tt com o seguinte conteúdo.

On CentOS/RHEL
module http_fping 1.0;

require {
type httpd_t;
class capability net_raw;
class rawip_socket { getopt create setopt write read };
}

#============= httpd_t ==============
allow httpd_t self:capability net_raw;
allow httpd_t self:rawip_socket { getopt create setopt write read };

16. Em seguida, execute esses comandos.

------------ On CentOS/RHEL ------------ 
# checkmodule -M -m -o http_fping.mod http_fping.tt
# semodule_package -o http_fping.pp -m http_fping.mod
# semodule -i http_fping.pp

17. Se estiver usando Firewall no CentOS/RHEL, habilite o acesso HTTP/HTTPS através do firewall.

------------ On CentOS/RHEL ------------ 
# firewall-cmd --zone public --add-service http
# firewall-cmd --permanent --zone public --add-service http
# firewall-cmd --zone public --add-service https
# firewall-cmd --permanent --zone public --add-service https

Passo 6: Configurar SNMPD para o LibreNMS

18. Agora use a configuração SNMP de exemplo para criar seu arquivo de configuração e abra-o para edição, conforme a seguir.

------------ On Debian/Ubuntu ------------ 
$ sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
$ sudo vim /etc/snmp/snmpd.conf

------------ On CentOS/RHEL ------------ 
# cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
# vi /etc/snmp/snmpd.conf

Encontre a string RANDOMSTRINGGOESHERE e altere para sua própria string de comunidade, como mostrado na captura de tela.

Set SNMP String

19. Em seguida, baixe um script shell em seu sistema, que ajuda a detectar qual sistema operacional e se é Linux, então detectará qual distribuição Linux você está usando:

------------ On Debian/Ubuntu ------------ 
$ sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
$ sudo chmod +x /usr/bin/distro
$ sudo systemctl restart snmpd

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

Passo 7: Criar Cron e Configurar Logrotate

20. Agora execute o comando abaixo para configurar um trabalho cron para o LibreNMS.

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

21. Em seguida, todos os logs do LibreNMS são registrados em /opt/librenms/logs, você precisa configurar esses logs para serem rotacionados automaticamente, usando o arquivo de configuração do logrotate fornecido, assim.

# cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

Em seguida, defina as permissões apropriadas no diretório raiz da instalação do LibreNMS e nos arquivos de log.

------------ On Debian/Ubuntu ------------
$ sudo chown -R librenms:librenms  /opt/librenms
$ sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
$ sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

------------ On CentOS/RHEL ------------ 
# chown -R librenms:librenms /opt/librenms
# setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs
# setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs

Passo 8: Acessar o Instalador Web do LibreNMS

22. Em seguida, use a seguinte URL para acessar o instalador web e siga as instruções na tela.

http://librenms.tecmint.lan/install.php

Para que este endereço funcione em uma máquina local, você precisa configurar um DNS local usando o arquivo hosts (/etc/hosts), para resolução de domínio local ou para fins de teste antes de ir ao ar.

192.168.43.31 tecmint.lan
192.168.43.31 librenms.tecmint.lan
Setup Local DNS for Domain

23. Você verá a página de boas-vindas à instalação conforme mostrado na captura de tela a seguir, clique em Próxima Etapa para continuar.

LibreNMS Web Installer

24. Em seguida, insira as configurações (host do banco de dados, porta, nome de usuário e senha do usuário) para o banco de dados do LibreNMS e clique em Próxima Etapa para prosseguir.

LibreNMS Database Settings

25. O instalador web agora começará a importar o banco de dados MySQL, isso levará algum tempo. Observe que o processo tentará pausar em certos pontos, basta clicar em Tentar Novamente para continuar com o processo de importação.

LibreNMS Database Importing

26. Assim que a importação do banco de dados estiver completa, você deverá ver a mensagem “Banco de dados está atualizado!”, conforme mostrado na captura de tela abaixo. Em seguida, clique em Ir para Adicionar Usuário para prosseguir.

LibreNMS Database Updated

27. Em seguida, adicione um usuário do LibreNMS, especifique nome de usuário, senha e e-mail, e clique em Adicionar Usuário para efetuar as alterações.

Add LibreNMS User

28. Agora clique em criar a configuração do LibreNMS para o seu sistema, clicando em Gerar Configuração.

Generate Librenms Config
LibreNMS Configuration

29. Assim que a configuração for gerada, conforme mostrado na captura de tela anterior, copie-a e salve-a no diretório raiz da sua instalação, em um arquivo chamado /opt/librenms/config.php.

# vi /opt/librenms/config.php
LibreNMS Configuration
<?php
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!

### Database config
$config['db_host'] = 'localhost';
$config['db_port'] = '3306';
$config['db_user'] = 'librenms';
$config['db_pass'] = '=@!#@%$libre';
$config['db_name'] = 'librenms';
$config['db_socket'] = '';

// This is the user LibreNMS will run as
//Please ensure this user is created and has the correct permissions to your install
$config['user'] = 'librenms';

### Locations - it is recommended to keep the default
#$config['install_dir']  = "/opt/librenms";

### This should *only* be set if you want to *force* a particular hostname/port
### It will prevent the web interface being usable form any other hostname
#$config['base_url']        = "http://librenms.company.com";

### Enable this to use rrdcached. Be sure rrd_dir is within the rrdcached dir
### and that your web server has permission to talk to rrdcached.
#$config['rrdcached']    = "unix:/var/run/rrdcached.sock";

### Default community
$config['snmp']['community'] = array("public");

### Authentication Model
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth

### List of RFC1918 networks to allow scanning-based discovery
#$config['nets'][] = "10.0.0.0/8";
#$config['nets'][] = "172.16.0.0/12";
#$config['nets'][] = "192.168.0.0/16";

# Update configuration
#$config['update_channel'] = 'release';  # uncomment to follow the monthly release channel
#$config['update'] = 0;  # uncomment to completely disable updates

30. Salve e feche o arquivo. Em seguida, retorne ao instalador da web para continuar com o processo de instalação, clicando em Concluir Instalação.

Finish LibreNMS Installation

31. Agora que a instalação do seu LibreNMS está completa, você pode clicar em “validar sua instalação e corrigir quaisquer problemas”, a página de login deve aparecer.

Validate LibreNMS Install

32. Em seguida, insira suas credenciais de usuário para acessar a página de validação.

LibreNMS Login Page

33. No processo de validação da instalação, o LibreNMS descobriu dois problemas, um é que os dispositivos não foram adicionados (isso é um aviso por enquanto), e em segundo lugar, não definimos a permissão apropriada no arquivo de configuração (/opt/librenms/config.php) que foi adicionado manualmente, como mostrado na captura de tela abaixo.

LibreNMS Permission Issues

Agora execute o seguinte comando para definir a permissão correta no arquivo de configuração.

$ sudo chown -R librenms:librenms /opt/librenms/config.php 

34. Para adicionar dispositivos, vá para: http://librenms.tecmint.lan/addhost. Após adicionar dispositivos, você pode ir para a página inicial e adicionar vários painéis.

LibreNMS Dashboard

É isso! Você pode encontrar mais informações, incluindo instalação e configuração, na Documentação do LibreNMS em https://docs.librenms.org/.

LibreNMS é um sistema de monitoramento de rede completo que suporta uma variedade de hardware de rede. Esperamos que este tenha sido um guia de instalação lúcido, se tiver alguma dúvida, entre em contato conosco através do formulário de feedback abaixo.

Source:
https://www.tecmint.com/install-librenms-monitoring-on-ubuntu-centos/