LibreNMS – Linux用の完全機能のネットワーク監視ツール

LibreNMSは、SNMPプロトコルを使用するオープンソースで強力で機能豊富なPHPベースのネットワーク監視システムです。Linux、FreeBSDをはじめとするさまざまなオペレーティングシステムやCisco、Juniper、Brocade、Foundry、HPなどのネットワークデバイスをサポートしています。

LibreNMSの特徴:

  1. CDP、FDP、LLDP、OSPF、BGP、SNMP、ARPなどのプロトコルを使用してネットワーク全体を自動検出します。
  2. モバイルフレンドリーなWeb UIを備え、カスタマイズ可能なダッシュボードを提供します。
  3. Unixエージェントをサポートします。
  4. ネットワークに合わせて拡張するための水平スケーリングをサポートします。
  5. 非常に柔軟でカスタマイズ可能なアラートシステムをサポートし、通知をメール、irc、slackなどで送信します。
  6. システムからデータを管理、グラフ化、取得するためのAPIをサポートします。
  7. トラフィック課金システムを提供します。
  8. また、コア機能を提供するAndroidおよびiOSアプリをサポートしています。
  9. NfSen、collectd、SmokePing、RANCID、Oxidizedとの統合をサポートします。
  10. MySQL、HTTP、LDAP、Radius、Active Directoryなどの複数の認証方法をサポートします。
  11. 自動更新など、多くの機能を提供します。

LinuxシステムにLibreNMSをインストールする前にお試しいただけるオンラインデモが利用可能です。

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

テスト環境:

  1. Ubuntu 16.04 with LEMPスタック
  2. LEMPスタックを備えたCentOS 7

このチュートリアルでは、新しくインストールしたLibreNMSネットワーク監視ツールUbuntuまたはCentOS Linuxにインストールする方法を学びます(同じ手順はDebianおよびRHELベースのディストリビューションでも機能します)。

注意:この記事のすべての手順はrootユーザーとして実行する必要があります。そうでない場合は、sudoコマンドを使用してrootユーザー権限を取得してください。

ステップ1:必要なパッケージをインストールする

1. まず、デフォルトのパッケージマネージャーを使用してすべての必要なパッケージをインストールしてください。表示されるとおりです。

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

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. すべてのパッケージがインストールされると、nginxphp-fpmmariadb、およびsnmpサービスが起動され、ブート時に自動起動するように有効になります(通常はUbuntuの場合)。それ以外の場合は、以下のコマンドを実行して開始および有効化できます。

------------ 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

ステップ2:LibreNMS監視ツールをインストール

3.次に、librenmsというシステムユーザーを作成します。useraddコマンドを使用します。-Mフラグはユーザーのホームディレクトリの作成を無効にし、-rはシステムアカウントの作成を有効にします。次に、librenmsユーザーをwww-dataグループ(Ubuntuで)またはnginxグループ(CentOSで)に追加します。

------------ 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.次に、次のようにしてLibreNMScomposerコマンドでインストールします。

------------ 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

ステップ3: LibreNMSデータベースの作成

5.MariaDBサーバーを使用する前に、インストールをセキュアにする必要があります。バイナリパッケージに含まれているセキュリティスクリプトを実行します。これにより、ルートパスワードの設定、匿名ユーザーの削除、リモートからのルートログインの無効化、テストデータベースの削除が求められます。

以下のコマンドを使用してスクリプトを実行し、すべての質問にyes/yで回答します。

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

6.次に、MariaDBデータベースにログインして、LibreNMS用のデータベースを作成します(本番環境では強力で安全なパスワードを使用してください)。

$ 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.その後、一時的にMySQLの厳格モードを無効にします(MySQLの厳格モードとの互換性はまだ追加されていません)。

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

[mysqld]セクション内に次を追加してください。

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

その後、変更を反映するためにデータベースサーバーを再起動します。

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

ステップ4: PHP-FPMの構成と起動

8. 次に、php.ini内のdate.timezoneを現在のタイムゾーンに設定します。たとえば、“Africa/Kampala”のように設定します。以下のスクリーンショットに示す通りです。

------------ 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. 次に、Ubuntumcrypt PHPモジュールを有効にして、php-fpmを再起動します。以下に示します。

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

10. CentOS/RHELでは、php-fpm設定ファイルで以下の変更を行う必要があります。

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

以下の変更を行います。

;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. 以下に示すように、php-fpmサービスを再起動します。

# systemctl restart php-fpm

ステップ5: LibreNMSのNginxの構成

12. このステップでは、librenmsのためのNginxサーバーブロックを構成してWeb UIにアクセスできるようにします。以下に示すように、そのための.confファイルを作成します。

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

