CentOS 7でLibreNMSを使用してデバイスを監視する

LibreNMSは、フル機能のオープンソースネットワーク監視システムです。SNMPさまざまなデバイスからデータを取得するために使用します。LibreNMSでは、Cisco、Linux、FreeBSD、Juniper、Brocade、Foundry、HPなど、さまざまなデバイスがサポートされています。複数の認証メカニズムをサポートし、2要素認証をサポートします。それは、電子メール、IRCまたはスラックを介してネットワーク管理者に警告できるカスタマイズ可能な警告システムを備えています。

前提条件

このチュートリアルではnms.example.com、Vultrインスタンスを指すドメイン名としてを使用します。例のドメイン名をすべて実際のドメイン名に置き換えてください。

CentOS 7のアップデート方法ガイドを使用して、ベースシステムをアップデートします。システムが更新されたら、依存関係のインストールに進みます。

NginxとPHPをインストールする

LibreNMSのフロントエンドは基本的にPHPで記述されているため、WebサーバーとPHPをインストールする必要があります。このチュートリアルでは、最大のセキュリティとパフォーマンスを得るために、PHP 7.2とともにNginxをインストールします。

Nginxをインストールします。

sudo yum -y install nginx

Nginxを起動し、起動時に自動的に起動するようにします。

sudo systemctl start nginx
sudo systemctl enable nginx

デフォルトのYUMリポジトリには古いバージョンのPHPが含まれているため、Remiリポジトリを追加して有効にします。

sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum -y install yum-utils
sudo yum-config-manager --enable remi-php72

LibreNMSに必要なモジュールと共にPHPバージョン7.2をインストールします。

sudo yum -y install php php-cli php-common php-curl php-fpm php-gd php-mcrypt php-mysql php-process php-snmp php-xml php-zip

読み込まれた設定ファイルをエディターでPHPで開きます。

sudo nano /etc/php.ini

次の行を見つけ、コメントを外して、示されているように値を変更します。

;cgi.fix_pathinfo=1
memory_limit = 128M
;date.timezone =

代わりにこれらの値を使用Asia/Kolkataして、ローカルのタイムゾーンに置き換えてください。

cgi.fix_pathinfo=0
memory_limit = -1
date.timezone = Asia/Kolkata

次のコマンドを実行して、システムのタイムゾーンを変更する必要もあります。

sudo ln -sf /usr/share/zoneinfo/Asia/Kolkata /etc/localtime

次に、PHP-FPM構成ファイルを開きます。

sudo nano /etc/php-fpm.d/www.conf

次の行を見つけます。

listen = 127.0.0.1:9000

次の行に置き換えます。

listen = /var/run/php-fpm/php-fpm.sock

デフォルトでは、PHP-FPMはApache Webサーバーユーザー用に構成されています。ユーザーをに変更しますnginx

user = nginx
group = nginx

さらに、次の行のコメントを外します。

listen.owner = nobody
listen.group = nobody

ファイルを保存して、エディターを終了します。PHP-FPMを再起動し、起動時に起動できるようにします。

sudo systemctl restart php-fpm
sudo systemctl enable php-fpm

ソケットファイルに適切な所有権を設定します。

sudo chown nginx:nginx /var/run/php-fpm/php-fpm.sock

MariaDBをインストールする

MariaDBはMySQLのフォークです。MariaDBリポジトリをシステムに追加します。デフォルトのyumリポジトリには、MariaDBの古いバージョンが含まれています。

echo "[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1" | sudo tee /etc/yum.repos.d/mariadb.repo

MariaDBをインストールします。

sudo yum -y install mariadb mariadb-server

次に、MySQL構成ファイルを開きます。

sudo nano /etc/my.cnf

ブロックの最後に次の行を追加します。

[mysqld]
innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

MariaDBを再起動し、起動時に自動的に開始するように有効にします。

sudo systemctl restart mariadb
sudo systemctl enable mariadb

データベースを設定する前に、まずMariaDBを保護する必要があります。

sudo mysql_secure_installation

現在のMariaDBルートパスワードの入力を求められます。デフォルトでは、MariaDBの新規インストールにはrootパスワードはありません。「Enter」キーを押して続行します。rootMariaDBサーバーのユーザーに強力なパスワードを設定しY、他のすべての質問に " " と答えます。質問は自明です。

MySQLシェルにrootとしてログインします。

mysql -u root -p

MariaDB rootユーザーがログインするためのパスワードを入力します。

次のクエリを実行して、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;

選択に応じて、データベース名librenmsとユーザー名を置き換えることができlibrenmsます。StrongPassword非常に強力なパスワードに変更してください。

LibreNMSをインストールする

上記の依存関係は別として、LibreNMSにはさらにいくつかの依存関係が必要です。実行してインストールします。

sudo yum -y install cronie fping git ImageMagick jwhois mtr MySQL-python net-snmp net-snmp-utils nmap  python-memcached rrdtool

LibreNMSアプリケーションの新しい非特権ユーザーを追加します。

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -a -G librenms nginx

LibreNMSは、Githubリポジトリを複製することで直接インストールできます。

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

所有権を修正します。

sudo chown librenms:librenms -R /opt/librenms

LibreNMSは多くのタスクでSNMPに依存しています。SNMPはすでにインストールされているため、サンプル構成ファイルをその場所にコピーします。

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf

