パトランプ警子ちゃんと連携できない

いつもお世話になっております。

監視しているインテリハブのポートがダウンした場合に、
パトランプ(警子ちゃんミニDN1000)を点灯させる仕組みを行っております。
参考書やネットにある情報を頼りに行っても正しく動作致しません。
ご支援いただけますでしょうか?

-----------------------------------------------------------
▼できていること

 ?ポートダウンが発生すると、アクションのオペレーションに
  登録したメールの通知はOK(復帰のメールも来る)
 
  メッセージの送信先:グループ″Zabbix administrators″

 ?手動でZabbixサーバから以下のコマンドを実行すとランプは点滅しました。 

  /usr/bin/rsh パトランプのIP -l zabbix ACOP 22000000 -n

▼出来ていないこと

 ポートダウン時、同じアクションのオペレーションに登録した
 メッセージの送信からpatlite.shの呼び出しされない。

 メッセージの送信先 :ユーザ "Patlite"

 パトランプに反応がありません。

-----------------------------------------------------------
■試してみたこと

 ?etc/zabbix/zabbix_agentd.conf内のEnableRemoteCommandsの値を「1」に設定
  設定変更後に、# service zabbix-server restart

 ?パトランプ側に、シェルスクリプトで記述した USER=zabbixの
  zabbixというユーザを作成(ユーザ5として)

■アクションのオペレーション書き方

オペレーションのタイプ :メッセージの送信
メッセージの送信先   :シングルユーザ
次のメディアのみ使用  :- 全て -
ユーザのメディア    :Patlite パトランプIP 1-7,00:00-24:00; NIWAHD
デフォルトのメッセージ :チェックなし
-----------------------------------------------------------
■リモートシェルの書き方
#!/bin/sh

user=zabbix

notclassified=00000000
information=00200000
warning=00200000
average=02200000
high=22000000
disaster=22200000

ipaddress=$1
severity=$3

case $severity in
0)
options=$notclassified;;
1)
options=$information;;
2)
options=$warning;;
3)
options=$average;;
4)
options=$high;;
5)
options=$disaster;;
*)
options=00000000;;
esac

/usr/bin/rsh パトランプIP(固定) -l zabbix ACOP 22000000 -n

※$optionsの値は、固定にしてみたが変わらず

-----------------------------------------------------------

何か見落としていそうなポイントはありますでしょうか?

何卒宜しくお願いします。

 

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。

横から失礼いたします。私もdan106と現在最初と同じような状況で直にコマンドを入力することによってパトライトは点灯するのですがrshスクリプトからでは点灯しません。

上記と違うと点としましては/var/spool/mail/root充てに

***サーバ名** : May 9 11:22:36 : zabbix : ユーザーが sudoers 内にありませ
ん ; TTY=pts/0 ; PWD=/etc/zabbix/alertscripts ; USER=root ; COMMAND=/usr/bin/rsh *IPアドレス* -l zabbix alert 000000

というメッセージがでます。zabbixユーザをsudoers内に入れる手順はないと思うのですがなにか他に改善方法はありますでしょうか?

ユーザー TNK の写真

どのような環境を利用されているのかわかりませんが、利用されて
いるOSやZabbixのバージョン等の情報やインストール方法、そして、
利用されているスクリプトの内容、アクションの設定内容などもお
教えください。

あと「直にコマンドを入力」というのは、具体的に、どのユーザで、
どのようなコマンドと引数で実行されたのでしょうか?
スクリプトの手動起動でも点灯させることができないのですか?

そして、どのようにしてZabbixをインストールされたのかわかりま
せんが、記載頂いたメールの内容を拝見すると、OS上のアカウント
zabbixでsudoを実行しようとされたように見受けられます。

例えば、アクションのスクリプト呼び出しの部分でsudoを付加して
実行するような設定にしていませんか?

ご確認ください。

環境としましては下記になります。

CentOS 6.4
Zabbix 2.2
インストールはRPMを用いてしました。

============================
スクリプト:

#!/bin/sh

user="zabbix"

