全てのエラーを検知する方法について
いつもお世話になっています。
zabbix-agent からレスポンスが無い場合、zabbix-server の表示上は、エラー項目が赤色になりますが、
アラートにならず、異常に気がつかないので、
緑以外は、全てアラートにしたい場合、何か良い方法はありますでしょうか?
今まで検知したかったエラーは下記になります。
-- 赤色 --
エラー時のメッセージ↓
・取得不可
・Received value [timeout while executing a shell script] is not suitable for value type [Numeric (float)]
・Received empty response from Zabbix Agent at [XXXX]. Assuming that agent drop
-- 灰色 --
エラー時のメッセージ↓
不明
-- 環境 --
Zabbix Server:v2.0.2
Zabbix Agent :v1.8.11
#関係ないですが、僕も本買いました。
恐れ入りますがよろしくお願い致します。
fripper - 投稿数: 495
Zabbix エージェントが落ちていて‥という場合の観点ならば、
種別を「ZABBIX エージェント」として登録しているアイテムに対して
1つだけで構わないので
nodata(300)
などの関数を使ったトリガーを定義することで、
「一定時間データの更新がなかったこと」=「Zabbixエージェントのダウン?」を
エラー判定させることができます
設定するならば、監視間隔の短いアイテムを対象に1つだけ設定しておき、
なおかつ、そのアイテムの更新時間の2倍~3倍程度の時間を「判定閾値」の秒数に
指定するのが良いかと思います
たとえば、120sec に1度取得している system.cpu.load[percpu,avg1] という
アイテムがあったとした場合、そのアイテムに対して、nodata(300) などとした
トリガーを作成しておけば、1度の取得エラーだけではトリガーは反応せず、
300秒以上経過して‥‥(2回以上データが取得されているはずなのに)
更新が1度もなかった場合だけ、トリガーが反応するはずです
ValueType の異常によって、データ無しになってしまった場合についても、
同様の手法でトリガー判定させることはできます
しかし、個々のアイテムに対しての異常発生ですので、
上記方法で対処するには、各アイテムに1つずつトリガーを定義しなければならず、
非現実的となってしまいますね‥
難しいところです
wakaba - 投稿数: 228
広瀬です
少しエラーとなる起因を分けて考えたほうがよいかと思います。
・ZABBIXエージェント自体が落ちている場合(サーバダウン・ハング含む)
・仕様制限を越えた使い方、もしくは規約違反による無応答
例に挙げられている、「timeout while executing a shell script」はエージェントのタイムアウト制限を
超えた場合に出たものだろうと思いますが、これは2つめに揚げた、「仕様制限」を超えたものです。
タイムアウトを超える理由としては、スクリプトが取得したい先のプロセスが重いとか、
外部に出ているため、回線的に返答が遅いとか・・・理由はいろいろあるかとは思いますが、
これはZABBIXの問題ではないので、防ぎようが無い場合も中にはあることを前提にしておく
必要もあるかとは思います。
エージェント自体が落ちている場合には、比較的簡単ではありますね。
シンプルチェックを使う。senderを使うなど・・・方法はいくつかあるかなと思います。
hiroyuki - 投稿数: 43
ご回答いただきましてありがとうございます>お二人
fripper様
やはり、全アイテムにタイムアウト設定ですよね。。
とりあえず、今回、だめだったアイテムだけいくつかタイムアウトトリガーを設定して再発防止に思います。
広瀬様
今回、タイムアウトしたのは、DBで起動したスクリプトがハングして、アイテムのデータが取得できなくなっていました。
確かにzabbixの問題ではありませんが、気がつかないのは問題なので、上記でも記載しているようにタイムアウト閾値をいくつかのアイテムに設定しようと思います。
又、zabbxiのDBに問い合わせて、ステータスがエラーになっているものを洗い出して、定期的にチェックするスクリプトを作ってチェックしようかと思います。
具体的にはこのようなSQLで正常以外をとってきてスクリプトで整形して、自分宛にメールで飛ばそうかと考えてます。
mysql> select itemid,hostid,name,key_,status,error from items where not status=0 ;
+--------+--------+---------------------+-----------------------------------+--------+-------+
| itemid | hostid | name | key_ | status | error |
+--------+--------+---------------------+-----------------------------------+--------+-------+
| 23300 | 10100 | log - Mongos(error) | log[/var/log/mongo/mongos.log,,,] | 1 | |
:
: