アクション未動作について

お世話になっております。

通常アクションが動作しているイベントにも関わらず、一部アクションが動作しない場合がある事象が発生しているためフォーラムを作成させて頂きました。

■事象
日時OSリブートのため、毎日23:59頃に同一のログ監視イベントを複数検知しております。

[アイテム]
説明: Event/Application(WSH,0)/Error
キー: eventlog[Application,,Information,WSH,0]
間隔: 60
タイプ: Zabbixエージェント(アクティブ)

[トリガー]
名前: Event/Application(WSH,0)/Error
条件式: eventlog[Application,,Information,WSH,0].logseverity()}=1
イベント生成: ノーマル+障害イベントを検知して生成

上記設定により通常はイベント検知し、指定されたアクションが正常に実行されるのですが、稀にイベントのアクションが「 - 」となり、まったくアクションが動作しない事象が発生します。
※添付資料「events_20140618.png」参照。

[直近の発生日時]
2014 6/18 23:59 ※Deadlock発生
2014 6/17 23:58
2014 5/17 23:58 ※Deadlock発生

当該時間の前後、/var/log/messagesを確認しましたが特にエラーメッセージは見受けられませんでした。
また/var/log/zabbix/zabbix_server.log を確認したらDeadlockが発生している場合もありましたが、発生していない場合もあるので、Deadlock自体は本事象の原因ではないと考えております。

GUI上、CLI上でも異状が見られず設定も間違いはなさそう(そもそも普段は正常に検知しアクションが動作している)なため調査が難航しております。
現時点ではZabbixサーバのリソースの問題、MySQLの設定値の問題等で処理仕切れなくなっているのではと推察しております。

類似事例をお持ちの方、あるいは別の原因が思い当たる方がいらっしゃいましたらご意見いただけると幸いです。
お手数です宜しくお願い致します。

■動作環境
OS:Red Hat Enterprise Linux Server release 5.4
Zabbix:Zabbix 1.8

■通常稼働時のCPU使用率、メモリ使用率
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 10584 72264 125900 5753728 0 0 41 147 1 0 3 2 95 0 0

■設定項目数
パラメータ 値 詳細
ホスト数 (有効/無効/テンプレート) 440 222 / 10 / 208
アイテム数 (有効/無効/取得不可) 3919 3819 / 50 / 50
トリガー数 (有効/無効)[障害/不明/正常] 3830 3823 / 7 [283 / 668 / 2872]
ユーザ数 (オンライン) 64 5
1秒あたりの監視項目数(Zabbixサーバの要求パフォーマンス) 40.58 -

■MySQL設定
# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1

# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0

default-character-set=utf8
skip-character-set-client-handshake

# log-bin=mysql-bin
# log-bin-index=mysql-bin
# log=/var/log/mysqld.log

innodb_file_per_table
innodb_buffer_pool_size=4096M
innodb_log_file_size=128M
innodb_log_files_in_group=2

/以上

コメント表示オプション

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

Zabbixのバージョンが、1.8としか記載頂いていないのですが、
より詳細なバージョン情報をご提示ください。
1.8でも古いバージョンであると、様々な不具合や脆弱性の問題が
ありますので、新しいバージョンに更新されることをお勧めします。

Zabbixサーバを稼働させるサーバも定期的にOSごと再起動を行って
いる場合、古いバージョンのZABBIX-JPのパッケージですと、

 /etc/init.d/zabbix-server

に不具合があって、OS再起動時に、zabbix-serverプロセスが持っ
ていた情報を正常にDBに書き込めないなどの不具合があります。
スクリプト内のロックファイルが、

 /var/lock/subsys/zabbix

ではなく、

 /var/lock/subsys/zabbix-server

に直す必要がありますのでご注意ください。

Zabbix SIAが公開している、1.8.20では対応済のようです。
  http://repo.zabbix.com/zabbix/1.8/rhel/5/i386/
  http://repo.zabbix.com/zabbix/1.8/rhel/5/x86_64/

あと、Deadlockが発生した場合、アクションを実行するために必要
な情報をDB上に登録できていない可能性も考えられますので、具体
的にどのようなエラーログが出力されていたのかをお教えください。

ユーザー sepata_kurou の写真

TNK様

ご返信ありがとうございます。

> Zabbixのバージョンが、1.8としか記載頂いていないのですが、
> より詳細なバージョン情報をご提示ください。

失礼致しました。
バージョンは「Zabbix Server v1.8.5」になります。

> Zabbixサーバを稼働させるサーバも定期的にOSごと再起動を行って
> いる場合、古いバージョンのZABBIX-JPのパッケージですと、
>
>  /etc/init.d/zabbix-server
>
> に不具合があって、OS再起動時に、zabbix-serverプロセスが持っ
> ていた情報を正常にDBに書き込めないなどの不具合があります。

情報ありがとうございます。
なお特に定期再起動は行っておりません。
最後に再起動をさせたのは2014年3月上旬頃です。

> あと、Deadlockが発生した場合、アクションを実行するために必要
> な情報をDB上に登録できていない可能性も考えられますので、具体
> 的にどのようなエラーログが出力されていたのかをお教えください。

事象発生付近で出力されていたDeadlockエラーログは下記になります。
---------------------------------------------------
8413:20140516:235956.509 [Z3005] Query failed: [1213] Deadlock found when trying to get lock; try restarting transaction [insert into escalations (escalationid,actionid,triggerid,eventid,status) values (586705,20,21381,1604284,0)]
※事象の発生日時に誤りがありました。
 (誤)2014 5/17 23:58
 (正)2014 5/16 23:58

8415:20140619:000112.944 [Z3005] Query failed: [1213] Deadlock found when trying to get lock; try restarting transaction [insert into escalations (escalationid,actionid,triggerid,eventid,status) values (615980,20,21283,1640956,0)]
---------------------------------------------------

上記エラーを検知する都度Zabbixのイベント画面を確認しておりますが、本事象が起きた3回以外はアクションは問題なく動いていることを確認しております。

ユーザー KAZ の写真

sepata_kurouさん

エラーはescalationsテーブルの排他処理の問題です。
escalationsテーブルの排他処理の問題はZabbix1.8系は最新版でも発生します。

escalationsテーブルの排他処理の問題はZabbix2.0系で改修されています。
※:escalationsテーブルの更新処理のプロセス統一やステータス管理の変更

修正範囲が大きいのでZabbix1.8へのバックポートはされないかもしれません。

ユーザー KAZ の写真

sepata_kurouさん

事象的には逆になりますが、高負荷状態だと1イベントで2回アクション実行されてしまう事例はあります。
https://support.zabbix.com/browse/ZBX-2806

上記の問題ですが、Zabbix1.8系でも発生するようです。

参考になりますでしょうか?