URLへのアラートの送信を有効にする

OpsCenterでは、POSTデータを受信して処理できるページを含む指定したURLにアラート・データを送信できます。JSONとURLエンコード・フォームの両方のコンテンツ・タイプがサポートされています。

POSTデータを受信して処理できるページを含む指定したURLにアラート・データを送信するようにOpsCenterを構成します。たとえば、print_r($_POST);を含む単純なPHPスクリプトは、受信したPOST要求をエコーします。POST要求とそのペイロードの例を次に示します。

POST / HTTP/1.0
Host: localhost
User-Agent: Twisted PageGetter
Content-Length: 184
Content-type: application/x-www-form-urlencoded
connection: close

target_node=None&event_source=OpsCenter&success=None&level=1&level_str=INFO&api_source_ip=None&user=None&time=1400098707681966&action=18&message=OpsCenter+starting+up.&source_node=None

要求の本文には、クラスター名(該当する場合)とともに、「アラート」で説明されているフィールドが含まれています。JSONとURLエンコード・フォームの両方のコンテンツ・タイプがサポートされています。フィールドの形式と送信するフィールドを指定するには、構成ファイルでキーと値のペアの形式の例を参照してください。

config_locationposturl.confファイルのインスタンスが複数存在する場合は、イベント・プラグインのインスタンスも複数になります。構成ファイルには任意の名前を付けることができます。ただし、.confファイル拡張子を持ち、有効なイベント・プラグイン識別子[posturl]を含み、event-pluginsディレクトリーの場所にある必要があります。構成ファイルはすべて読み込まれるため、posturl1.confposturl2.confのようにファイル名を区別してください。プラグイン・インスタンスが複数あると、開発および実稼働クラスターのアラートを柔軟に設定できます。すべてのOpsCenterイベント・プラグインで、複数の構成ファイルと、その結果の複数のプラグイン・インスタンスがサポートされます。

opscenterd.conf

opscenterd.confファイルの場所は、インストールのタイプによって異なります。

  • パッケージ・インストール:/etc/opscenter/opscenterd.conf
  • tarボール・インストール:install_location/conf/opscenterd.conf

始める前に

  • Webサーバーと送信スクリプトがアラートを受信するように構成されていることを確認します。
  • マシンがプロキシの背後で接続されている場合は、編集するopscenterd.confを開き、以下のコマンドを[http_proxy_settings]の下に追加します。
    
    http_proxy_url = http://your_proxy:port
    http_proxy_username = your_proxy_username
    http_proxy_password = your_proxy_password
    

手順

  1. OpsCenterデーモン・ホストで、編集するposturl.confを開きます。
  2. enabled=1を設定します。
  3. オプション: すべてのレベルとクラスターのアラートが呼び出されるのを避けるには、アラート構成が実行されるレベルとクラスターを指定します。
  4. オプション: posturlへの接続に時間がかかる場合は、接続タイムアウト(connection_timeout)を調整します。
  5. urlには、送信スクリプトの有効なパスを指定します。
  6. HTTP基本認証のユーザー名とパスワードを設定します。
  7. post_typeに送信データのタイプを設定します。サポートされているオプションは、jsonまたはform(デフォルト)です。構成ファイルのコメントに記述されている使用可能なキー値を使用してメッセージをカスタマイズします。
  8. posturl.confを保存し、OpsCenterデーモンを再起動します。
  9. イベントが正しく送信されていることを確認します。

すべてのクラスターの重要なイベントとアラートレベルのイベントについてフォーム・データの送信が有効になっているシステムの場合、posturl.confは次のようになります。


[posturl]

enabled=1

# levels can be a comma-delimited list of any of the following:  

# DEBUG,INFO,WARN,ERROR,CRITICAL,ALERT 
# If left empty, will listen for all levels 
levels=CRITICAL,ALERT

# clusters is a comma-delimited list of cluster names for which
# this alert config will be eligible to run.
# If left empty, this alert will be called for events on all clusters
clusters=

# the URL to send a HTTP POST to
url=http://host/path/to/script

# Set a username for basic HTTP authorization
#username=foo

# Set a password for basic HTTP authorization
#password=bar

# Set the type of posted data. Available options are 'json' or 'form'
post_type=form

# Fields specified here will override the default event data fields.
#
# They must be formatted as key-value pair, with key and value separated by
# an equals (=). Each pair after the first must be on its own line,
# indented beyond the first line
#
# You may use tokens found within the default event data for or in
# values. For example, some available keys are:
#   cluster, time, level_str, message, target_node, event_source, success, api_source_ip, user, source_node
# Keys must be encapsulated in {brackets}.
#
#fields=textKey=value
#    mixedKey=cluster-{cluster}
#    event-msg={message}

fieldsプレフィックスを使用して静的カスタム・フィールドをposturl.confに追加する例。含めるフィールドをすべて指定します。
fields=message={message}
message_type=CRITICAL

メッセージとクラスター名を表示するフォーム・データの例:

FORM DATA: array (
   'event-msg' => 'OpsCenter starting up.',
   'mixedKey' => 'cluster-C1',
   'textKey' => 'value',
)

メッセージとクラスター名を表示するJSONデータの例:
JSON DATA: {"event-msg": "OpsCenter starting up.", "mixedKey": "cluster:C1", "textKey: "value"}