エディターで構成ファイルを開きます。

sudo nano /etc/snmp/snmpd.conf

この行を見つけます。

com2sec readonly  default         RANDOMSTRINGGOESHERE

テキストRANDOMSTRINGGOESHEREを編集し、コミュニティストリングを任意のストリングに置き換えます。例えば。

com2sec readonly  default         my-org

後で最初のSNMPデバイスを追加するときに必要になるため、この文字列を覚えておいてください。

SNMPには、配布バージョンに関する情報も必要です。スクリプトをダウンロードしてインストールし、配布バージョンを見つけます。

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

SNMPデーモンサービスを開始し、起動時に自動的に開始されるようにします。

sudo systemctl enable snmpd
sudo systemctl restart snmpd

次に、スケジュールされたタスクを実行するためにいくつかのcrontabエントリを追加する必要があります。新しいcronジョブファイルを作成します。

sudo nano /etc/cron.d/librenms

ファイルに次のテキストを入力します。

33   */6  * * *   librenms    /opt/librenms/cronic /opt/librenms/discovery-wrapper.py 1
*/5  *    * * *   librenms    /opt/librenms/discovery.php -h new >> /dev/null 2>&1
*/5  *    * * *   librenms    /opt/librenms/cronic /opt/librenms/poller-wrapper.py 16
15   0    * * *   librenms    /opt/librenms/daily.sh >> /dev/null 2>&1
*    *    * * *   librenms    /opt/librenms/alerts.php >> /dev/null 2>&1
*/5  *    * * *   librenms    /opt/librenms/poll-billing.php >> /dev/null 2>&1
01   *    * * *   librenms    /opt/librenms/billing-calculate.php >> /dev/null 2>&1
*/5  *    * * *   librenms    /opt/librenms/check-services.php >> /dev/null 2>&1

cronデーモンサービスを再起動します。

sudo systemctl restart crond

logrotateログファイルが時間の経過とともに自動的に更新されるように設定します。

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

最後に、適切な所有権と権限を設定します。

sudo chown -R librenms:nginx /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

SSLおよびNginx VHost構成

接続がSSLで暗号化されていない場合、LibreNMSのWebインターフェイスを介して送信されるログインおよびその他の情報は保護されません。Let's Encryptの無料SSLで生成されたSSLを使用するようにNginxを設定します。

Let's Encrypt CAのクライアントアプリケーションであるCertbotをインストールします。

sudo yum -y install certbot

証明書を要求する前に、ファイアウォールを通過するポート80443、または標準HTTPHTTPSサービスを許可する必要があります。

sudo firewall-cmd --zone=public --add-service=http --permanent
sudo firewall-cmd --zone=public --add-service=https --permanent
sudo firewall-cmd --reload

Let's Encrypt CAから証明書を取得するには、証明書を生成するドメインをサーバーに向ける必要があります。そうでない場合は、ドメインのDNSレコードに必要な変更を加え、DNSが伝播するのを待ってから、証明書要求を再度行ってください。証明書ボットは、証明書を提供する前にドメイン認証局をチェックします。

SSL証明書を生成します。

sudo certbot certonly --webroot -w /usr/share/nginx/html -d nms.example.com

生成された証明書は、/etc/letsencrypt/live/nms.example.com/ディレクトリに格納される可能性があります。SSL証明書はとして保存されfullchain.pem、秘密鍵はとして保存されprivkey.pemます。

Let's Encrypt証明書は90日で期限切れになるため、cronジョブを使用して証明書の自動更新を設定することをお勧めします。

cronジョブファイルを開きます。

sudo crontab -e

ファイルの最後に次の行を追加します。

30 5 * * 1 /usr/bin/certbot renew --quiet

上記のcronジョブは、毎週月曜日の現地時間の午前5時30分に実行されます。証明書の有効期限が切れる場合、証明書は自動的に更新されます。

新しい仮想ホストを作成します。

sudo nano /etc/nginx/conf.d/nms.example.com.conf

ファイルに入力します。

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

nms.example.com上記の構成で実際のドメインに置き換えます。

Nginxを再起動します。

sudo chown nginx:nginx /var/lib/php/session
sudo systemctl restart nginx

WebUIを使用したインストール

インストールを完了するにはhttps://nms.example.com、お気に入りのブラウザで開きます。要件が満たされていることがわかります。データベースの詳細を入力し、新しい管理アカウントを作成します。インストールが完了すると、インストールを検証するためのメッセージが表示されます。リンクをクリックし、管理者アカウントを使用してログインします。「Poller」以外のすべてに「Ok」ステータスがあることがわかります。

CentOS 7でLibreNMSを使用してデバイスを監視する

次に、リンクをクリックしてデバイスを追加します。" Add Device"インターフェースで、ホスト名をlocalhostとして指定し、すべてそのままにします。コミュニティフィールドにコミュニティストリングを入力します。これはsnmpd.conf、SNMPの構成時に指定したものとまったく同じストリングでなければなりません。

CentOS 7でLibreNMSを使用してデバイスを監視する

デバイスが追加されると、「Devices」タブに移動して詳細を確認できます。

CentOS 7でLibreNMSを使用してデバイスを監視する

同様に、「24時間体制」で監視するために、LibreNMSアプリケーションにさらにデバイスを追加できます。



Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。