zabbix-2.0.2 sshエージェントタイムアウトでpollerがハングアップしていると思われる件

いつも便利に使用させていただいております。
開発してくださった皆様に感謝しています。

現在、zabbix-2.0.2をソースからビルドして、
ぷらっとホーム社のOpenBlocks AX3(armel)上で走らせています。

Configuration:

Detected OS: linux-gnueabi
Install path: /usr/local
Compilation arch: linux

Compiler: gcc
Compiler flags: -g -O2 -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX -I/usr/local/include -I/usr/lib/perl/5.10/CORE -I. -I/usr/include -I/usr/include

Enable server: yes
Server details:
With database: MySQL
WEB Monitoring via: cURL
Native Jabber: yes
SNMP: net-snmp
IPMI: no
SSH: yes
Linker flags: -rdynamic -L/usr/lib/mysql -L/usr/lib -L/usr/lib -L/usr/lib
Libraries: -lm -lrt -lresolv -lmysqlclient -liksemel -lcurl -lnetsnmp -lcrypto -lnetsnmp -lcrypto -lssh2

Enable proxy: no

Enable agent: yes
Agent details:
Linker flags: -rdynamic
Libraries: -lm -lrt -lresolv -lcurl

Enable Java gateway: no

LDAP support: no
IPv6 support: yes

***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* *
***********************************************************

ssh.run[*]を使って複数アイテムのssh監視を行っておりますが、問題が発生しております。
値が正しく取得されているうちはよいのですが、
sshログインに失敗するなど、このタイプのアイテムがタイムアウトして「1つでも」キューに溜まった状態になると
zabbixサーバーのbusy poller process値とCPU user time値が階段状のカーブで上昇を続け、
最後には起動したpollerが全滅し、監視が不可能な状態になっているようです。

いろいろ調べてみたところ、これは1.8系のZBX-3555の事案と類似しているかと思うのですが、
2.0系で何か解決の糸口となる情報をお持ちの方はいらっしゃらないでしょうか。

https://support.zabbix.com/browse/ZBX-3555

何卒よろしくお願いいたします。
fuyuo

コメント表示オプション

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

ソースを確認してみましたが、ZBX-3555での修正内容は、2.0.2に
も反映されているようです。

直接関係ないかもしれませんが、libssh2のバージョンはいくつを
利用されていますか?
古いバージョンですとメモリリークが発生したり、Pollerプロセス
がハングアップしてしまう場合があるようです。

現時点では、1.4.2以降が推奨されているようです。

ご参考:
 Memory leak in the poller processes
  https://support.zabbix.com/browse/ZBX-4602
 pollers hang when processing SSH checks if "public key" field is empty
  https://support.zabbix.com/browse/ZBX-4857

ご確認ください。

ユーザー fuyuo の写真

TNKさん
お世話になります。
現在、使用中のlibssh2のパッケージのバージョンは1.2.6-1でした。
となりますと、このパッケージに問題があるかもしれないということですね。
パッケージ管理では、新しいバージョンのlibssh2は現時点ではインストールできないようなので、
ソースからインストールしてみます。
結果はまたご報告します。

ありがとうございました!

ユーザー kodai の写真

オフィシャルパッケージのテスト版にlibssh2 1.4.0のRPMがありますので、そちらも利用いただけます。
http://www.kodai74.net/packages/non-supported/rhel/

ユーザー TNK の写真

kodaiさんへ

ご質問内にOpenBlocks AX3を利用されていると書かれています。
OpenBlocks AX3ということは、CPUがArmada XP、つまりARM系のCPU
だと思われます。
OSのディストリビューションもRHEL系であるのかも確認できていま
せんので、kodaiさんが用意して公開して下さっているものでは動
かないのではないでしょうか?

また、ZBX-4857に関しては、libssh2-1.4.2なら大丈夫であるとい
うように記載内容を読み取ったのですが読み違いでしょうか?
kodaiさんが紹介してくださったディレクトリに用意して頂けてい
るバージョンは、1.4.0のようです。

