web-dev-qa-db-ja.com

コンテナーを動的に追加し、エージェントを持つサーバー全体でそれらを監視するようにzabbixを構成するにはどうすればよいですか?

複数の物理サーバー間で動的な(つまり、移動する)コンテナーを検出および監視し、その結果を、コンテナーを実行するエージェントが実行されているサーバーではなく、コンテナーサービスに関連付けています。

私は2つのサーバーを持っています:AとB;私は1つのコンテナーを持っています。CはAまたはBのいずれかで実行できます。私のオーケストレーションエンジン(Swarm、Kubernetes、Rancherなど)は、少なくとも1つの場所で実行されるようにする責任があります。

AとBにzabbixエージェントを使用しているため、CPU、ファイルシステム、メモリなど、通常のものすべてを監視できます。

2つのことを監視したい:

  1. Cの可用性。どこでもかまいませんが、実行されていることを知りたいです。
  2. C内のプロセスのチェック。ステータスをチェックするスクリプトがあります。

Zabbixとエージェントを構成して、実行されている場所とは無関係に、Cとそのプロセスの両方の状態を報告するにはどうすればよいですか?

私の仮定は:

  1. 私はAやBではなく、Cをホストとして扱います。
  2. C内のプロセスのディスカバリーとその状態をCの項目として割り当てます。

私の質問は:

  1. CをAまたはBからホストとして自動検出するように設定するにはどうすればよいですか?自分のスクリプトまたは https://github.com/monitoringartist/Zabbix-Docker-Monitoring をフィルターと共に使用して、気になるコンテナーのみを取得できます。
  2. プロセスチェックをAおよびBエージェントの両方で実行するように設定するにはどうすればよいですか?

要するに、コンテナの自動検出をホストとして実行するように設定し、それらのそれぞれについてプロセスチェックを実行して、特定のグループ/パターンのエージェントを持つすべてのサーバーで実行し、出力をエージェントが実行されているAまたはBサーバーではなくCコンテナーですか?

編集:ファーストレスポンダーのおかげで、「メタホスト」というアイデアが浮かびました。しかし、それは新しい問題を生み出します:

  1. 作成時にIPを追加する必要がある場合、C「メタホスト」を作成するにはどうすればよいですか? AまたはBのIPである可能性があります。
  2. ルールに基づいて、検出によってCを自動的に作成するにはどうすればよいですか?
  3. Zabbixは「これらのテストを実行する」と言うためにAとBのそれぞれに手を差し伸べているので、Aにそれらを実行するように依頼するか、Bにそれらを実行するように依頼するかをどうやって知るのですか?

これは、「「Docker」グループのすべてのホストで検出を実行する」と言えば、はるかに簡単です。これにより、すべてのC(およびDなど)コンテナーが検出され、それらがホストとして追加されます。また、「現在検出されているすべてのコンテナーでプロセスチェックスクリプトを実行する」と言います。おそらく、現在コンテナーにアクセスできるエージェント(つまり、コンテナーが現在実行されている場所)を知っているからです。

Zabbixが特定のサーバーに関連付けられているアプリケーションを監視するのに最適であり、動き回るアプリを監視するのではなく、ますます感じているようになりました。それとも私はそれを誤解していますか?

3
deitch

免責事項:私は https://github.com/monitoringartist/Zabbix-Docker-Monitoring の作成者です

AおよびBに標準 Zabbix-Docker-Monitoring を設定します。

Dockerテンプレートの編集-必要に応じて、検出されたコンテナーをフィルター処理し、トリガーのプロトタイプをすべて削除します。

新しい計算アイテムを作成します。これにより、AおよびBの各C関連アイテムが新しいC計算アイテムに集約されます(ZabbixでC "メタホスト"を作成できます)-これらの新しいCメトリックの上に新しいトリガーを設定します。

更新:集計に 計算された項目 を使用-たとえば、AおよびBからの集計sum(docker.up[cid])-次に、「コンテナーcidが実行されていません」のトリガー条件はsum(docker.up[cid])<1になります。 Plsは正しい構文についてZabbixドキュメントを読みます。

LLDは、コンテナーがatmを実行している場所を検出し、それに応じて項目/トリガーを更新します。誤ったアラートを排除したい場合は、LLD /トリガーのタイミングを調整することを忘れないでください。

3
Jan Garaj