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.conf、posturl2.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
手順
- OpsCenterデーモン・ホストで、編集するposturl.confを開きます。
- enabled=1を設定します。
- オプション: すべてのレベルとクラスターのアラートが呼び出されるのを避けるには、アラート構成が実行されるレベルとクラスターを指定します。
- オプション:
posturlへの接続に時間がかかる場合は、接続タイムアウト(
connection_timeout
)を調整します。 -
url
には、送信スクリプトの有効なパスを指定します。 - HTTP基本認証のユーザー名とパスワードを設定します。
-
post_type
に送信データのタイプを設定します。サポートされているオプションは、json
またはform
(デフォルト)です。構成ファイルのコメントに記述されている使用可能なキー値を使用してメッセージをカスタマイズします。 - posturl.confを保存し、OpsCenterデーモンを再起動します。
- イベントが正しく送信されていることを確認します。
例
すべてのクラスターの重要なイベントとアラートレベルのイベントについてフォーム・データの送信が有効になっているシステムの場合、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 DATA: {"event-msg": "OpsCenter starting up.", "mixedKey": "cluster:C1", "textKey: "value"}