notclassified=011110
information=011110
warning=011110
average=011110
high=011110
disaster=111111

ipaddress=$1
status=$2
severity=$3

if [ "$status" = "PROBLEM" ]; then
case $severity in
0)
options=$notclassified;;
1)
options=$information;;
2)
options=$warning;;
3)
options=$average;;
4)
options=$high;;
5)
options=$disaster;;
*)
options=000000;;
esac
else
options=000000
fi

rsh #IPアドレス# -l $user alert $options

==================
アクション:

オペレーションのタイプ:メッセージの送信
メッセージの送信先:patlite
次のメディアのみ使用:全て
ユーザのメディア: patlite 【#patliteのIP#(アクセス権限:読込可能) 1-7,00:00-24:00; NIWAHD】
デフォルトのメッセージ :チェックなし

==================

追記ですが先ほどzabbixアカウントをnologinからログインできるように設定変更し
rshコマンドを試してみたところ rcmd: socket: Permission denied と表示されました。
入力したコマンド:rsh IPアドレス -l root alert 100000 (ユーザzabbixでも可)
(上記をrootでログインして入力した場合パトライトはまわります)

以上、大変お手数ですがよろしくお願いします。

ユーザー TNK の写真

rshとだけスクリプトに書かれていますが、どこのパスのrshが実行
されているかをご確認ください。
手元のCentOS 6.5の環境にrshをインストールしたら、/usr/bin/rsh
にインストールされました。

そして、その実行ファイルのパーミッションも確認してみてくださ
い。

ちなみに、私の環境では以下のようになっていました。
-----
$ ls -l /usr/bin/rsh
-rwsr-xr-x. 1 root root 11408 8月 22 20:17 2010 /usr/bin/rsh
$
-----

確認したところ

$ ls -l /usr/bin/rsh
-rwxrwxrwx 1 root root 11408 8月 22 20:17 2010 /usr/bin/rsh

でした。実行ファイルのパーミッションも

$ ls -l patlite.sh
-rwxrwxrwx 1 root root 497 5月 9 14:29 2014 patlite.sh

です。

rshだけでなくフルパス(/usr/bin/rsh)を加えても権限がないと表示されてしまいます。

ユーザー TNK の写真

/usr/bin/rshのパーミッションが正しくないようです。
デフォルトのパーミッションに戻してみてください。

例えば、

 # chmod 4755 /usr/bin/rsh

で戻せると思います。

ありがとうございました!
無事パトライトがzabbixユーザでも回りました。

ユーザー kodai の写真

patlite.shのスクリプトはどこに置かれているでしょう?

メディアタイプで登録したスクリプトは、zabbix_server.confのAlertScriptPathで設定したディレクトリに置く必要があります。
(agent.confのEnableRemoteCommandsはまた別の機能なので1に設定する必要はありません。)

また、スクリプト自体にもzabbixユーザからアクセスでき、かつ実行権限が必要です。

ユーザー dan106 の写真

KODAI様

早速のご回答ありがとうございます。
Linuxの知識が貧弱なので基礎的なことが解っていない点ご容赦下さい。

ご指摘いただいた2点確認しました。
?スクリプトの場所は、confの中に記載されていた場所で間違いなかったです。
?実行ユーザは、ls -l で表示すると

↓権限追加前

-rw-r--r-- 1 root root 415 12月 14 10:45 patlite.sh

上記でしたので、権限を追加しました。

↓権限追加後
-rwxr--r-x 1 root root 415 12月 14 10:45 patlite.sh

これで擬似障害を起こしてみたのですがパトランプは回らずでした。

-----------------------------------------------------

1点確認で、zabbixというユーザの作成が監視サーバの
ユーザとして作成が必要でしょうか?
homeの配下にユーザが無かったので作っていなかった模様。

[root@zabbix home]# ls
admin testuser testuser2 testu

直接コマンドラインから、
/usr/bin/rsh 10.130.100.20 -l zabbix ACOP 22000000 -n
/usr/bin/rsh 10.130.100.20 -l root ACOP 22000000 -n

