web-dev-qa-db-ja.com

エージェントでコマンドを実行する方法は?

サーバー上で構成し、前面に配置します。ただし、エージェントで実行するには:

  • レポートデータを取得するためのいくつかの簡単なUNIXコマンド。
  • エージェント側で何らかの処理が必要な場合。

さまざまなアプローチが議論されているようです。では、zabbixエージェントでそのようなコマンドを実行する方法は?

7
Dreamcat4

サーバーから新しいアイテムから直接コマンドを実行します。

まず、設定:EnableRemoteCommands=1エージェントconfファイル内(すべてのエージェント用)。この機能を有効にするには。

新しいアイテムを作成します。 「新しいアイテム」ページのフィールドには「キー」と表示されます。入る:

system.run[command]

'key'文字列として。ここで、commandは、ダウンロードしてエージェントで実行するコマンドです。次に例を示します。

system.run[sysctl dev.cpu.0.temperature | cut -d ' ' -f 2 | tr -d C]

おそらく、長すぎてそこに収まらない、かなり複雑なものを実行する必要がありますか?次に、カスタムスクリプトを作成する必要があります。カスタムスクリプトをローカルWebサーバーまたはWeb上のどこかに配置します。

アイテムのキーを次のように設定できます。

system.run[ command -v script && script || wget script_url -O /path/to/script && script]

不足しているスクリプトを最初に実行したときに、エージェントにフェッチしてダウンロードすること。しかし、それはかなり大雑把なハックです。あまりエレガントではありません。

より良い方法は、メニューの[管理]-> [スクリプト]に移動することです。そこから、任意のエージェントで実行するように構成できるアイテムで使用する新しいスクリプトを作成できます。

スクリプトを定期的に再実行するための特別なカスタムアイテムを作成します(cronジョブなど)。特別なスクリプトアイテムの仕事は、他の必要なカスタムスクリプトのコレクションでエージェントを更新することです。

もちろん、すべてのカスタムスクリプトをzabbixのMYSQLデータベースに直接書き込むこともできます。そして、それをすることは非常に魅力的です。ただし、zabbixデータベースが揚げられたり、破損したり、失われたりすると、それらは失われ、脆弱になることに注意してください。 Zabbixデータベースには、常に大きくなり、扱いにくく、制御不能になる傾向があります。だからそれをしないでください。それらを別の場所に別々に保存し、バージョン管理(gitまたはSubversion)の下に置きます。

それがすべてソートされたら、最終的に先に進んで、カスタムスクリプトを実行するためのカスタムアイテムをさらに作成できます。再び使用:

system.run[script]

以前と同じようにアイテムのキーとして。ここで、「script」は、エージェント上でローカルにカスタムスクリプトを実行するためのコマンド(および任意の引数)です。

6
Dreamcat4
  1. /etc/zabbix/zabbix_agentd.confのクライアント(zabbixエージェントが配置されている場所)でユーザーパラメータを定義します。キーは一意である必要があります。例としてlsofを使用しています。

    UserParameter = open_file、lsof | wc -l

  2. エージェントを再起動します「servicezabbix-agentrestart」

  3. Zabbix_getユーティリティを使用してキーが機能しているかどうかをテストします。 zabbixサーバーから以下を呼び出します。この場合、数値を返す必要があります。

    / usr/local/bin/zabbix_get -s -k open_file

  4. テンプレートレベルのzabbixサーバーでキーを使用してアイテムを作成します。戻り値の型を正しく定義する必要があります。そうしないと、zabbixはそれを受け入れません。

    タイプ:Zabbixエージェント(アクティブ)、キー:open_file、情報のタイプ:数値(符号なし)、データタイプ:10進数

  5. アイテムを使用してグラフを作成し、一定の間隔で値を監視できます。

これが公式です ドキュメント

1
Arnab Biswas