NRPEとは(Nagios Remote Plugin Executer)の略でリモートホスト側でNgiosのPluginを実行させる仕組みとプロトコルを指すようです。Almalinux8 に NRPEをインストールしようとすると、nagios-plugins-all が必要となり、nagios-plugins-all には perl-utf8-all が必要となる。
root昇格チェックについて
- check_log3を利用する
- /var/log/secure の ログを /var/log/secure2 にも記録させ、/var/log/secure2 をNRPEが監視する
- /var/log/secure2 の logrotate を dailyとし、合わせて seekファイルをクリアする
- NPRE側でコマンドを完成させ、Nagios本体からの変数は受け付けないものとする
- root昇格の文字列は root by とする
- コンソール上から root で直接ログインしたときの uid=0 の文字列は監視対象外とする
NRPEのインストール
たまに、nagios-plugins-all も install perl-utf8-all も dnf インストールできないことがあります。
nagios-plugins-all install perl-utf8-all の エラー対策
# dnf -y install nagios-plugins-all
Last metadata expiration check: 0:15:29 ago on Sun 21 Jan 2024 01:44:58 PM JST.
Error:
Problem: package nagios-plugins-all-2.3.3-6.el8.x86_64 from epel requires nagios-plugins-disk_smb, but none of the providers can be installed
- package nagios-plugins-disk_smb-2.3.3-6.el8.x86_64 from epel requires perl(utf8::all), but none of the providers can be installed
- conflicting requests
- nothing provides perl(Import::Into) needed by perl-utf8-all-0.024-7.el8.noarch from epel
- nothing provides perl(PerlIO::utf8_strict) needed by perl-utf8-all-0.024-7.el8.noarch from epel
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
# dnf -y install perl-utf8-all
Last metadata expiration check: 0:16:09 ago on Sun 21 Jan 2024 01:44:58 PM JST.
Error:
Problem: conflicting requests
- nothing provides perl(Import::Into) needed by perl-utf8-all-0.024-7.el8.noarch from epel
- nothing provides perl(PerlIO::utf8_strict) needed by perl-utf8-all-0.024-7.el8.noarch from epel
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
上記のエラーが出たの場合、迷わずおまじないを使おう。
# dnf --enablerepo=powertools install -y perl-utf8-all
# dnf --enablerepo=powertools install -y nagios-plugins-all
/var/log/secure2 ログの監視設定
# mkdir /etc/nagios/seek
# echo 0 > /etc/nagios/seek/secure.seek
# chmod 666 /etc/nagios/seek/*.seek
# mkdir /etc/nagios/key
# echo 'root by' > /etc/nagios/key/secure.key
# echo 'uid=0' >> /etc/nagios/key/secure.exclude
# chmod 644 /etc/nagios/key/*
# vi /etc/nagios/nrpe.cfg
command[check_log3_secure]=/usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
# systemctl restart nrpe.service
# vi /etc/rsyslog.conf
authpriv.* /var/log/secure2 #この行をsecureの下に追加
# systemctl restart rsyslog
# chown root.nagios /var/log/secure2
# chmod 640 /var/log/secure2
# ll /var/log/secure2
-rw-r----- 1 root nagios 760 Jan 21 20:44 /var/log/secure2
NRPEの動作確認
# /usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
OK: Found 0 lines (limit=1/1): No matches found.|lines=0
※SSHログインしてroot昇格してみる
# /usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
CRITICAL: Found 1 lines (limit=1/1): Jan 21 20:39:22 aq3 su[1188353]: pam_unix(su-l:session): session opened for user root by XXXX(uid=1002)|lines=1
# /usr/lib64/nagios/plugins/check_log3 -c 1 -l /var/log/secure2 -s /etc/nagios/seek/secure.seek -P /etc/nagios/key/secure.key -f /etc/nagios/key/secure.exclude
OK: Found 0 lines (limit=1/1): No matches found.|lines=0
logrotateの設定と確認
# vi /usr/local/bin/seek_reset.sh
#!/bin/bash
dir_path="/etc/nagios/seek/*"
dirs=`find $dir_path -maxdepth 0 -type f -name *.seek`
for dir in $dirs;
do
echo "0" > $dir
done
# chmod 755 /usr/local/bin/seek_reset.sh
# vi /etc/logrotate.d/nrpe
/var/log/secure2 {
missingok
compress
daily
rotate 5
postrotate
sh /usr/local/bin/seek_reset.sh &>/dev/null
/usr/bin/systemctl -s HUP kill rsyslog.service >/dev/null 2>&1 || true
endscript
}
# logrotate -dv /etc/logrotate.conf
上の方まで見てエラーになっていないか確認する reading config file nrpe があればOK
Nagios本体の設定
# vi /etc/nagios/servers/aquila.cfg
define service{
use generic-service
host_name aquila_jp
service_description LOG
normal_check_interval 1
check_command check_nrpe!check_log3_secure
}