0

サービスが呼び出されたホストに基づいて、同じサービスに異なる連絡先を設定したいと思います。

マクロを使用しようとしましたが、コマンドが呼び出されたときにのみ変換されます。そこでコマンド自体を編集してみましたが、変数 CONTACTEMAIL はicingaが内部で管理していると思います。HOST で定義されたカスタム マクロに純粋な電子メールだけを追加することに抵抗があります。

define command{
    command_name    notify-service-by-email
    command_line    /usr/bin/printf "%b" "***** Icinga *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
    }

誰かがこれを試したり解決したりしましたか?

4

2 に答える 2

0

ホストで連絡先を定義し、サービスから削除できます。このように、そのホストのすべてのサービスはその連絡先を継承します。サービスで連絡先を再度定義すると、以前の連絡先は無視されます。

連絡先がホストではなく各サービスに依存している場合は、ホスト/連絡先ごとに同じサービスを定義する必要があります。

于 2012-12-12T10:27:18.307 に答える
0

$CONTACTEMAIL$ は連絡先オブジェクトのマクロで、属性「email」を参照します。コマンド「notify-service-by-mail」は「service_notification_command」などの連絡先に割り当てられ、その連絡先はサービスに割り当てられます (または contactgroup を介して)。したがって、通知が発生すると、必要なすべての情報が利用可能になり、コアはマクロ $CONTACTEMAIL$ を実際の値に変換し、変換された文字列をシェルに渡して実行します。

私は2つのオプションに行きます

  • 暗黙の継承 ( http://docs.icinga.org/latest/en/objectinheritance.html ) を使用し、以下のサービスではなく、ホストの連絡先のみを定義します。構成パーサーは連絡先を継承する必要があることを認識し、サービスは関連するホストの割り当てられた連絡先のみを取得します。ただし、サービス自体と同じ連絡先にホストのアラートを通知したくないという点で、これは見苦しいかもしれません。

  • これをより動的にする、つまり、ホスト名に基づいてサービス連絡先を設定するには、構成 (生成) ツールを使用することをお勧めします。これにより、たとえば、定義された連絡先とのサービス->ホスト関係を操作できるようになります。ただし、実際には一般的な解決策はないようです... LConfにldapツリー自体を試してみますが、カスタムスクリプトを作成したり、人形の魔法を使用したりするのではなく、これがうまくいくかどうかはわかりません。

于 2013-06-08T14:39:41.633 に答える