タイトルの通りですが、SNMPでNW機器の死活監視はできるのでしょうか。
SNMPで値を引いた際にタイムアウトしたことをトリガーに書けばよいとは思いますが、どういったトリガーを書けばよいでしょうか。
どなたかご存知でしたらお教えください。
利用されているZabbixのバージョンを記載頂けていませんが、どの バージョンを利用されているのですか?
新しいバージョンであれば、SNMPだけでの死活監視もできなくはな いのですが、設定が複雑になります。
というのも、Zabbixの標準で用意されているSNMPを利用したアイテ ムを取得時にタイムアウトが発生した場合、そのアイテムは「取得 不可」という状態になってしまいます。 古いバージョンのZabbixでは、その「取得不可」になったタイミン グでトリガーを仕掛けることができません。
新しいバージョンのZabbixであれば、アクションの実行の契機(イ ベントソース)に、これまでのトリガーやディスカバリなどとは別 に「内部イベント」という定義が追加されているので、これを利用 して取得不可になったこと通知することができます。
以下のURLもご参照ください。
ご参考:3 取得不可のアイテムに関する通知の受信 https://www.zabbix.com/documentation/2.2/jp/manual/config/notifications/...
他の視点で、ネットワーク的に到達できないこと、pingの応答が無 いことを持って機器の障害と判断するのであれば、アイテムとして シンプルチェックのicmppingを利用する方法もあると思います。
こちらであれば、応答が無ければその時点でトリガーを発生させる ことが可能です。
ご回答ありがとうございます。 Zabbixのバージョンは2.4です。
参考URLを拝見しました。
結論としては、 トリガーでの死活監視(イベント通知)→不可能 アクションでの死活監視(メール通知)→可能 ということでしょうか。
いいえ、違います。
まずは、Zabbixの用語をご理解頂くことから進めて頂ければと思います。
アイテム、トリガー、アクションの関係は、アイテムで値を取得し、その値が トリガーの条件式で判断され、障害もしくは障害回復のどちらかの条件であれ ば、イベントが発生してアクションが実行されます。
別のルートで、トリガーとは別に発生した内部イベントを契機にアクションを 実行することもできます。
トリガーでNG、アクションでOKということではありません。
こんにちは。
アイテムでは SNMP で必ず取れる値を取ってくる設定にし、トリガーで nodata を使ったらなんとかなりませんかね?(agent.ping みたいな感じで)
残念ながら、アイテムの状態が取得不可になってしまった場合には、 nodata()が有効に機能しません。
例えば、
{ホスト名:アイテム名.nodata(3m)}=1
とかトリガーに設定したとしても、値が取得できなくなってしまっ てアイテムの状態が「取得不可」のままですと、3分経過してもト リガーは発生しません。
zabbix_senderなどでサーバに値を送り込むようなアイテムで、前 回の値取得から指定した時間内にデータが送られてこないような場 合にはnodata()を活用できると思います。
TNKさん
そうだったんですか、知らなかった・・・。ありがとうございました。
もしかしたら最新のバージョンだと挙動が違うかもしれませんが SNMPの監視ってTimeout = NetworkError だからアイテムは取得不可にならないのでは? ホストのSNMPのステータスが赤色になるだけで。
急にOIDが変わったり、コミュニティ名が変わったり、変な応答が返ってきたりしたときは取得不可になりそうですが。。。
申し訳ありませんでした。2.2.6の環境を作成して確認してみました。
確かに、SNMPの場合はアイテムが取得不可ではなく、ホストが利用 不可(ホスト一覧内のエージェントの状態のSNMPの部分が赤くなる) になるようです。
そうであるならばと、nodata()を使ってトリガーを作成できるかと 思って試してみたら、トリガーでイベントを発生させることができ ました。
ということで、
・SNMPを利用している場合は、アイテムの値を取得するのにタイ ムアウトが発生した場合、アイテム単位で取得不可となるので はなくホストが利用不可となる。 アイテム自体は「取得不可」の状態にならないので、トリガー の条件式にnodata()を利用することで、値が取得できていない ことを検知可。 コミュニティ名が変更された場合も同様にネットワークエラー となるため、同様の動作となる。
・Zabbixエージェントを利用している場合は、そのアイテムの値 を取得するのにタイムアウトが発生してもアイテムが「取得不 可」の状態になるだけで、そのアイテムに対してnodata()の条 件式のトリガーを作成しても検知できない。 検知するには、内部イベントの発生に対してアクションを設定 するなどの対処が必要。
でした。
アイテムの種類によって違いがありますのでご注意ください。
追記: Zabbix 2.4.1でも同様でした。
ご検証ありがとうございました。
トリガーのnodata()でSNMPの死活監視を試してみたいと思います。 検証次第結果を書き込みます。
■検証結果追記 以下で出来ました。
・アイテム タイプ:SNMPv2エージェント OID:SNMPv2-MIB::sysName.0 ・トリガー {snmp-test-template:sysName.nodata(60)}=1
疑問1: snmpwalkコマンドではOIDを"sysName"や".1.3.6.1.2.1.1.5"と指定してホスト名が引けるのに対し、zabbixのSNMPでは引けないのはなぜでしょうか。 tcpdumpで引けないときのダンプをみたところ、リクエストに対して GetResponse(27) .1.3.6.1.2.1.1.5=[noSuchInstance] とレスポンスがありました。
疑問2: SNMPのポーリング間隔とトリガー関数(nodata)の判定間隔は同時なのでしょうか。
どなたかご存知でしたらご教示ください。
直前にアイテムの設定として「sysName.0」と指定されている通り、後ろの「.0」が 指定されていないからだと思われます。
snmpwalkコマンドであれば、指定したMIB以下のものはすべて表示するかもしれません が、Zabbixのアイテムとしては、1つの値を取得するように指定してください。
SNMPのアイテムの更新間隔は、そのアイテムの更新間隔で指定できます。
nodata()は、それとは全く別に30秒間隔でチェックが行われます。
丁寧な回答ありがとうございました。
おかげさまで活路が見出せました。
アカウント名 miso
Zabbix関連
TNK - 投稿数: 4719
利用されているZabbixのバージョンを記載頂けていませんが、どの
バージョンを利用されているのですか?
新しいバージョンであれば、SNMPだけでの死活監視もできなくはな
いのですが、設定が複雑になります。
というのも、Zabbixの標準で用意されているSNMPを利用したアイテ
ムを取得時にタイムアウトが発生した場合、そのアイテムは「取得
不可」という状態になってしまいます。
古いバージョンのZabbixでは、その「取得不可」になったタイミン
グでトリガーを仕掛けることができません。
新しいバージョンのZabbixであれば、アクションの実行の契機(イ
ベントソース)に、これまでのトリガーやディスカバリなどとは別
に「内部イベント」という定義が追加されているので、これを利用
して取得不可になったこと通知することができます。
以下のURLもご参照ください。
ご参考:3 取得不可のアイテムに関する通知の受信
https://www.zabbix.com/documentation/2.2/jp/manual/config/notifications/...
他の視点で、ネットワーク的に到達できないこと、pingの応答が無
いことを持って機器の障害と判断するのであれば、アイテムとして
シンプルチェックのicmppingを利用する方法もあると思います。
こちらであれば、応答が無ければその時点でトリガーを発生させる
ことが可能です。
miso - 投稿数: 4
ご回答ありがとうございます。
Zabbixのバージョンは2.4です。
参考URLを拝見しました。
結論としては、
トリガーでの死活監視(イベント通知)→不可能
アクションでの死活監視(メール通知)→可能
ということでしょうか。
TNK - 投稿数: 4719
いいえ、違います。
まずは、Zabbixの用語をご理解頂くことから進めて頂ければと思います。
アイテム、トリガー、アクションの関係は、アイテムで値を取得し、その値が
トリガーの条件式で判断され、障害もしくは障害回復のどちらかの条件であれ
ば、イベントが発生してアクションが実行されます。
別のルートで、トリガーとは別に発生した内部イベントを契機にアクションを
実行することもできます。
トリガーでNG、アクションでOKということではありません。
heya - 投稿数: 319
こんにちは。
アイテムでは SNMP で必ず取れる値を取ってくる設定にし、トリガーで nodata を使ったらなんとかなりませんかね?(agent.ping みたいな感じで)
TNK - 投稿数: 4719
残念ながら、アイテムの状態が取得不可になってしまった場合には、
nodata()が有効に機能しません。
例えば、
{ホスト名:アイテム名.nodata(3m)}=1
とかトリガーに設定したとしても、値が取得できなくなってしまっ
てアイテムの状態が「取得不可」のままですと、3分経過してもト
リガーは発生しません。
zabbix_senderなどでサーバに値を送り込むようなアイテムで、前
回の値取得から指定した時間内にデータが送られてこないような場
合にはnodata()を活用できると思います。
heya - 投稿数: 319
TNKさん
そうだったんですか、知らなかった・・・。ありがとうございました。
zinten - 投稿数: 69
TNKさん
もしかしたら最新のバージョンだと挙動が違うかもしれませんが
SNMPの監視ってTimeout = NetworkError だからアイテムは取得不可にならないのでは?
ホストのSNMPのステータスが赤色になるだけで。
急にOIDが変わったり、コミュニティ名が変わったり、変な応答が返ってきたりしたときは取得不可になりそうですが。。。
TNK - 投稿数: 4719
申し訳ありませんでした。2.2.6の環境を作成して確認してみました。
確かに、SNMPの場合はアイテムが取得不可ではなく、ホストが利用
不可(ホスト一覧内のエージェントの状態のSNMPの部分が赤くなる)
になるようです。
そうであるならばと、nodata()を使ってトリガーを作成できるかと
思って試してみたら、トリガーでイベントを発生させることができ
ました。
ということで、
・SNMPを利用している場合は、アイテムの値を取得するのにタイ
ムアウトが発生した場合、アイテム単位で取得不可となるので
はなくホストが利用不可となる。
アイテム自体は「取得不可」の状態にならないので、トリガー
の条件式にnodata()を利用することで、値が取得できていない
ことを検知可。
コミュニティ名が変更された場合も同様にネットワークエラー
となるため、同様の動作となる。
・Zabbixエージェントを利用している場合は、そのアイテムの値
を取得するのにタイムアウトが発生してもアイテムが「取得不
可」の状態になるだけで、そのアイテムに対してnodata()の条
件式のトリガーを作成しても検知できない。
検知するには、内部イベントの発生に対してアクションを設定
するなどの対処が必要。
でした。
アイテムの種類によって違いがありますのでご注意ください。
追記:
Zabbix 2.4.1でも同様でした。
miso - 投稿数: 4
ご検証ありがとうございました。
トリガーのnodata()でSNMPの死活監視を試してみたいと思います。
検証次第結果を書き込みます。
■検証結果追記
以下で出来ました。
・アイテム
タイプ:SNMPv2エージェント
OID:SNMPv2-MIB::sysName.0
・トリガー
{snmp-test-template:sysName.nodata(60)}=1
疑問1:
snmpwalkコマンドではOIDを"sysName"や".1.3.6.1.2.1.1.5"と指定してホスト名が引けるのに対し、zabbixのSNMPでは引けないのはなぜでしょうか。
tcpdumpで引けないときのダンプをみたところ、リクエストに対して GetResponse(27) .1.3.6.1.2.1.1.5=[noSuchInstance] とレスポンスがありました。
疑問2:
SNMPのポーリング間隔とトリガー関数(nodata)の判定間隔は同時なのでしょうか。
どなたかご存知でしたらご教示ください。
TNK - 投稿数: 4719
直前にアイテムの設定として「sysName.0」と指定されている通り、後ろの「.0」が
指定されていないからだと思われます。
snmpwalkコマンドであれば、指定したMIB以下のものはすべて表示するかもしれません
が、Zabbixのアイテムとしては、1つの値を取得するように指定してください。
SNMPのアイテムの更新間隔は、そのアイテムの更新間隔で指定できます。
nodata()は、それとは全く別に30秒間隔でチェックが行われます。
miso - 投稿数: 4
丁寧な回答ありがとうございました。
おかげさまで活路が見出せました。