イベントモニタリングには、カスタムイベントをレポートするための API が複数用意されています。 これらの API を使用してイベント関連の例外を収集し、CloudMonitor にレポートできます。 イベント関連の例外発生時にアラート通知を受信できるようにアラートルールを構成することもできます。

CloudMonitor は、API、Java SDK、および Alibaba Cloud CLI を使用したデータのレポーティングに対応しています。

制限事項

  • 1 件の Alibaba Cloud アカウントから送信できるレポートリクエストの数は、1 秒あたり最大 20 件です。
  • 1 回のレポートで送信できるイベント数は、最大 100 件です。
  • 1 回のレポートで送信できるデータサイズは、最大 500 KB です。

API を使用したデータのレポート

  • リクエストの構文
    1. 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 のみです。

    1. Alibaba Cloud AccessKey のペアを準備します。

      API リクエストのデジタル署名を生成するには、AccessKey ID と AccessKey Secret で構成されるAccessKey のペアを使用する必要があります。 既存の AccessKey のペアを使用することも、新しいペアを作成して使用することもできます。 AccessKey のペアは、アクティブである必要があります。

    2. リクエストの署名文字列を生成します。

      API 署名文字列は、HTTP リクエストのメソッドヘッダー、および 本文で構成されます。

      1. 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 の作成方法は次のとおりです。
      1. プレフィックス x-cms および x-acs が付加されたすべての HTTP リクエストヘッダーの名前を小文字に変換します。
      2. 上記の手順で取得した CMS カスタムリクエストヘッダーを昇順に並べ替えます。
      3. リクエストヘッダーとコンテンツの間の区切り文字の両側のスペースを削除します。
      4. すべてのヘッダーとコンテンツを区切り記号 (\n) で区切り、最終的なCanonicalizedHeaders を作成します。
      1. <p class="p" id="p-1nn-2cg-pu9">CanonicalizedResource の作成方法は次のとおりです。</p>
      2. <ol class="ol" type="a" id="ol-tcn-phk-zdb">
      3. <li class="li" id="li-vw5-65r-o0f">CanonicalizedResource を空の文字列 ("")として設定します。</li>
      4. <li class="li" id="li-u9i-u6m-fxe">アクセス先の URI (例: <code class="ph codeph" id="codeph-bfv-122-6co"> /event/custom/upload</code>) を引用符の間に挿入します。
      5. </li>
      6. <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 文字列の最後に追加します。
      7. <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">&amp;</code>) で接続されて文字列を作成します。 式は次のとおりです。
      8. </p>
      9. <pre class="pre codeblock" id="codeblock-pcq-86q-o68"><code>QUERY_STRING = "KEY1=VALUE1" + "&amp;" + "KEY2=VALUE2" </code></pre>
      10. </li>
      11. </ol>
      12. </li>
      13. <li class="li" id="li-wl8-arl-mq6">リクエストのデジタル署名を生成します。
      14. <div class="p" id="p-5r4-v5q-0rm">現在サポートされている署名アルゴリズムは HMAC-SHA1 のみです。 次の式を使用して署名を生成します。
      15. <pre class="pre codeblock" id="codeblock-c09-6e0-znz"><code>Signature = base16(hmac-sha1(UTF8-Encoding-Of(SignString), AccessKeySecret))</code></pre>
      16. </div>
      17. </li>
      18. </ol>
      19. </li>
      20. </ul>
      21. <ul class="ul" id="ul-dr3-443-ygb">
      22. <li class="li" id="li-12j-ky6-ce0"><strong class="ph b" id="b-knw-pgn-eco">レスポンスの要素</strong>
      23. <p class="p" id="p-a5w-cbn-p9s">HTTP ステータスコード 200 が返されます。</p>
      24. </li>
      25. </ul>
      26. <ul class="ul" id="ul-qxs-njj-zdb">
      27. <li class="li" id="li-ixm-nak-kfo"><strong class="ph b" id="b-rt3-9r1-dg9"></strong>
      28. <ul class="ul" id="ul-zqf-4jj-zdb">
      29. <li class="li" id="li-1uy-5o3-16y">リクエストの例
      30. <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”}]

      1. </ul>
      2. <ul class="ul" id="ul-trp-qjj-zdb">
      3. <li class="li" id="li-9mp-3dg-q21">レスポンスの例
      4. <pre class="pre codeblock" id="codeblock-3cx-o7o-x3b"><code>{

      “code”:”200”, “msg”:””//The returned msg is null when the reporting is normal.}

      1. </ul>
      2. </li>
      3. </ul>
      4. </section>
      5. <section class="section" id="section-zdb-w3j-zdb">
      6. <h2 class="title sectiontitle" id="title-ref-f2v-s76">Java SDK を使用したデータのレポート</h2>
      7. <ul class="ul" id="ul-fml-5jj-zdb">
      8. <li class="li" id="li-imv-b7e-ag8"><strong class="ph b" id="b-9fv-k3q-0or">Mavenの依存関係</strong>
      9. <pre class="pre codeblock" id="codeblock-dcc-nxb-r96"><code>&lt;dependency&gt;
      10. &lt;groupId&gt;com.aliyun.openservices&lt;/groupId&gt;
      11. &lt;artifactId&gt;aliyun-cms&lt;/artifactId&gt;
      12. &lt;version&gt;0.1.2&lt;/version&gt;

      </dependency>

      1. </ul>
      2. <ul class="ul" id="ul-lmy-vjj-zdb">
      3. <li class="li" id="li-n15-y45-s3f"><strong class="ph b" id="b-nwp-e5v-sgl">サンプルコード</strong>
      4. <pre class="pre codeblock" id="codeblock-1p1-7rz-7y1"><code>public void uploadEvent() throws CMSException, InterruptedException {
      5. // Initialize the client.
      6. CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);
      7. //Construct two events to be reported.
      8. CustomEventUploadRequest request = CustomEventUploadRequest.builder()
      9. .append(CustomEvent.builder()
      10. .setContent("abc,123")
      11. .setGroupId(101l)
      12. .setName("Event001").build())
      13. .append(CustomEvent.builder()
      14. .setContent("abc,123")
      15. .setGroupId(101l)
      16. .setName("Event002").build())
      17. .build();
      18. CustomEventUploadResponse response = cmsClient.putCustomEvent(request);
      19. List&lt;CustomEvent&gt; eventList = new ArrayList&lt;CustomEvent&gt;();
      20. eventList.add(CustomEvent.builder()
      21. .setContent("abcd,1234")
      22. .setGroupId(101l)
      23. .setName("Event001").build());
      24. eventList.add(CustomEvent.builder()
      25. .setContent("abcd,1234")
      26. .setGroupId(101l)
      27. .setName("Event002").build());
      28. request = CustomEventUploadRequest.builder()
      29. .setEventList(eventList).build();
      30. response = cmsClient.putCustomEvent(request);
      31. }</code></pre>
      32. </li>
      33. </ul>
      34. </section>
      35. <section class="section" id="section-pvp-1kj-zdb">
      36. <h2 class="title sectiontitle" id="title-ynv-ls3-qpx">Alibaba Cloud CLI を使用したデータのレポート</h2>
      37. <ol class="ol" id="ol-tm5-3b2-zgb">
      38. <li class="li" id="li-gcb-k2a-hr4"><strong class="ph b" id="b-1af-dax-yfv">前提条件</strong>
      39. <p class="p" id="p-xu9-66k-99g">Alibaba Cloud アカウントおよびアカウントで使用する RAM ユーザーを作成し、また CloudMonitor 権限が付与された RAM ユーザー用のアクセスキーを生成します。</p>
      40. <ol class="ol" type="a" id="ul-vwk-ckj-zdb">
      41. <li class="li" id="li-dh2-q2x-a2c">RAM ユーザーを作成します。<img class="image break" id="image-t5x-gkj-zdb" src="http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/5529203751/p4830.png"></li>
      42. <li class="li" id="li-0yb-fwu-aru">RAM ユーザーの AccessKey ID と AccessKey Secret を生成します。<img class="image break" id="image-o52-3kj-zdb" src="http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/5529203751/p4831.png"></li>
      43. <li class="li" id="li-b01-0lg-eux">RAM ユーザーに CloudMonitor 権限を付与します。<img class="image break" id="image-qlz-3kj-zdb" src="http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/5529203751/p4832.png"></li>
      44. </ol>
      45. </li>
      46. <li class="li" id="li-wc1-5jy-haq"><strong class="ph b" id="b-1y3-k20-3a1">CMS SDK のインストール</strong>
      47. <ul class="ul" id="ul-uyh-mpj-zdb">
      48. <li class="li" id="li-r27-9ii-ohv">Windows でのインストール方法は次のとおりです。
      49. <pre class="pre codeblock" id="codeblock-kmj-l4r-lb3"><code>cd C:\Python27\Scripts

      pip install aliyun-python-sdk-cms

      次のコマンドを実行して Logtail をアップグレードします。

      1. pip install upgrade aliyun-python-sdk-cms

      1. </ul>
      2. <ul class="ul" id="ul-tx2-rpj-zdb">
      3. <li class="li" id="li-pn0-j1r-02b">Linux でのインストール方法は次のとおりです。
      4. <pre class="pre codeblock" id="codeblock-33v-rlv-b9n"><code>sudo pip install aliyun-python-sdk-cms</code></pre>
      5. <p class="p" id="p-0s4-yeo-25p"> 次のコマンドを実行して Logtail をアップグレードします。</p>
      6. <pre class="pre codeblock" id="codeblock-ein-k9w-9p7"><code>sudo pip install —upgrade aliyun-python-sdk-cms</code></pre>
      7. </li>
      8. </ul>
      9. </li>
      10. <li class="li" id="li-mvb-djx-mdq"><strong class="ph b" id="b-kcs-k1o-r1x">モニタリングデータのレポート</strong>
      11. <p class="p" id="p-nz0-4cc-aa3"><span class="keyword parmname" id="parmname-v5a-l4o-paf">PutEvent</span> API を使用して、モニタリングデータをレポートします。
      12. </p>
      13. <ul class="ul" id="ul-egv-cqj-zdb">
      14. <li class="li" id="li-ve5-9yb-ubt">Windows での例:
      15. <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>
      16. </li>
      17. <li class="li" id="li-q99-h5j-y75">Linux での例:
      18. <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>
      19. </li>
      20. <li class="li" id="li-b25-ecs-ov6">データのレポートが正常に処理された場合、、ステータスコード 200 が返されます。
      21. <pre class="pre codeblock" id="codeblock-nfd-dfy-obr"><code>{

      “Code”: “200”}

      1. </ul>
      2. </li>
      3. </ol>
      4. <strong class="ph b" id="b-i9c-5qj-uzn">エラーコード</strong>
      5. <table class="table" id="table-j4t-hqj-zdb">
      6. <caption></caption>
      7. <colgroup>
      8. <col style="width:50%">
      9. <col style="width:50%">
      10. </colgroup>
      11. <thead class="thead" id="thead-m0w-v59-uqp">
      12. <tr id="row-25u-39k-qyw">
      13. <th class="entry align-left colsep-1 rowsep-1" id="concept-ezl-l3b-wdb-entry-pxh-vk0-xkg">エラーコード</th>
      14. <th class="entry align-left colsep-1 rowsep-1" id="concept-ezl-l3b-wdb-entry-d90-1r3-pjx">説明</th>
      15. </tr>
      16. </thead>
      17. <tbody class="tbody" id="tbody-3ec-uzt-kb9">
      18. <tr id="row-h04-up1-n3u">
      19. <td class="entry align-left colsep-1 rowsep-1" id="entry-0mw-y41-cps">200</td>
      20. <td class="entry align-left colsep-1 rowsep-1" id="entry-rlk-5p4-wlu">正常</td>
      21. </tr>
      22. <tr id="row-10x-ilq-wkx">
      23. <td class="entry align-left colsep-1 rowsep-1" id="entry-486-v1a-aab">400</td>
      24. <td class="entry align-left colsep-1 rowsep-1" id="entry-ut5-njx-0h9">クライアントリクエストの構文エラー</td>
      25. </tr>
      26. <tr id="row-oq6-wc9-j8b">
      27. <td class="entry align-left colsep-1 rowsep-1" id="entry-fkq-fux-4cc">403</td>
      28. <td class="entry align-left colsep-1 rowsep-1" id="entry-iob-goo-rt3">検証失敗、制限速度、または権限不足</td>
      29. </tr>
      30. <tr id="row-9a2-p0d-day">
      31. <td class="entry align-left colsep-1 rowsep-1" id="entry-4gp-tsw-fax">500</td>
      32. <td class="entry align-left colsep-1 rowsep-1" id="entry-i7d-wzm-484">内部サーバーエラー</td>
      33. </tr>
      34. </tbody>
      35. </table>
      36. <strong class="ph b" id="b-yp1-6h5-07w">RAM ユーザーの認証</strong>
      37. <p class="p" id="p-tfo-i6n-708">RAM ユーザーのアクセスキーでイベントデータをレポートするには、RAM ユーザーに CloudMonitor 権限を付与する必要があります。 権限を付与しなかった場合、データのレポート時に、「イベントをアップロードできません。認証に
      38. RAM を使用してください」というメッセージが表示されます。
      39. </p>
      40. <ol class="ol" id="ol-xvm-mqj-zdb">
      41. <li class="li" cond-props="china intl" id="li-19g-13d-ne3"><a href="https://ram.console.aliyun.com/#/overview">RAM コンソール</a> にログインします。
      42. </li>
      43. <li class="li" id="li-pps-y72-ad9">左側のナビゲーションウィンドウで、<span class="ph uicontrol" id="uicontrol-gy9-vck-mrr">[ユーザー]</span> をクリックします。
      44. </li>
      45. <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://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/5529203751/p4851.png"></li>
      46. <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://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/6529203751/p4852.png"></li>
      47. </ol>
      48. </section>
      49. </div>
      50. </article>
      51. </main>