イベントモニタリングには、カスタムイベントをレポートするための API が複数用意されています。 これらの API を使用してイベント関連の例外を収集し、CloudMonitor にレポートできます。 イベント関連の例外発生時にアラート通知を受信できるようにアラートルールを構成することもできます。
CloudMonitor は、API、Java SDK、および Alibaba Cloud CLI を使用したデータのレポーティングに対応しています。
制限事項
- 1 件の Alibaba Cloud アカウントから送信できるレポートリクエストの数は、1 秒あたり最大 20 件です。
- 1 回のレポートで送信できるイベント数は、最大 100 件です。
- 1 回のレポートで送信できるデータサイズは、最大 500 KB です。
API を使用したデータのレポート
- エンドポイント
https://metrichub-cms-cn-hangzhou.aliyuncs.com
- リクエストの構文
POST /event/custom/upload HTTP/1.1 Authorization:<AuthorizationString> Content-Length:<Content Length> Content-MD5:<Content MD5> Content-Type application/json Date:<GMT Date> Host: metrichub-cms-cn-hangzhou.aliyuncs.com x-cms-signature:hmac-sha1 x-cms-api-version:1.0 x-cms-ip:30.27.84.196 User-Agent:cms-java-sdk-v-1.0 [{"content":"EventContent","groupId":GroupId,"name":"EventName","time":"20171023T144439.948+0800"}]
- リクエストパラメーター
名前 タイプ 必須/任意 説明 name String 必須 イベント名 groupId Numerical 必須 イベントが属するアプリケーショングループの ID time String 必須 イベントの発生時刻 content String 必須 イベントの詳細
- リクエストヘッダーの定義
下表に、イベントモニタリング用 API のリクエストヘッダーを示します。
ヘッダー 型 説明 Authorization 文字列 認証文字列。 内容: AccessKeyId:SignString User-Agent 文字列 クライアントの説明。 Content-MD5 文字列 リクエスト本文の値で MD5 ハッシュを計算して取得した、すべて大文字の文字列。 リクエストに本文がない場合は不要。 Content-Length 数値 RFC 2616 に定義された、HTTP リクエストの本文の長さ。 リクエストに本文がない場合は不要。 Content-Type 文字列 HTTP リクエストの本文のタイプ。 有効な値: application および json。 Date 文字列 HTTP リクエストの標準タイムスタンプヘッダー。 このヘッダーは、RFC 1123 形式に準拠し、GMT を使用 (例: Mon, 3 Jan 2010 08:33:47 GMT) 。 Host 文字列 HTTP リクエストの完全なホスト名。 ( https:// などのプロトコルヘッダーは含まれない。 例: metrichub-cms-cn-hangzhou.aliyuncs.com) x-cms-api-version 文字列 API のバージョン。 現在のバージョンは 1.0。 x-cms-signature 文字列 署名アルゴリズム。 現在サポートされている署名アルゴリズムは HMAC-SHA1 のみ。 x-cms-ip 文字列 イベントをレポートするサーバーの IP アドレス (例: 10.1.1.1)。
- 署名アルゴリズム
現在サポートされている署名アルゴリズムは HMAC-SHA1 のみです。
- Alibaba Cloud AccessKey のペアを準備します。
API リクエストのデジタル署名を生成するには、AccessKey ID と AccessKey Secret で構成されるAccessKey のペアを使用する必要があります。 既存の AccessKey のペアを使用することも、新しいペアを作成して使用することもできます。 AccessKey のペアは、アクティブである必要があります。
- リクエストの署名文字列を生成します。
API 署名文字列は、HTTP リクエストのメソッド、ヘッダー、および 本文で構成されます。
SignString = VERB + "\n" + CONTENT-MD5 + "\n" + CONTENT-TYPE + "\n" + DATE + "\n" + CanonicalizedHeaders + "\n" + CanonicalizedResource
上記の式で、
\n
は改行エスケープ文字を示し、プラス記号 (+
) は文字列連結演算子を示します。 他の部分は次のように定義されます。名前 定義 例 VERB HTTP リクエストのメソッド名。 PUT、GET、および POST。 CONTENT-MD5 HTTPリクエストの本文の MD5 の値。すべて大文字の文字列。 875264590688CA6171F6228AF5BBB3D2 CONTENT-TYPE リクエストの本文のタイプ。 application/json DATE HTTP リクエストの標準タイムスタンプヘッダー。RFC1123 形式に従い、GMT を使用。 Mon, 3 Jan 2010 08:33:47 GMT CanonicalizedHeaders HTTP リクエストで x-cms および x-acs のプレフィックスが付加されたカスタムヘッダーによって構成された文字列。 x-cms-api-version:0.1.0\nx-cms-signature CanonicalizedResource HTTP リクエストのリソースで構成された文字列 (後述)。 /event/custom/upload CanonicalizedHeaders の作成方法は次のとおりです。- プレフィックス
x-cms
およびx-acs
が付加されたすべての HTTP リクエストヘッダーの名前を小文字に変換します。 - 上記の手順で取得した CMS カスタムリクエストヘッダーを昇順に並べ替えます。
- リクエストヘッダーとコンテンツの間の区切り文字の両側のスペースを削除します。
- すべてのヘッダーとコンテンツを区切り記号 (
\n
) で区切り、最終的なCanonicalizedHeaders を作成します。
CanonicalizedResource の作成方法は次のとおりです。
- CanonicalizedResource を空の文字列 ("")として設定します。
- アクセス先の URI (例:
/event/custom/upload
) を引用符の間に挿入します。 - リクエストにクエリ文字列 (
QUERY_STRING
) が含まれている場合、疑問符 (?
) を付加し、さらにクエリ文字列を CanonicalizedResource 文字列の最後に追加します。QUERY_STRING
は、URL に含まれるリクエストパラメーターの辞書式文字列です。 パラメーターの名前と値の間に等号 (=
) を挿入した文字列を作成します。 パラメーターの名前と値のペアは、辞書順に並べ替えられ、アンパサンド (&
) で接続されて文字列を作成します。 式は次のとおりです。QUERY_STRING = "KEY1=VALUE1" + "&" + "KEY2=VALUE2"
- プレフィックス
- リクエストのデジタル署名を生成します。
現在サポートされている署名アルゴリズムは HMAC-SHA1 のみです。 次の式を使用して署名を生成します。
Signature = base16(hmac-sha1(UTF8-Encoding-Of(SignString), AccessKeySecret))
- Alibaba Cloud AccessKey のペアを準備します。
- レスポンスの要素
HTTP ステータスコード 200 が返されます。
- 例
- リクエストの例
POST /event/custom/upload HTTP/1.1 Host: metrichub-cms-cn-hangzhou.aliyuncs.com x-cms-api-version:1.0 Authorization:YourAccKey:YourAccSecret Host:metrichub-cms-cn-hangzhou.aliyuncs.com" Date:Mon, 23 Oct 2017 06:51:11 GMT Content-Length:180 x-cms-signature:hmac-sha1 Content-MD5:E9EF574D1AEAAA370860FE37856995CD x-cms-ip:30.27.84.196 User-Agent:cms-java-sdk-v-1.0 Content-Type:application/json [{"content":"123,abc","groupId":100,"name":"Event_0","time":"20171023T144439.948+0800"}]
- レスポンスの例
{ "code":"200", "msg":""//The returned msg is null when the reporting is normal. }
- リクエストの例
Java SDK を使用したデータのレポート
- Mavenの依存関係
<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>aliyun-cms</artifactId> <version>0.1.2</version> </dependency>
- サンプルコード
public void uploadEvent() throws CMSException, InterruptedException { // Initialize the client. CMSClient cmsClient = new CMSClient(endpoint, accKey, secret); //Construct two events to be reported. CustomEventUploadRequest request = CustomEventUploadRequest.builder() .append(CustomEvent.builder() .setContent("abc,123") .setGroupId(101l) .setName("Event001").build()) .append(CustomEvent.builder() .setContent("abc,123") .setGroupId(101l) .setName("Event002").build()) .build(); CustomEventUploadResponse response = cmsClient.putCustomEvent(request); List<CustomEvent> eventList = new ArrayList<CustomEvent>(); eventList.add(CustomEvent.builder() .setContent("abcd,1234") .setGroupId(101l) .setName("Event001").build()); eventList.add(CustomEvent.builder() .setContent("abcd,1234") .setGroupId(101l) .setName("Event002").build()); request = CustomEventUploadRequest.builder() .setEventList(eventList).build(); response = cmsClient.putCustomEvent(request); }
Alibaba Cloud CLI を使用したデータのレポート
- 前提条件
Alibaba Cloud アカウントおよびアカウントで使用する RAM ユーザーを作成し、また CloudMonitor 権限が付与された RAM ユーザー用のアクセスキーを生成します。
- RAM ユーザーを作成します。
- RAM ユーザーの AccessKey ID と AccessKey Secret を生成します。
- RAM ユーザーに CloudMonitor 権限を付与します。
- RAM ユーザーを作成します。
- CMS SDK のインストール
- Windows でのインストール方法は次のとおりです。
cd C:\Python27\Scripts pip install aliyun-python-sdk-cms
次のコマンドを実行して Logtail をアップグレードします。
pip install --upgrade aliyun-python-sdk-cms
- Linux でのインストール方法は次のとおりです。
sudo pip install aliyun-python-sdk-cms
次のコマンドを実行して Logtail をアップグレードします。
sudo pip install —upgrade aliyun-python-sdk-cms
- Windows でのインストール方法は次のとおりです。
- モニタリングデータのレポート
PutEvent API を使用して、モニタリングデータをレポートします。
- Windows での例:
aliyuncli.exe cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171013T170923.456+0800','name':'ErrorEvent','groupId':'27147'}]"
- Linux での例:
aliyuncli cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171023T180923.456+0800','name':'ErrorEvent','groupId':'27147'}]"
- データのレポートが正常に処理された場合、、ステータスコード 200 が返されます。
{ "Code": "200" }
- Windows での例:
エラーコード | 説明 |
---|---|
200 | 正常 |
400 | クライアントリクエストの構文エラー |
403 | 検証失敗、制限速度、または権限不足 |
500 | 内部サーバーエラー |
RAM ユーザーのアクセスキーでイベントデータをレポートするには、RAM ユーザーに CloudMonitor 権限を付与する必要があります。 権限を付与しなかった場合、データのレポート時に、「イベントをアップロードできません。認証に RAM を使用してください」というメッセージが表示されます。
- RAM コンソール にログインします。
- 左側のナビゲーションウィンドウで、[ユーザー] をクリックします。
- [ユーザー] ページで、RAM ユーザーに対応する [操作] 列の [許可] をクリックします。
- [許可] ページで [AliyunCloudMonitorFullAccess] を選択し、 [OK] を選択します。