カテゴリー : nagios
このカテゴリーの登録数:7件 表示 : 1 - 7 / 7
Aug 30, 2010
nrpe(nagios)のログが、『/var/log/messages』に出ちゃうのを設定変更する。
Jan 15, 2010
Nagios の check_vnc を設定する。
もう少し調べたいけどとりあえず書いとこう。
Nagios の check_vnc
中身は python スクリプトですね。
VNCSnapshot をインストール(解凍して /usr/local/bin にコピー。動作確認 → VNC のスクリーンショットの保存が出来る!!)
で、check_vnc スクリプトを動作させる。ちょっと古くて心配だったけど下記修正で動作する。
こんな感じでエラー。
UNKNOWN: 'vncsnapshot' cannot be found in path. Please install the vncsnapshot program or fix your PATH environment variable
vncsnapshot への PATH が通ってない?
os.environ['PATH'] = '/usr/local/bin' で PATH を設定。
修正箇所
[root@nagios libexec]# diff -Nur check_vnc_org check_vnc
--- check_vnc_org 2010-01-12 17:34:09.000000000 +0900
+++ check_vnc 2010-01-12 17:40:58.000000000 +0900
@@ -43,6 +43,8 @@
__title__ = "Nagios Plugin for VNC"
__version__ = 0.4
+os.environ['PATH'] = '/usr/local/bin'
+
DEFAULT_TIMEOUT = 10
# The standard VNC port
DEFAULT_PORT = 5900
この修正で動作しました。
nagios ユーザで Login してシェルからスクリプトを実行するとエラーなし。nagios ユーザで実行してるつもりなのに、うーん。
スクリプト内で PATH と ユーザを表示するようにちょっと手を加える。
[root@nagios libexec]# diff -Nur check_vnc_org check_vnc
--- check_vnc_org 2010-01-12 17:34:09.000000000 +0900
+++ check_vnc 2010-01-14 11:51:04.000000000 +0900
@@ -26,7 +26,8 @@
CRITICAL = 2
UNKNOWN = 3
-import os
+#import os
+import pwd, os
import re
import sys
import signal
@@ -43,6 +44,8 @@
__title__ = "Nagios Plugin for VNC"
__version__ = 0.4
+#os.environ['PATH'] = '/usr/local/bin'
+
DEFAULT_TIMEOUT = 10
# The standard VNC port
DEFAULT_PORT = 5900
@@ -65,6 +68,9 @@
else:
# This one is intentionally different
print "UNKNOWN: %s" % message
+ print os.environ['PATH']
+ print pwd.getpwuid(os.getuid())[0]
+
sys.exit(UNKNOWN)
と、こんなメッセージが出るので。
UNKNOWN: 'vncsnapshot' cannot be found in path. Please install the vncsnapshot program or fix your PATH environment variable
/sbin:/usr/sbin:/bin:/usr/bin
nagios
PATH → /sbin:/usr/sbin:/bin:/usr/bin
user → nagios
ということらしい。
nagios ユーザはともかく、この PATH ってどこで設定してるんだろうか…。
/etc/rc.d/rc.sysinit の中で定義、
/etc/init.d/functions
# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin"
export PATH
で定義してあるっぽいけどなぁ。
python と PATH 。
あとで調べよう。みんなのPython に載ってるかしら。。
Nov 27, 2009
Nagios の NSCA 監視側設定。
忘れるので書いておこう。
今回は遠隔サーバ(監視するサーバ)の設定です。
※Nagios 本体は tar から コンパイルして /usr/local/nagios にインストール済み。サーバ単体で localhost の監視を出来るのを確認する。
Nagios Addons から NSCA をダウンロード。
解凍
tar zxvf nsca-2.7.2.tar.gz
cd nsca-2.7.2
コンパイル
./configure
make all
インストール
cp src/send_nsca /usr/local/nagios/bin/
chown nagios.nagios /usr/local/nagios/bin/send_nsca
chmod 755 $_
cp sample-config/send_nsca.cfg /usr/local/nagios/etc/
chown nagios.nagios /usr/local/nagios/etc/send_nsca.cfg
chmod 640 $_
nagios 設定
enable_notifications=0
# このサーバからの警告発信を無効にする。
obsess_over_services=1
# 各サービスのチェック後コマンドを実行するオプション。使うコマンドは『ocsp_command』で設定。
ocsp_command=submit_check_result
# 実行するコマンド。『submit_check_result』 というコマンドを『/usr/local/nagios/etc/objects/commands.cfg』 に記載する。
vi /usr/local/nagios/etc/send_nsca.cfg
監視する側と設定を合わせる。
password=heoeoeoeoeojsasldfaas
encryption_method=3
『submit_check_result』 を作成する。 vi /usr/local/nagios/libexec/submit_check_result
#!/bin/sh
central_server="monitor"
# Arguments:
# $1 = host_name (Short name of host that the service is
# associated with)
# $2 = svc_description (Description of the service)
# $3 = state_string (A string representing the status of
# the given service - "OK", "WARNING", "CRITICAL"
# or "UNKNOWN")
# $4 = plugin_output (A text string that should be used
# as the plugin output for the service checks)
#
# Convert the state string to the corresponding return code
return_code=-1
case "$3" in
OK)
return_code=0
;;
WARNING)
return_code=1
;;
CRITICAL)
return_code=2
;;
UNKNOWN)
return_code=-1
;;
[0-2])
return_code=$3
;;
esac
# pipe the service check info into the send_nsca program, which
# in turn transmits the data to the nsca daemon on the central
# monitoring server
/usr/bin/printf "%s\t%s\t%s\t%s\n" "$1" "$2" "$return_code" "$4" | /usr/local/nagios/bin/send_nsca $central_server -c /usr/local/nagios/etc/send_nsca.cfg
『/usr/local/nagios/etc/objects/commands.cfg』に ocsp_command コマンド追加。
###############
# for nsca client
define command{
command_name submit_check_result
command_line /usr/local/nagios/libexec/submit_check_result $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATEID$ '$SERVICEOUTPUT$'
}
###############
引っかかったところ。
mcript-devel インストールしてないのでエラー。
→こんなエラー
[root@chiba_sv src]# /usr/local/nagios/bin/send_nsca -H example.com -c /usr/local/nagios/etc/send_nsca.cfg
Invalid encryption method (3) in config file '/usr/local/nagios/etc/send_nsca.cfg' - Line 64
Client was not compiled with mcrypt library, so encryption is unavailable.
Error: Config file '/usr/local/nagios/etc/send_nsca.cfg' contained errors...
php5-apache2 インストールしてない。( Vine 5.0 )
→ 左のメニューがリンク切れ、表示が変。
ホスト名 localhost から変更しなかったので、監視元サーバに認識されない。
→『/usr/local/nagios/etc/objects/localhost.cfg』のhost_name を監視元サーバと合わせないと、識別されないのでいつまでたっても監視元サーバに認識されない。
参考にさせていただいたサイト。(ありがとうございます!)
雑記録 - Nagios NSCAによる遠隔サーバの内部リソース監視
Jul 03, 2009
LDAP 認証のサーバに nrpe(Nagios 監視)をインストール。
失敗したのを書いておこう。
設定してしばらくは動いてたんですが…。Raid のチェックで突然エラー。
出たエラーは『 Socket timeout after 10 seconds. 』タイムアウトエラーですね。
結果的には認証サーバ(LDAP)に作ったユーザと、ローカルに作ったユーザが重複していました。
以下、トラブルシューティング。
リモートのホストをチェックしてるので試しに Nagios サーバ側から Version を確認する。
$ /usr/local/nagios/libexec/check_nrpe -H 192.168.0.XXX
NRPE v2.12
基本的なところは大丈夫。
$ /usr/local/nagios/libexec/check_nrpe -H 192.168.0.XXX -c check_raid
Socket timeout after 10 seconds.
とするとタイムアウト。
ダメになっているホストで同じように試す。
$ /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12
$ /usr/local/nagios/libexec/check_nrpe -H localhost -c check_raid
Socket timeout after 10 seconds.
同じくエラー。nrpe は問題なさそう。
nagios ユーザに 『 su - nagios 』
同じようにコマンド。
$ /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12
$ /usr/local/nagios/libexec/check_nrpe -H localhost -c check_raid
Socket timeout after 10 seconds.
同じくダメ…。
『 -c check_raid 』の引数に関しては『 /usr/local/nagios/etc/nrpe.cfg 』に
command[check_raid]=sudo /usr/local/nagios/libexec/check_3ware3
設定してあるので。
$ /usr/local/nagios/libexec/check_3ware3
Arrays OK.
あれ?直接なら OK。
いろいろして悩んで。
…。…。(rya
nagios のパスワード設定してないなぁ。と passwd コマンド入力したら、『!!!』
違うユーザのパスワードを変更しますといわれる…。これだ…。(RPG で謎が解けたときの感じ。最近さっぱりやってないけど…。)
ここまでトラブルシューティング
LDAP で運用中のサーバ群に( Nagios の)nrpe をインストール。(ローカルユーザ 『nagios』を『useradd コマンド』で追加。)
このとき LDAP サーバに登録された uid の次の uid でローカルユーザが登録された。(ローカルユーザはほとんどいないので 500 番台で uid がつくと錯覚してた。LDAP サーバは1000番以降で登録されるように設定してある。)
その後、LDAP サーバに『 smbldap-useradd 』コマンドで samba ユーザを追加。
このとき追加された uid はシステム上で重複チェックされないので、重複発生…。
nagios ユーザの uid が重複してたため『 sudo コマンド』が動かなかったようでした。
ぬぅ。
6 台中 2 台だけ発生してたのは、samba 経由で先にログインされたサーバだけエラーになっていました。
nrpe.conf で『command[check_raid]=sudo /usr/local/nagios/libexec/check_3ware3』 の sudo のコマンドの path が通ってなかったのはまた別な話です。><
nagios の uid を空いてる(若い) uid に変更しました。
groupmod -g 502 nagios
usermod -u 501 nagios
usermod nagios -g nagios
chgrp -R nagios /home/nagios/
chown -R nagios.nagios /usr/local/nagios/
わかる人にもわかりにくいエントリだなぁ。
技術系と日記系をわけたほうがいいのかしらと最近思ってます。MT 使おうかな…。仕事でも応用効きそうだし…。
Mar 03, 2008
Ngagios プラグインの書き方
といってもそんなに難しくない。
言語→何でもイイ→bash、Perl、バイナリ( C言語? )とみんないろいろ。
終了コードと、コンソールへの出力がすべて。
と言いきっていいのかと思ってたら、ガイドラインがあった。↓詳しくはこちらを。。
Nagios plug-in development guidelines
コマンドラインから実行した結果を、標準出力に出力するようにコーディング。
ステータス - 出力結果 → 正しくは: ( コロン )区切りらしい。でもみんな結構アバウト。
コマンドラインで実行した時に、複数行で表示しても良いけど、 Nagios のステータス画面では1行目しか見えない。
私が書いたスクリプトは、2行目以降に正常な処理を書いて正常な人は見えないようにしたりしてます。
そして終了コードでステータスを表す。
| 終了コード | ステータス | 意味 |
|---|---|---|
| 0 | Ok | 問題なし |
| 1 | Warning | 警告(致命的じゃない) |
| 2 | Critical | 深刻な障害 |
| 3 | Unknown | 設定ミスなど想定外 |
スクリプトの末尾はこんな感じになる。それぞれの条件分けになると思うので、IF文の最後かな。
…
…
echo -e "エラーメッセージ( なんだか、よくわかんないけどエラーだよ!! )"
exit 3 # 普通は終了コード書かないけど指定する。 unknown なら 3
あ、日本語通るかは試してないです。。わかりやすいように日本語にしてみました。
リンク
http://www.nagios.org/ - Nagios(公式ページ)
http://nagios.x-trans.jp/naija/ - Nagios Infomation Ja(日本語情報ページ)
http://www.nagiosexchange.org/ - Nagios Plugins and Add Ons Exchange
Feb 22, 2008
今やろうと思ってたのに〜。
ということがあった。
詳しく書こうかと思ったけど、ダメージが大きいので…。
先手打っとけば良かったなぁ〜。
最低限書いておこう。。
ssh の
ssh_exchange_identification: Connection closed by remote host.
というエラー。
ぐぐったら、/etc/hosts.allow を見よという情報が多い。
けどサーバの負荷が高くても出ました。
Jan 29, 2008
nagios のプラグイン - check_quota
もうすぐ2月…。
サーバ郡を監視しようと Nagios (Pligin)をインストールしまくってます。(60台近く…。あぁぁぁぁ。)
さらに、メールサーバの user quota を監視したいとおっしゃる…(ry。
スクリプトをゼロから書かないとダメかなぁと思ってたんですが。。探したらありました。
Code はこちら。↓
Nagios Exchange
THX Muthukumar Krithivasan さん
ちょっと改造しました。
改造点
- nagios ユーザで repquota コマンドが使えるように変更(→ sudo 経由で実行されるように visudo して nagios ユーザを追加、スクリプトにも suder を指定するようにした。)
- 出力結果が1行目しか出力されないので出力結果を改行をしないように変更。
しかし、スマートじゃないなぁ。まあいいか。
diff を晒してみる。
# diff -uNr /usr/local/nagios/libexec/check_quota_org /usr/local/nagios/libexec/check_quota
--- /usr/local/nagios/libexec/check_quota_org 2008-01-28 13:03:00.000000000 +0900
+++ /usr/local/nagios/libexec/check_quota 2008-01-29 11:19:20.000000000 +0900
@@ -37,6 +37,9 @@
STATE_UNKNOWN=3
STATE_DEPENDENT=4
+# Commands
+REPQUOTA='/usr/sbin/repquota'
+
print_version() {
echo "$PROGNAME $VERSION $AUTHOR"
}
@@ -89,7 +92,27 @@
WARNUSER=""
CRITUSER=""
PREVUSER=""
-for x in `repquota -a -s`
+
+# set suders
+# visudo add following lines
+#
+# nagios ALL=(ALL) NOPASSWD: /usr/sbin/repquota
+#
+suders='root,nagios'
+who=`whoami`
+
+if [ `expr $suders : ".*$who.*"` -eq 0 ]
+then
+ mesg="UNKNOWN -"
+ exitstatus=$STATE_UNKNOWN
+ msgs='You are not suders. -> See [/usr/local/nagios/libexec/]check_quota source'
+ echo -e "$mesg $msgs"
+ exit $exitstatus
+fi
+
+QUOTA_STATUS=`sudo $REPQUOTA -a -s`
+
+for x in $QUOTA_STATUS
do
if [ "$x" == "+-" ]
then
@@ -115,7 +138,7 @@
mesg="OK"
exitstatus=$STATE_OK
fi
-msgs="CRITUSER : $CRITUSER \nWARNUSER : $WARNUSER \nOKUSERS : $OKUSERS"
+msgs="CRITUSER $CRITUSER / WARNUSER $WARNUSER"
echo -e "$mesg $msgs"
exit $exitstatus
ここに、あとで Nagios Plugin の書き方を書く。
08/02/29 追記
google で『 nagios pligin 書き方 』 で検索すると2番目なんですが、書き方書いてないのに…。
というわけで別エントリで書くつもり。
08/03/03 追記
書いた!!→Ngagios プラグインの書き方
※写真と本文は関係ありません。
nagios で監視してるので、5分おきぐらいで『/var/log/messages』にログが残るのでログを分けたい。
→ xinetd 経由でつかってるので、xinetd でログのファシリティを指定する。
syslogd で出力先ファイル指定。
syslog.conf に『;local2.none』と『local2.*』追加
logrotate.d の nrpe をファイル作成・設定。
# vi /etc/logrotate.d/nrpe /var/log/nrpe { weekly missingok rotate 4 }※logrotate のテスト
# logrotate -dv /etc/logrotate.d/nrpe
出来た!