いつもお世話になっております。
ZABBIX2.0でトラップによる メール送信アクションを使っていますが、監視対象スイッチに接続されているサーバが夜間に定期リブートされます。 その際に、ポートのダウンアップのトリガーが発生し、メール送信アクションが実行されてしまいます。
トラップに対するアクションを ポート別に スケジュールで 制御したいのですが可能でしょうか?
よろしくお願いいたします。
ポート単位で、定期的にそのポートに関するトリガーを停止すると いうことはZabbixの標準の機能だけでは実現できなかったと思いま す。
ホスト単位でよろしければ、そのホストに対してメンテナンス期間 の設定を行うことで、特定の時間帯内のメール送信を行わないよう に設定することができます。
具体的には、定期的にリブートする時間帯を「メンテナンス期間」 として登録し、アクションの実行条件に、
メンテナンスの状態 期間外 "メンテナンス"
の条件を追加することで実現できます。
お世話になります。
ポート単位で、定期的にそのポートに関するトリガーを停止するということはできないとのことですが、 スケジュールは使わずに、当該ホストの ある特定(いくつか)のポートだけをTrap監視するということはできないでしょうか?
その当該ポートに対するアイテム・トリガーについて、 毎日決まった時間帯だけ「監視していても無意味」となるような再起動処理があるのでしたら トリガーの判定条件の段階で、date 関数や time 関数を用いて 「この時間帯以外の場合だけ、異常判定をする」といった 定義ができるのではないでしょうか?
トラップを受けてしまう→障害として検知してしまう→アクションが発動してしまう→ いかにしてメールを送らないか
ではなく、
トラップを受けてしまう→条件で指定された時間帯ならば障害として扱わない
といったアプローチです。 いかがでしょうか?
トラップを受けてしまう→条件で指定された時間帯なら障害として扱わない
ということですが、その当該ポート以外は、終日監視を続ける必要があるのですが
トラップを受けてしまう→当該ポートのみ、条件で指定された時間帯なら障害として扱わない ということが可能なのでしょうか?
現在の設定では、SNMPTrapを受信する1つのアイテム、それに対応する1つのトリガー、という 状態かと思います
これを、アイテム定義はそのままにしておいて、トリガーの発動条件だけを変更します
host.snmptrapitem.nodata(600)=0
などと定義されているのではないかと勝手に推察していますが、 これに、受信文字列に含まれるOID文字列などで付加条件を加え、2つのトリガーにします
トリガー1:問題のポート以外 host.item.nodata(600)=0 & host.item.regexp("フィルタ文字列") = 0
host.item.nodata(600)=0 & host.item.regexp("フィルタ文字列") = 0
トリガー2:問題のポート専用 例えば 22:30~23:30までを監視対象外とする場合 host.item.nodata(600)=0 & host.item.regexp("フィルタ文字列") = 1 & ( host.item.time < 223000 | host.item.time > 233000 )
host.item.nodata(600)=0 & host.item.regexp("フィルタ文字列") = 1 & ( host.item.time < 223000 | host.item.time > 233000 )
トリガー判定の段階で、特定ポートに対する文字列が見つかった場合だけ、特定時間帯ならば無視する‥といった具合です
基本的なところを理解できていなくて申し訳ありませんが トリガー1、トリガー2の中の どの部分にどういった書式で特定ポートを定義するのか教えていただけないでしょうか?
ifName とか ifIndex とか ifDescr とかありますが、これ以外のものを使用するのでしょうか?
zabbix2.0 系で構築されているならば、snmptt を daemon モードで稼働させていて、 snmptt の conf ファイルに [FORMAT ZBXTRAP] 云々みたいな記述を書いてらっしゃるのだと思いますが‥
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "IF-MIB" Major FORMAT ZBXTRAP $aA の ifIndex:$1 にて linkDown 検知 ifAdminStatus:$2 ifOperStatus:$3 EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "IF-MIB" Normal FORMAT ZBXTRAP $aA の ifIndex:$1 にて linkUp 検知 ifAdminStatus:$2 ifOperStatus:$3
こんな設定になっているのではないでしょうか?
この場合ですと、特定ポートを示す文字列は「ifIndex:6」とか「ifIndex:8」とかになるのではないかと思います
ですので、トリガーの定義時に、特定ポート番号(ここでは3番と仮定します)についての条件を書けばいいことになります
・トリガー1(ポート3番以外を対象とするトリガー)に追加する条件 {host:snmptrap[ "IF-MIB" ].regexp(ifIndex:3)}=0 ・トリガー2(ポート3番のみを対象とするトリガー)に追加する条件 {host:snmptrap[ "IF-MIB" ].regexp(ifIndex:3)}=1 & ( {host:snmptrap[ "IF-MIB" ].time}<223000 | {host:snmptrap[ "IF-MIB" ].time}>233000 )
{host:snmptrap[ "IF-MIB" ].regexp(ifIndex:3)}=0
{host:snmptrap[ "IF-MIB" ].regexp(ifIndex:3)}=1 & ( {host:snmptrap[ "IF-MIB" ].time}<223000 | {host:snmptrap[ "IF-MIB" ].time}>233000 )
これ以上は、既存のアイテム・トリガーの設定や snmptt の設定、飛んでくるトラップの細かな情報、 zabbix のアイテムに記録されている文字列情報など、 ある程度詳細がわからないと説明しきれません
アカウント名 sat
Zabbix関連
TNK - 投稿数: 4753
ポート単位で、定期的にそのポートに関するトリガーを停止すると
いうことはZabbixの標準の機能だけでは実現できなかったと思いま
す。
ホスト単位でよろしければ、そのホストに対してメンテナンス期間
の設定を行うことで、特定の時間帯内のメール送信を行わないよう
に設定することができます。
具体的には、定期的にリブートする時間帯を「メンテナンス期間」
として登録し、アクションの実行条件に、
メンテナンスの状態 期間外 "メンテナンス"
の条件を追加することで実現できます。
sat - 投稿数: 78
お世話になります。
ポート単位で、定期的にそのポートに関するトリガーを停止するということはできないとのことですが、
スケジュールは使わずに、当該ホストの ある特定(いくつか)のポートだけをTrap監視するということはできないでしょうか?
よろしくお願いいたします。
fripper - 投稿数: 495
その当該ポートに対するアイテム・トリガーについて、
毎日決まった時間帯だけ「監視していても無意味」となるような再起動処理があるのでしたら
トリガーの判定条件の段階で、date 関数や time 関数を用いて
「この時間帯以外の場合だけ、異常判定をする」といった
定義ができるのではないでしょうか?
トラップを受けてしまう→障害として検知してしまう→アクションが発動してしまう→ いかにしてメールを送らないか
ではなく、
トラップを受けてしまう→条件で指定された時間帯ならば障害として扱わない
といったアプローチです。
いかがでしょうか?
sat - 投稿数: 78
お世話になります。
トラップを受けてしまう→条件で指定された時間帯なら障害として扱わない
ということですが、その当該ポート以外は、終日監視を続ける必要があるのですが
トラップを受けてしまう→当該ポートのみ、条件で指定された時間帯なら障害として扱わない
ということが可能なのでしょうか?
よろしくお願いいたします。
fripper - 投稿数: 495
現在の設定では、SNMPTrapを受信する1つのアイテム、それに対応する1つのトリガー、という
状態かと思います
これを、アイテム定義はそのままにしておいて、トリガーの発動条件だけを変更します
host.snmptrapitem.nodata(600)=0
などと定義されているのではないかと勝手に推察していますが、
これに、受信文字列に含まれるOID文字列などで付加条件を加え、2つのトリガーにします
トリガー1:問題のポート以外
host.item.nodata(600)=0 & host.item.regexp("フィルタ文字列") = 0
トリガー2:問題のポート専用 例えば 22:30~23:30までを監視対象外とする場合
host.item.nodata(600)=0 & host.item.regexp("フィルタ文字列") = 1 & ( host.item.time < 223000 | host.item.time > 233000 )
トリガー判定の段階で、特定ポートに対する文字列が見つかった場合だけ、特定時間帯ならば無視する‥といった具合です
sat - 投稿数: 78
お世話になります。
基本的なところを理解できていなくて申し訳ありませんが
トリガー1、トリガー2の中の どの部分にどういった書式で特定ポートを定義するのか教えていただけないでしょうか?
ifName とか ifIndex とか ifDescr とかありますが、これ以外のものを使用するのでしょうか?
よろしくお願いいたします。
fripper - 投稿数: 495
zabbix2.0 系で構築されているならば、snmptt を daemon モードで稼働させていて、
snmptt の conf ファイルに [FORMAT ZBXTRAP] 云々みたいな記述を書いてらっしゃるのだと思いますが‥
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "IF-MIB" Major
FORMAT ZBXTRAP $aA の ifIndex:$1 にて linkDown 検知 ifAdminStatus:$2 ifOperStatus:$3
EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "IF-MIB" Normal
FORMAT ZBXTRAP $aA の ifIndex:$1 にて linkUp 検知 ifAdminStatus:$2 ifOperStatus:$3
こんな設定になっているのではないでしょうか?
この場合ですと、特定ポートを示す文字列は「ifIndex:6」とか「ifIndex:8」とかになるのではないかと思います
ですので、トリガーの定義時に、特定ポート番号(ここでは3番と仮定します)についての条件を書けばいいことになります
・トリガー1(ポート3番以外を対象とするトリガー)に追加する条件
{host:snmptrap[ "IF-MIB" ].regexp(ifIndex:3)}=0
・トリガー2(ポート3番のみを対象とするトリガー)に追加する条件
{host:snmptrap[ "IF-MIB" ].regexp(ifIndex:3)}=1 & ( {host:snmptrap[ "IF-MIB" ].time}<223000 | {host:snmptrap[ "IF-MIB" ].time}>233000 )
これ以上は、既存のアイテム・トリガーの設定や snmptt の設定、飛んでくるトラップの細かな情報、 zabbix のアイテムに記録されている文字列情報など、
ある程度詳細がわからないと説明しきれません