O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Usa SNMP
para obter os dados de diferentes dispositivos. Uma variedade de dispositivos são suportados no LibreNMS, como Cisco, Linux, FreeBSD, Juniper, Brocade, Fundição, HP e muitos mais. Suporta vários mecanismos de autenticação e suporta autenticação de dois fatores. Tem um sistema de alerta personalizável que pode alertar o administrador da rede via e-mail, IRC ou folga.
Pré-requisitos
- Uma instância do servidor Site & Site Ubuntu 16.04.
- Um usuário sudo .
Para este tutorial, usaremos nms.example.com
como o nome de domínio apontado para a instância do Vultr. Por favor, certifique-se de substituir todas as ocorrências do nome do domínio de exemplo com o atual.
Atualize seu sistema básico usando o guia Como atualizar o Ubuntu 16.04 . Depois que seu sistema tiver sido atualizado, prossiga para instalar as dependências.
Instale o Nginx e o PHP
O front end do LibreNMS é escrito em PHP, portanto, precisaremos instalar um servidor web e PHP. Neste tutorial, instalaremos o Nginx junto com o PHP 7.2 para obter segurança e desempenho máximos.
Instale o Nginx.
sudo apt -y install nginx
Inicie o Nginx e ative-o para iniciar na inicialização automaticamente.
sudo systemctl start nginx
sudo systemctl enable nginx
Adicione e ative o repositório Remi, pois o repositório apt padrão contém uma versão mais antiga do PHP.
sudo add-apt-repository --yes ppa:ondrej/php
sudo apt update
Instale o PHP versão 7.2 junto com os módulos requeridos pelo LibreNMS.
sudo apt -y install php7.2 php7.2-cli php7.2-common php7.2-curl php7.2-fpm php7.2-gd php7.2-mysql php7.2-snmp php7.2-mbstring php7.2-xml php7.2-zip zip unzip
Abra o arquivo de configuração carregado em um editor.
sudo nano /etc/php/7.2/fpm/php.ini
Encontre as seguintes linhas.
;cgi.fix_pathinfo=1
;date.timezone =
Descomente e use esses valores, substitua Asia/Kolkata
pelo fuso horário local.
cgi.fix_pathinfo=0
date.timezone = Asia/Kolkata
Você também precisará alterar o fuso horário do sistema executando o seguinte comando.
sudo ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime
Reinicie o PHP-FPM.
sudo systemctl restart php7.2-fpm
Instale o MariaDB
MariaDB é uma bifurcação de código aberto do MySQL. Adicione o repositório do MariaDB em seu sistema, pois o repositório padrão do Ubuntu contém uma versão mais antiga do MariaDB.
sudo apt-key adv --yes --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mariadb.biz.net.id/repo/10.2/ubuntu xenial main'
sudo apt update
Instale o MariaDB. Durante a instalação, o instalador irá pedir a senha do root
usuário do MySQL . Forneça uma senha forte.
sudo apt -y install mariadb-server
Antes de começarmos a usar o MariaDB, precisamos ajustar um pouco a configuração. Abra o arquivo de configuração.
sudo nano /etc/mysql/conf.d/mariadb.cnf
Adicione o seguinte código ao final do arquivo.
[mysqld]
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0
Reinicie o MariaDB e permita que ele inicie automaticamente no momento da inicialização.
sudo systemctl restart mariadb.service
sudo systemctl enable mariadb.service
Antes de configurar o banco de dados, você precisará proteger a instância do MariaDB.
sudo mysql_secure_installation
Você será perguntado pela senha raiz do MariaDB e, em seguida, será solicitado a alterar a root
senha. Como já definimos uma senha forte para o root
usuário durante a instalação, pule-a respondendo ” N
“. Para todas as outras questões, responda ” Y
“. As perguntas feitas são auto-explicativas.
Faça o login no shell do MySQL como root.
mysql -u root -p
Forneça a senha para o usuário root do MariaDB efetuar login. Execute as seguintes consultas para criar um banco de dados e um usuário do banco de dados para a instalação do LibreNMS.
CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Você pode substituir o nome do banco de dados librenms
e o nome de usuário de librenms
acordo com a sua escolha. Por favor, certifique-se de mudar StrongPassword
para uma senha muito forte.
Instalar o LibreNMS
Além das dependências acima, o LibreNMS precisa de mais algumas dependências.
sudo apt -y install fping git imagemagick jwhois mtr graphviz nmap python-memcache python-mysqldb rrdtool snmp snmpd whois composer
Adicione um novo usuário sem privilégios para o aplicativo LibreNMS.
sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -aG www-data librenms
O LibreNMS pode ser instalado diretamente clonando seu repositório Github.
cd /opt
sudo git clone https://github.com/librenms/librenms.git librenms
Altere a propriedade.
sudo chown librenms:librenms -R /opt/librenms
Instale as dependências do PHP.
cd /opt/librenms
sudo su librenms -c "composer install"
O LibreNMS depende do SNMP para muitas tarefas. Como já instalamos o SNMP, copie o arquivo de configuração de exemplo para sua localização.
sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
Abra o arquivo de configuração no editor.
sudo nano /etc/snmp/snmpd.conf
Encontre esta linha.
com2sec readonly default RANDOMSTRINGGOESHERE
Edite o texto RANDOMSTRINGGOESHERE
e substitua a string da comunidade por qualquer string de sua escolha. Por exemplo.
com2sec readonly default my-org
Lembre-se da string, pois ela será necessária mais tarde quando adicionarmos o primeiro dispositivo SNMP.
O SNMP também precisa de informações sobre a versão de distribuição. Baixe e instale o script para encontrar a versão de distribuição.
sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod +x /usr/bin/distro
Inicie o serviço de daemon SNMP e ative-o para iniciar automaticamente no momento da inicialização.
sudo systemctl enable snmpd
sudo systemctl restart snmpd
Agora você precisará adicionar algumas entradas de crontab para executar as tarefas agendadas. Crie um novo arquivo de trabalho cron.
sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
Reinicie o serviço daemon do cron.
sudo systemctl restart cron
Instalação logrotate
para que os arquivos de log sejam atualizados automaticamente ao longo do tempo.
sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms
Por fim, defina a propriedade e as permissões apropriadas.
sudo chown -R librenms:www-data /opt/librenms
sudo chmod g+w -R /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
Configurações SSL e Nginx VHost
Logins e outras informações enviadas através da interface web do LibreNMS não são seguras se a conexão não for criptografada com SSL. Vamos configurar o Nginx para usar o SSL gerado com o Let’s Encrypt free SSL.
Adicione o repositório do Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Instale o Certbot, que é o aplicativo cliente para o Let’s Encrypt CA.
sudo apt -y install certbot
Nota : Para obter certificados de Let’s Encrypt CA, o domínio para o qual os certificados serão gerados deve estar voltado para o servidor. Caso contrário, faça as alterações necessárias nos registros DNS do domínio e aguarde o DNS se propagar antes de fazer a solicitação de certificado novamente. O Certbot verifica a autoridade do domínio antes de fornecer os certificados.
Gere os certificados SSL.
sudo certbot certonly --webroot -w /var/www/html -d nms.example.com
Os certificados gerados provavelmente serão armazenados no /etc/letsencrypt/live/nms.example.com/
diretório. O certificado SSL será armazenado fullchain.pem
e a chave privada será armazenada como privkey.pem
.
Vamos Criptografar certificados expiram em 90 dias, portanto, é recomendável configurar a renovação automática dos certificados usando um cron job.
Abra o arquivo de trabalho cron.
sudo crontab -e
Adicione a seguinte linha no final do arquivo.
30 5 * * 1 /usr/bin/certbot renew --quiet
O cron acima trabalho será executado a cada segunda-feira às 05:30, hora local. Se o certificado estiver vencido, ele será automaticamente renovado.
Crie um novo host virtual.
sudo nano /etc/nginx/sites-available/librenms
Preencha o arquivo.
server {
listen 80;
server_name nms.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name nms.example.com;
ssl_certificate /etc/letsencrypt/live/nms.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nms.example.com/privkey.pem;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
access_log /opt/librenms/logs/librenms.nginx.access.log;
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:/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Substitua nms.example.com
por seu domínio real na configuração acima.
Ative a configuração recém-criada.
sudo ln -s /etc/nginx/sites-available/librenms /etc/nginx/sites-enabled/librenms
Reinicie o Nginx.
sudo systemctl restart nginx
Instalação usando o WebUI
Para finalizar a instalação, abra https://nms.example.com
em seu navegador favorito. Você verá que os requisitos estão satisfeitos. Forneça os detalhes do seu banco de dados e crie uma nova conta administrativa. Uma vez instalado, você receberá uma mensagem para validar a instalação. Clique no link e faça o login usando a conta de administrador. Você deve ver que tudo, exceto o ” Poller
“, tem um ” Ok
” status.
Agora, clique no link para adicionar um dispositivo. Na Add Device
interface ” “, forneça o nome do host como localhost e deixe tudo como está. Forneça sua string de comunidade no campo da comunidade. Deve ser exatamente a mesma string que você forneceu snmpd.conf
durante a configuração do SNMP.
Depois que o dispositivo for adicionado, você poderá ver os detalhes acessando a Devices
guia ” “. Da mesma forma, você pode adicionar mais dispositivos ao aplicativo LibreNMS para monitoramento “24 horas por dia”.