ご確認いただけますでしょうか。

個人的には、FC18用のSRPMを参考にして、1.4.2用のRPMを準備しよ
うと考えています。
http://ftp.riken.jp/Linux/fedora/development/18/source/SRPMS/l/libssh2-1...

ユーザー kodai の写真

ご質問内にOpenBlocks AX3を利用されていると書かれています。OpenBlocks AX3ということは、CPUがArmada XP、つまりARM系のCPUだと思われます。

おおお、そうでした、その通りです。指摘ありがとうございます。

また、ZBX-4857に関しては、libssh2-1.4.2なら大丈夫であるというように記載内容を読み取ったのですが読み違いでしょうか?kodaiさんが紹介してくださったディレクトリに用意して頂けているバージョンは、1.4.0のようです。

こちらも指摘いただいた通り、現時点では1.4.2以上を利用した方がいいですね。RHELやDebianに入っている1.2.x系では、ZBX-4857の件とZBX-4602の件の問題があるため、使用は避けた方がいいです。

ユーザー fuyuo の写真

kodaiさん
TNKさん
お世話になっております。

OpenBlocks AX3は、debian wheezy がインストールされており、CPUはARMです。
パッケージ管理は素直にaptを使用しています。
購入した状態で最新のdebianがインストールされているため、
libssh2も比較的新しいバージョンがパッケージインストールされるのかな?と思っておりましたが、
TNKさんのアドバイスを受けバージョンを調べてみると思いの外古いバージョンがインストールされていました。

libssh2のパッケージのみをaptでremoveしようとしたのですが、依存関係があるようなので中止し、
libssh2 1.4.2のソースから直接コンパイルして得られた1.4.2のバイナリーへ、ソフトリンクを張りました。
(このやり方だと、パッケージアップデートを行うと張ったリンクが切れてしまうので自分でもよい方法とは思えませんが、
外に思いつきませんでした。 定石みたいなものがあればご教授いただければ幸いです。)

libssh2 1.4.2のdebパッケージも準備していただけたら・・・なんて言ったら甘えすぎですね。
すみません。

結果は、見事に問題が解消しました!
10秒に1回程度のssh.run[*]アイテムを監視する頻度で、6時間ほど監視しておりますが、
pollerがハングアップしている様子はまったくありません。
キューへの滞留もほとんど起こっていないため、キューの滞留自体も、監視対象のサーバーではなく、libssh2が原因だったようです。

的確なアドバイスに感謝しております。
本当にありがとうございました。

余談ですが、
Openblocks AX3(メモリー2GB追加) 上で ZABBIX 2.0.2 を使った感触は・・・
想像していたよりずっとサクサクで良好です。
小さくて堅牢な監視サーバーとして便利に使えそうです。
(ちなみに、私はぷらっとホームの関係者ではありません・・・念のため)

ユーザー kodai の写真

libssh2 1.4.2のソースから直接コンパイルして得られた1.4.2のバイナリーへ、ソフトリンクを張りました。
(このやり方だと、パッケージアップデートを行うと張ったリンクが切れてしまうので自分でもよい方法とは思えませんが、
外に思いつきませんでした。 定石みたいなものがあればご教授いただければ幸いです。)

libssh2 1.4.2のdebパッケージも準備していただけたら・・・なんて言ったら甘えすぎですね。すみません。

1.4.2のDebianパッケージを作成して、アップデートするのが一番ベストな方法だと思います。この問題、Debianを利用している人にはすべて発生することになるので、オフィシャルパッケージの方でもlibssh2のdebパッケージ作成を検討したいと思います。

ユーザー fuyuo の写真

ありがとうございます!
検討よろしくお願いいたします。
(自分でパッケージを作成する方法も勉強したいと思います)

ユーザー fuyuo の写真

OpenBlocks AX3 のDebianは、wheezyではなくsqueezeでした。
頭の中で「ラズベリーパイ」とごっちゃになっていました。
訂正させていただきます。すいません。