イベントモニタリングには、カスタムイベントをレポートするための API が複数用意されています。 これらの API を使用してイベント関連の例外を収集し、CloudMonitor にレポートできます。 イベント関連の例外発生時にアラート通知を受信できるようにアラートルールを構成することもできます。
CloudMonitor は、API、Java SDK、および Alibaba Cloud CLI を使用したデータのレポーティングに対応しています。
制限事項
- 1 件の Alibaba Cloud アカウントから送信できるレポートリクエストの数は、1 秒あたり最大 20 件です。
- 1 回のレポートで送信できるイベント数は、最大 100 件です。
- 1 回のレポートで送信できるデータサイズは、最大 500 KB です。
API を使用したデータのレポート
- リクエストの構文
POST /event/custom/upload HTTP/1.1Authorization:<AuthorizationString>Content-Length:<Content Length>Content-MD5:<Content MD5>Content-Type application/jsonDate:<GMT Date>Host: metrichub-cms-cn-hangzhou.aliyuncs.comx-cms-signature:hmac-sha1x-cms-api-version:1.0x-cms-ip:30.27.84.196User-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 を作成します。
<p class="p" id="p-1nn-2cg-pu9">CanonicalizedResource の作成方法は次のとおりです。</p>
<ol class="ol" type="a" id="ol-tcn-phk-zdb">
<li class="li" id="li-vw5-65r-o0f">CanonicalizedResource を空の文字列 ("")として設定します。</li>
<li class="li" id="li-u9i-u6m-fxe">アクセス先の URI (例: <code class="ph codeph" id="codeph-bfv-122-6co"> /event/custom/upload</code>) を引用符の間に挿入します。
</li>
<li class="li" id="li-f9e-zjx-xva">リクエストにクエリ文字列 (<code class="ph codeph" id="codeph-mre-936-m3d">QUERY_STRING</code>) が含まれている場合、疑問符 (<code class="ph codeph" id="codeph-zvu-zgz-f1n">?</code>) を付加し、さらにクエリ文字列を CanonicalizedResource 文字列の最後に追加します。
<p class="p" id="p-q4y-ny0-4fn"><code class="ph codeph" id="codeph-0rr-7ws-2r8"> QUERY_STRING</code> は、URL に含まれるリクエストパラメーターの辞書式文字列です。 パラメーターの名前と値の間に等号 (<code class="ph codeph" id="codeph-q9q-r2z-p74">=</code>) を挿入した文字列を作成します。 パラメーターの名前と値のペアは、辞書順に並べ替えられ、アンパサンド (<code class="ph codeph" id="codeph-hxk-kbq-thd">&</code>) で接続されて文字列を作成します。 式は次のとおりです。
</p>
<pre class="pre codeblock" id="codeblock-pcq-86q-o68"><code>QUERY_STRING = "KEY1=VALUE1" + "&" + "KEY2=VALUE2" </code></pre>
</li>
</ol>
</li>
<li class="li" id="li-wl8-arl-mq6">リクエストのデジタル署名を生成します。
<div class="p" id="p-5r4-v5q-0rm">現在サポートされている署名アルゴリズムは HMAC-SHA1 のみです。 次の式を使用して署名を生成します。
<pre class="pre codeblock" id="codeblock-c09-6e0-znz"><code>Signature = base16(hmac-sha1(UTF8-Encoding-Of(SignString), AccessKeySecret))</code></pre>
</div>
</li>
</ol>
</li>
</ul>
<ul class="ul" id="ul-dr3-443-ygb">
<li class="li" id="li-12j-ky6-ce0"><strong class="ph b" id="b-knw-pgn-eco">レスポンスの要素</strong>
<p class="p" id="p-a5w-cbn-p9s">HTTP ステータスコード 200 が返されます。</p>
</li>
</ul>
<ul class="ul" id="ul-qxs-njj-zdb">
<li class="li" id="li-ixm-nak-kfo"><strong class="ph b" id="b-rt3-9r1-dg9">例</strong>
<ul class="ul" id="ul-zqf-4jj-zdb">
<li class="li" id="li-1uy-5o3-16y">リクエストの例
<pre class="pre codeblock" id="codeblock-qq0-h91-q0t"><code>POST /event/custom/upload HTTP/1.1
Host: metrichub-cms-cn-hangzhou.aliyuncs.comx-cms-api-version:1.0Authorization:YourAccKey:YourAccSecretHost:metrichub-cms-cn-hangzhou.aliyuncs.com”Date:Mon, 23 Oct 2017 06:51:11 GMTContent-Length:180x-cms-signature:hmac-sha1Content-MD5:E9EF574D1AEAAA370860FE37856995CDx-cms-ip:30.27.84.196User-Agent:cms-java-sdk-v-1.0Content-Type:application/json[{“content”:”123,abc”,”groupId”:100,”name”:”Event_0”,”time”:”20171023T144439.948+0800”}]
</ul>
<ul class="ul" id="ul-trp-qjj-zdb">
<li class="li" id="li-9mp-3dg-q21">レスポンスの例
<pre class="pre codeblock" id="codeblock-3cx-o7o-x3b"><code>{
</ul>
</li>
</ul>
</section>
<section class="section" id="section-zdb-w3j-zdb">
<h2 class="title sectiontitle" id="title-ref-f2v-s76">Java SDK を使用したデータのレポート</h2>
<ul class="ul" id="ul-fml-5jj-zdb">
<li class="li" id="li-imv-b7e-ag8"><strong class="ph b" id="b-9fv-k3q-0or">Mavenの依存関係</strong>
<pre class="pre codeblock" id="codeblock-dcc-nxb-r96"><code><dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>aliyun-cms</artifactId>
<version>0.1.2</version>
</ul>
<ul class="ul" id="ul-lmy-vjj-zdb">
<li class="li" id="li-n15-y45-s3f"><strong class="ph b" id="b-nwp-e5v-sgl">サンプルコード</strong>
<pre class="pre codeblock" id="codeblock-1p1-7rz-7y1"><code>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);
}</code></pre>
</li>
</ul>
</section>
<section class="section" id="section-pvp-1kj-zdb">
<h2 class="title sectiontitle" id="title-ynv-ls3-qpx">Alibaba Cloud CLI を使用したデータのレポート</h2>
<ol class="ol" id="ol-tm5-3b2-zgb">
<li class="li" id="li-gcb-k2a-hr4"><strong class="ph b" id="b-1af-dax-yfv">前提条件</strong>
<p class="p" id="p-xu9-66k-99g">Alibaba Cloud アカウントおよびアカウントで使用する RAM ユーザーを作成し、また CloudMonitor 権限が付与された RAM ユーザー用のアクセスキーを生成します。</p>
<ol class="ol" type="a" id="ul-vwk-ckj-zdb">
<li class="li" id="li-dh2-q2x-a2c">RAM ユーザーを作成します。<img class="image break" id="image-t5x-gkj-zdb" src="http://help-static-aliyun-doc.aliyuncs.com/assets/img/5529203751/p4830.png"></li>
<li class="li" id="li-0yb-fwu-aru">RAM ユーザーの AccessKey ID と AccessKey Secret を生成します。<img class="image break" id="image-o52-3kj-zdb" src="http://help-static-aliyun-doc.aliyuncs.com/assets/img/5529203751/p4831.png"></li>
<li class="li" id="li-b01-0lg-eux">RAM ユーザーに CloudMonitor 権限を付与します。<img class="image break" id="image-qlz-3kj-zdb" src="http://help-static-aliyun-doc.aliyuncs.com/assets/img/5529203751/p4832.png"></li>
</ol>
</li>
<li class="li" id="li-wc1-5jy-haq"><strong class="ph b" id="b-1y3-k20-3a1">CMS SDK のインストール</strong>
<ul class="ul" id="ul-uyh-mpj-zdb">
<li class="li" id="li-r27-9ii-ohv">Windows でのインストール方法は次のとおりです。
<pre class="pre codeblock" id="codeblock-kmj-l4r-lb3"><code>cd C:\Python27\Scripts
pip install —upgrade aliyun-python-sdk-cms
</ul>
<ul class="ul" id="ul-tx2-rpj-zdb">
<li class="li" id="li-pn0-j1r-02b">Linux でのインストール方法は次のとおりです。
<pre class="pre codeblock" id="codeblock-33v-rlv-b9n"><code>sudo pip install aliyun-python-sdk-cms</code></pre>
<p class="p" id="p-0s4-yeo-25p"> 次のコマンドを実行して Logtail をアップグレードします。</p>
<pre class="pre codeblock" id="codeblock-ein-k9w-9p7"><code>sudo pip install —upgrade aliyun-python-sdk-cms</code></pre>
</li>
</ul>
</li>
<li class="li" id="li-mvb-djx-mdq"><strong class="ph b" id="b-kcs-k1o-r1x">モニタリングデータのレポート</strong>
<p class="p" id="p-nz0-4cc-aa3"><span class="keyword parmname" id="parmname-v5a-l4o-paf">PutEvent</span> API を使用して、モニタリングデータをレポートします。
</p>
<ul class="ul" id="ul-egv-cqj-zdb">
<li class="li" id="li-ve5-9yb-ubt">Windows での例:
<pre class="pre codeblock" id="codeblock-7wv-8ku-8b5"><code>aliyuncli.exe cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171013T170923.456+0800','name':'ErrorEvent','groupId':'27147'}]"</code></pre>
</li>
<li class="li" id="li-q99-h5j-y75">Linux での例:
<pre class="pre codeblock" id="codeblock-oe4-93c-wpq"><code>aliyuncli cms PutEvent --EventInfo "[{'content':'helloworld','time':'20171023T180923.456+0800','name':'ErrorEvent','groupId':'27147'}]"</code></pre>
</li>
<li class="li" id="li-b25-ecs-ov6">データのレポートが正常に処理された場合、、ステータスコード 200 が返されます。
<pre class="pre codeblock" id="codeblock-nfd-dfy-obr"><code>{
</ul>
</li>
</ol>
<strong class="ph b" id="b-i9c-5qj-uzn">エラーコード</strong>
<table class="table" id="table-j4t-hqj-zdb">
<caption></caption>
<colgroup>
<col style="width:50%">
<col style="width:50%">
</colgroup>
<thead class="thead" id="thead-m0w-v59-uqp">
<tr id="row-25u-39k-qyw">
<th class="entry align-left colsep-1 rowsep-1" id="concept-ezl-l3b-wdb-entry-pxh-vk0-xkg">エラーコード</th>
<th class="entry align-left colsep-1 rowsep-1" id="concept-ezl-l3b-wdb-entry-d90-1r3-pjx">説明</th>
</tr>
</thead>
<tbody class="tbody" id="tbody-3ec-uzt-kb9">
<tr id="row-h04-up1-n3u">
<td class="entry align-left colsep-1 rowsep-1" id="entry-0mw-y41-cps">200</td>
<td class="entry align-left colsep-1 rowsep-1" id="entry-rlk-5p4-wlu">正常</td>
</tr>
<tr id="row-10x-ilq-wkx">
<td class="entry align-left colsep-1 rowsep-1" id="entry-486-v1a-aab">400</td>
<td class="entry align-left colsep-1 rowsep-1" id="entry-ut5-njx-0h9">クライアントリクエストの構文エラー</td>
</tr>
<tr id="row-oq6-wc9-j8b">
<td class="entry align-left colsep-1 rowsep-1" id="entry-fkq-fux-4cc">403</td>
<td class="entry align-left colsep-1 rowsep-1" id="entry-iob-goo-rt3">検証失敗、制限速度、または権限不足</td>
</tr>
<tr id="row-9a2-p0d-day">
<td class="entry align-left colsep-1 rowsep-1" id="entry-4gp-tsw-fax">500</td>
<td class="entry align-left colsep-1 rowsep-1" id="entry-i7d-wzm-484">内部サーバーエラー</td>
</tr>
</tbody>
</table>
<strong class="ph b" id="b-yp1-6h5-07w">RAM ユーザーの認証</strong>
<p class="p" id="p-tfo-i6n-708">RAM ユーザーのアクセスキーでイベントデータをレポートするには、RAM ユーザーに CloudMonitor 権限を付与する必要があります。 権限を付与しなかった場合、データのレポート時に、「イベントをアップロードできません。認証に
RAM を使用してください」というメッセージが表示されます。
</p>
<ol class="ol" id="ol-xvm-mqj-zdb">
<li class="li" cond-props="china intl" id="li-19g-13d-ne3"><a href="https://ram.console.aliyun.com/#/overview">RAM コンソール</a> にログインします。
</li>
<li class="li" id="li-pps-y72-ad9">左側のナビゲーションウィンドウで、<span class="ph uicontrol" id="uicontrol-gy9-vck-mrr">[ユーザー]</span> をクリックします。
</li>
<li class="li" id="li-qz5-3z8-cbb">[ユーザー] ページで、RAM ユーザーに対応する [操作] 列の <span class="ph uicontrol" id="uicontrol-j8z-e4m-94v">[許可]</span> をクリックします。 <img class="image break" id="image-zx4-rqj-zdb" src="http://help-static-aliyun-doc.aliyuncs.com/assets/img/5529203751/p4851.png"></li>
<li class="li" id="li-30p-wt3-pvo"> [許可] ページで <span class="ph uicontrol" id="uicontrol-w1e-bt7-ala">[AliyunCloudMonitorFullAccess]</span> を選択し、<span class="ph uicontrol" id="uicontrol-9cq-nje-7p3"> [OK]</span> を選択します。 <img class="image break" id="image-frp-5qj-zdb" src="http://help-static-aliyun-doc.aliyuncs.com/assets/img/6529203751/p4852.png"></li>
</ol>
</section>
</div>
</article>
</main>
“code”:”200”, “msg”:””//The returned msg is null when the reporting is normal.}
</dependency>
pip install aliyun-python-sdk-cms
次のコマンドを実行して Logtail をアップグレードします。
“Code”: “200”}
- Alibaba Cloud AccessKey のペアを準備します。