この疑問に回答します。
システム監視を行うにはNagiosを利用するのが便利です。導入する時しか設定を行わないので、すぐに対応方法を忘れてしまいます。改めてまとめていきます。
NRPE とは
NRPE(Nagios Remote Plugin Executer)とは、Nagiosからリモートホストを監視するためのエージェントです。
nrpeを利用すると、リソース(cpu,メモリ、各サービスの状態など)など監視対象のリモートホストで任意のコマンドを実行し情報を取得することが出来ます。
Nagiosの詳細はこちらをご確認ください。
NRPE のインストール
リポジトリの追加
CentOS 8を利用しています。
最小パッケージでインストールを実施しています。必要なリポジトリの追加を行います。
# dnf -y install epel-release
NRPEの追加
nrpeと必要そうなプラグインをインストールします。
# dnf -y install nrpe nagios-plugins nagios-plugins-disk nagios-plugins-load
NRPEの設定
nrpeは、設定変更する項目が少ないです。
# vi /etc/nagios/nrpe.cfg
allowed_hosts=127.0.0.1,xxx.xxx.xxx.xxx,::1 ← NagiosサーバーのIPを登録します dont_blame_nrpe=1 ← nrpeが引数を受け付ける # この辺りの設定を確認します command[check_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10 command[check_load]=/usr/lib64/nagios/plugins/check_load -r -w .15,.10,.05 -c .30,.25,.20 command[check_hda1]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1 command[check_disk_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda3 command[check_zombie_procs]=/usr/lib64/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_total_procs]=/usr/lib64/nagios/plugins/check_procs -w 150 -c 200
「allowed_hosts」パラメーター
初期設定はアクセス権で、127.0.0.1(自分自身)しかアクセスできないようになっています。
リモート監視を実施するために、
「allowed_hosts」パラメーターにNagiosサーバーのIPを登録します。
「dont_blame_nrpe」パラメーター
また、nrpeは引数で閾値を設定することができます。「dont_blame_nrpe」パラメーターの値を「1」にして有効化します。
「command」パラメーター
監視するリソースを制御するパラメーターです。
commandの[]に指定する文字列(例、check_hda1)は、Nagiosサーバーと合わせる必要があります。
ディスク使用量(check_disk)
# dnf -y install nagios-plugins-disk
利用している環境をdfコマンドを利用し確認します。
# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 389584 0 389584 0% /dev
tmpfs 405244 4 405240 1% /dev/shm
tmpfs 405244 5708 399536 2% /run
tmpfs 405244 0 405244 0% /sys/fs/cgroup
/dev/sda3 28767516 4243788 24523728 15% / ← 「/」ディレクトリの割当てディスク
/dev/sda1 518816 277120 241696 54% /boot
tmpfs 81048 0 81048 0% /run/user/0
私が利用している環境だと「/」はsda3に割り当たっているようです。監視する方法は、sda3を直接指定してもよいのですが毎回設定を行うのが面倒臭いので、私はパーティションを指定します。
# /(ルート)パーティションの空きが20%で警告、10%で異常とする command[check_disk_root]=/usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /
MySQL(check_mysql)
# dnf -y install nagios-plugins-mysql
command[check_mysql]=/usr/lib64/nagios/plugins/check_mysql -H 127.0.0.1 -u root -p [パスワード]
NRPE設定の確認
commandパラメーターに与えた設定をコンソールから実行し動作確認を行います。
# ディスク使用量 # /usr/lib64/nagios/plugins/check_disk -w 20% -c 10% -p /dev/sda3 DISK OK - free space: / 23671 MiB (84.25% inode=99%);| /=4422MiB;22474;25283;0;28093 # MySQLの動作 # /usr/lib64/nagios/plugins/check_mysql -H 127.0.0.1 -u root -p [password] Uptime: 1132831 Threads: 2 Questions: 561 Slow queries: 0 Opens: 210 Flush tables: 3 Open tables: 130 Queries per second avg: 0.000|Connections=194c;;; Open_files=2;;; Open_tables=130;;; Queries=562c;;; Questions=384c;;; Table_locks_waited=0c;;; Threads_connected=1;;; Threads_running=2;;; Uptime=1132831c;;;
NRPE設定の反映
# systemctl start nrpe # systemctl enable nrpe
ファイアーウォール(Firewalld)の設定
Firewalld を有効にしている場合は、nrpe が利用するポートの許可が必要です。
# firewall-cmd --add-port=5666/tcp --permanent # firewall-cmd --reload
Nagios サーバーの設定
nrpeを設定した監視対象を、Nagiosサーバーに登録しリモート監視を実行します。詳細はこちらをご確認ください。
リモート監視対象の追加
Nagiosサーバーに設定を行います。nrpeの設定を行ったリモート監視ホストではありません。
# vi /etc/nagios/servers/[ホスト名].cfg
# 監視するサービス
# ディスク使用量
define service {
use generic-service
host_name [ホスト名]
service_description DISK
check_command check_nrpe!check_disk_root ←「!」以降はNRPE側のcommondで指定した文字列
}
# MySQL
define service{
use generic-service
host_name [ホスト名]
service_description MySQL
check_command check_nrpe!check_mysql
}
# systemctl reload nagios
関連記事 Amazonで【Nagios統合監視リファレンス】をお得に買う方法
以上、「CentOS8 + Nagios NRPEを利用してリモート監視の対象を追加する」という記事でした。