pollerプロセスが再起動する頻度

いつも参考にさせていただいています。

Pollerプロセスが再起動する間隔を調整するパラメータはありますでしょうか。
もしくは、データベースモニタでunixODBCのコネクションプールを使う場合に必要な設定があればアドバイスいただけないでしょうか。

データベースモニタを使った監視をしているのですが、アイテム数が増えてきたのでunixODBC2.0のコネクションプールの機能を設定しました。
DB側のセッション情報を見ると、1分程度でセッションが切れてコネクションプールが働いているのか判断できませんでした。

psコマンドでPollerプロセスを確認すると一定間隔でPollerのプロセス番号が一斉に代わるのでPollerのプロセスが定期的に再起動されていることが分かりました。
コネクションプールは、Pollerが再起動するとセッションを解放してしまうため、観測したDB側のセッションの動きとあっているようです。

Pollerのプロセスが再起動する時間が指定できればと思ったのですがマニュアルには該当のパラメータが見つかりませんでした。

利用している環境は、以下の通りです。
Zabbix 3.0.1
Ubuntu 14.04.5 LTS

Docker version 1.12.3上でzabbix/zabbix-server-mysql:ubuntu-3.0-latestを使っています。

以上

コメント表示オプション

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

Zabbix の unixODBC を利用した DB 監視では、コネクションプールの利用に
十分対応できていないのが現状のようです

Zabbix側は監視項目への1ポーリング毎に poller プロセスが生成され、
値の収集後にプロセスが終了するような仕様となっている
ODBC 側のコネクションプールは、接続元プロセス単位でライブラリが管理‥
といった相性の問題から、有効に活用できていない‥という事情みたいです

pollerの仕組みは変えにくいことから、ODBC関連監視に特化した専用の
odbcpollerみたいなプロセスを‥といった要望も上がっているようです
 専用のプロセスがあれば、コネクションプールを利用したい場合には
 それをうまく使い回せば活用できる‥といった根拠の模様
 https://support.zabbix.com/browse/ZBXNEXT-2485

「接続できるか」「SQL成功するか」「切断できるか」といった個々の観点だと
コネクションプールがあると邪魔になるし、無いと監視による負荷が高いし‥
難しいですね‥

ユーザー ksaito の写真

アドバイスありがとうございました。
なるほど、確かに難しい問題が色々とありそうですね。
・odbcpollerを実装するとなると、odbcの接続先を登録する画面やコネクションプールのセッション数、タイムアウト、セッションリフレッシュ間隔といった設定が必要になる。
・pollerは、それぞれ別プロセスなので、同じ接続が別のpollerに問い合わせられたら、時間が立つに連れてpollerの数だけセッションが増えてしまう。

ODBCではなく、Zabbix java gatewayのように別サーバでJDBCを使ったサーバでコネクションプールで実装するのが良いかもしれません。