を実行するとランプは回ったのですが、スクリプトから呼び出す
場合には、ユーザが実在してないといけないのでしょうか?

自分でももう少し試してみたいと思いますがアドバイス頂ければ
助かります。

宜しくお願い致します。

ユーザー YKQT の写真

初めまして。(初めて書き込みします。)

1点確認で、zabbixというユーザの作成が監視サーバの
ユーザとして作成が必要でしょうか?
homeの配下にユーザが無かったので作っていなかった模様。

RPM版でインストールしていれば、zabbixユーザは作成されているはずです。
/etc/passwdに設定されています。

ちなみに、当方もDN1000でパトランプ鳴動を行っていますが、問題なく鳴動できています。
基本的にはdan106様と同様のスクリプトですが、当方の場合は、パトランプ側にzabbixユーザの指定をせずに、
CKIDをDisableにし、
/usr/bin/rsh $ipaddress ACOP $options
で実行しています。
(zabbixユーザ指定でコマンド実行できているので問題無いと思いますが)

後の切り分けとしては、
・シェルスクリプト自体で実行して鳴動するか。
・/usr/bin/rshのパーミッション。
・アクションのデフォルトのメッセージの設定内容。
・メディアタイプのスクリプト名でフルパス指定していないか。
という所でしょうか。(的外れかもしれませんが)

ユーザー dan106 の写真

ご回答いただきありがとうございました。

色々試した中で何とかパトランプを擬似障害時に点灯させることができました。
まだ、すっきりしない点が数点ありアドバイスいただけると幸いです。

■連携できなかった原因(間違っているかもしれませんが。。。)
 
 パトランプ・ZabbixWEB・Linux上のユーザを、整理してみました。

 これまで、ZabbixWEB上には、『patlite』と言うユーザを作り、メディアを付けていましたが、
 パトランプとLinux上にはそのユーザはありませんでした。

 共通して存在していた『admin』というユーザに対し、ZabbixのWEB管理ページからメディアなどを
 紐付けるとランプが光る(patlit.sh)ことを確認しました。

 ▼疑問点?
  やはり、パトランプ・ZabbixWEB画面・Linux上のユーザ この3つには、
  共通したユーザを作らなければならないのでしょうか?

 ▼疑問点?
  パトランプを点灯させるには、スクリプトを呼び出すメディアに紐つくユーザで
  ZabbixWEB画面にログインした状態にしなければなりませんか?
    

 Zabbix統合監視参考書(p.248)には、警告灯を点灯させる専用ユーザを作ることを推奨すると
 ありますので、そのようにしたいと考えています。

■スクリプトに関する疑問点
-------------------------------------------------
[root@zabbix alertscripts]# more patlite.sh
#!/bin/sh]

user=admin

notclassified=00000000
information=00200000
warning=00200000
average=02200000
high=22000000
disaster=22200000

ipaddress=$1
severity=$3

case $severity in
0)
options=$notclassified;;
1)
options=$information;;
2)
options=$warning;;
3)
options=$average;;
4)
options=$high;;
5)
options=$disaster;;
*)
options=00000000;;
esac

/usr/bin/rsh IPアドレス(固定) ACOP $options
-------------------------------------------------
今のスクリプトは、上記のようになっています。

今擬似障害を起こしても復帰させても、*) に飛んでおり、$optionsの中には00000000が入って
しまうようなのですが、上記構文に間違いはありますか?
もしくは、$3 と言う変数(?)に値が正しく入っていない可能性がある?
その場合に考えられることはありますか?

$3 には、トリガーで見える『深刻度』による値が渡されるのだと思います。
『重度の障害』になっているので、$options には、22200000 が入ると
考えていたのですが・・・

長くなり申し訳ないですが何卒宜しくお願いします。

ユーザー TNK の写真

 ▼疑問点?
  やはり、パトランプ・ZabbixWEB画面・Linux上のユーザ この3つには、
  共通したユーザを作らなければならないのでしょうか?