次のconfigを追加し、必要に応じてserver_nameを編集します。

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. 次に、ファイルを保存して終了します。また、デフォルトのサーバーブロック構成を削除し、Nginxサーバーを再起動します。

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

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

注意CentOS/RHELでは、ホストしている唯一のサイトである場合、デフォルトのサイトセクションを無効にする必要があります。/etc/nginx/nginx.confファイルからサーバーセクションを削除します。

14. また、CentOS/RHELでは、以下のコマンドを使用して、SELinux向けにポリシーツールをインストールし、LibreNMSに必要なcontextsを構成します。

------------ 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.ファイルhttp_fping.ttを作成して、fpingを許可します。

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.次に、次のコマンドを実行します。

------------ 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.CentOS/RHELでファイアウォールを使用している場合は、ファイアウォールを介してHTTP/HTTPSアクセスを有効にします。

------------ 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

ステップ6: LibreNMSのためにSNMPDを設定する

18.次に、サンプルのsnmp構成を使用して構成ファイルを作成し、次のように編集します。

------------ 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

Set SNMP String

19.次に、システムにシェルスクリプトをダウンロードします。これによりOSおよびLinuxディストリビューションが検出されます。

------------ 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

ステップ7: Cronを作成およびLogrotateを構成する

20.次に、LibreNMSのcronジョブを設定するために次のコマンドを実行します。

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

21.次に、すべてのLibreNMSログは/opt/librenms/logsに記録され、ログローテーション構成ファイルを使用してこれらのログを自動ローテートする必要があります。

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

次に、LibreNMSインストールルートディレクトリとログファイルに適切な権限を設定します。

------------ 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

ステップ8: LibreNMS Webインストーラにアクセスする

22.次に、次のURLを使用してWebインストーラにアクセスし、画面の指示に従います。

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

このアドレスをローカルマシンで使用するには、ライブ配信前にローカルドメインの解決やテスト目的のために、hostsファイル(/etc/hosts)を使用してローカルDNSを設定する必要があります。

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

23. 次のスクリーンショットに示すように、インストール歓迎ページが表示されます。続行するには次のステージをクリックしてください。

LibreNMS Web Installer

24. 次に、LibreNMSデータベースの設定(データベースホスト、ポート、ユーザー名、ユーザーパスワード)を入力し、次のステージをクリックして続行してください。

LibreNMS Database Settings

25. ウェブインストーラーは今、MySQLデータベースのインポートを開始します。これには時間がかかります。プロセスは特定のポイントで一時停止を試みるので、インポートプロセスを継続するには再試行をクリックしてください。

LibreNMS Database Importing

26. データベースのインポートが完了すると、「データベースが最新に更新されました!」というメッセージが表示されます。次に進むためにユーザー追加に移動をクリックしてください。

LibreNMS Database Updated

27. 次に、LibreNMSユーザーを追加し、ユーザー名、パスワード、メールを指定し、変更を適用するためにユーザーを追加をクリックしてください。

Add LibreNMS User

28. 今、LibreNMSのシステム構成を作成するために構成の生成をクリックしてください。

Generate Librenms Config
LibreNMS Configuration

29. 構成が生成されると、前のスクリーンショットに示すように、それをコピーしてインストールのルートディレクトリに保存し、/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.ファイルを保存して閉じます。その後、インストールプロセスを続行するためにWebインストーラーに戻り、「インストール完了」をクリックしてください。

Finish LibreNMS Installation

31.LibreNMSのインストールが完了しました。”検証を行い問題を修正”をクリックすると、ログインページが表示されます。

Validate LibreNMS Install

32.次に、ユーザー資格情報を入力して検証ページにアクセスしてください。

LibreNMS Login Page

33.インストールの検証プロセスから、LibreNMSは2つの問題を発見しました。1つ目はデバイスが追加されていないこと(現時点では警告)であり、2つ目は手動で追加した構成ファイル(/opt/librenms/config.php)の適切な権限が設定されていないことです。

LibreNMS Permission Issues

以下のコマンドを実行して設定ファイルの適切な権限を設定してください。

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

34.デバイスを追加するには、http://librenms.tecmint.lan/addhostに移動してください。デバイスを追加した後は、ホームページに移動してさまざまなダッシュボードを追加できます。

LibreNMS Dashboard

以上です!https://docs.librenms.org/のLibreNMSドキュメントにインストールおよび設定に関する詳細情報があります。

LibreNMSはさまざまなネットワークハードウェアをサポートするフル機能のネットワーク監視システムです。わかりやすいインストールガイドとなっていれば幸いです。ご質問がある場合は、以下のフィードバックフォームからお問い合わせください。

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