共通したユーザは必要ないと思います。
重要なのは、それぞれのユーザを指定する箇所の関連性を把握する
ことだと思います。

例えば、Zabbix上に「patlite」というユーザを作成して、このユ
ーザにパトランプ呼び出しのメディアを紐付けます。

注意が必要なのは、この「patlite」ユーザには障害が発生したホ
ストの情報を参照する権限が必要であるということです。
各ホストやホストグループに対するアクセス権限は、ユーザグルー
プ毎に行いますので、「patlite」ユーザが所属しているユーザグ
ループの権限を確認してみてください。

初期に登録されている「Admin」ユーザは、Zabbix特権管理者とい
う特殊な権限を持っているので、ユーザグループとして権限はなく
ても、Zabbix上に登録されているすべてのホストに関する情報にア
クセスできるので、別途設定する必要がなかったはずです。

整理すると以下のようになるかと思います。

 ・パトランプには、rshコマンドの引数-lでユーザを指定して鳴
  らすならユーザを登録する
 ・Linux上には、zabbixユーザを登録しておく(ZABBIX-JPのRPM
  利用時は自動で登録される)
 ・Zabbix上には、パトランプ用の「patlite」ユーザを登録する
 ・「patlite」ユーザに監視対象のホストまたはホストグループ
  への参照権限を与える(最低限、読込可能に)

 ▼疑問点?
  パトランプを点灯させるには、スクリプトを呼び出すメディアに紐つくユーザで
  ZabbixWEB画面にログインした状態にしなければなりませんか?

ZabbixのWebフロントエンドにログインしておく必要はありません。

デーモンとしてバックグラウンドで動いているzabbix_serverプロ
セスが自動的に処理するようになってます。
設定が終われば、Webブラウザでアクセスしていなくても、パトラ
ンプを鳴らすことができます。

$3 には、トリガーで見える『深刻度』による値が渡されるのだと思います。
『重度の障害』になっているので、$options には、22200000 が入ると
考えていたのですが・・・

アクションの設定で、メッセージにどのような設定をされていますか?
Zabbixの書籍を参考にされたのであれば、P.248のように
<code>
{TRIGGER.NSEVERITY}
</code>
をメッセージに指定されていますか?

ユーザー dan106 の写真

TNK様・KODAI様・YKQT様
ご回答ありがとうございました。

当方の認識が低かったことでご指摘いただいた内容で
パトランプと連携することが出来ました。

最終的には、TNK様のご指摘の部分が該当し再度設定を
しなおすことで解決致しました。

障害から復帰したときの動きを一点クリアにしておきたいのですが、

?擬似障害を起こす。
?トリガーのステータスが『障害』になる。

 →パトランプが点灯
  パトランプのイベント:2011-12-23 10:57:52 ACOP 22000000 zabbixサーバIP
 →手動でパトランプ点灯OFF
  パトランプのイベント:2011-12-23 10:58:35 スイッチによるアラーム解除
 
?復旧処置をする。
?トリガーのステータスが『正常』になる。

 →パトランプが点灯する
  パトランプのイベント:2011-12-23 10:57:52 ACOP 22000000 zabbixサーバIP

イベントを見ると、トリガーのステータスが『正常』になっても
パトランプ側のイベントには、22000000と言う値で点灯させる
指示が来ています。

正常になったときのトリガーも作らないと、前回の値のまま
パトランプに情報が行ってしまうのでしょうか?

宜しくお願いします。

ユーザー TNK の写真

アクションの設定内の「アクションのコンディション」で、

 トリガーの値 = "障害"

というコンディションは追加されていますか?

恐らくコンディションの設定がされていないために、障害か障害回復
かに関わらず、トリガーの状態変化で呼び出されてしまっているのだ
と思います。

ユーザー dan106 の写真

ご指摘ありがとうございます。

一応、自力解決致しましたが、
TNK様のご指摘の通りで、トリガーのコンディションで
トリガーの名前だけを指定していることが原因でした。

現在は、障害発生時のみにパトランプと連携するようになっております。

いつもご支援頂きありがとうございます。