カスタマイズモニタリングでは、モニタリングデータのレポートに使用できる API を提供します。 具体的には、API を使用すると、収集した時系列データを Cloud Monitor にレポートしたり、アラーム通知を受信するようアラームルールの設定ができます。

Cloud Monitor では、OpenAPI、Java SDK、および Alibaba Cloud CLI の 3 つのデータレポート方法が提供されます。

制限

  • QPS は、北京、上海、杭州の各リージョンで 200、張家口、深センの各リージョンで 100、その他のリージョンでは 50 に制限されています。
  • 最大 100 のデータエントリーが一度にレポートされます。 ボディサイズは 256 KB を超えることはできません。
  • metricName フィールドは、文字、数字、および下線のみをサポートします。 フィールドは文字で始まる必要があります。 文字以外で開始した場合、大文字の "A" に置き換えられ、その他のすべての無効な文字はアンダースコア (_) に置き換えられます。
  • dimensions フィールドでは、"="、"&" および "," はサポートされていません。 無効な文字はアンダースコア (_) に置き換えられます。
  • metricNamedimensions は 64 バイトを超えることはできません。 それ以外の場合、Key-Value は切り詰められます。
  • 生データの報告には手数料がかかります。 無料版では、集計データレポートがサポートされています (つまり、データをレポートするときは、type フィールドに "1" を入れ、"request" パラメーターに渡す必要があります)。

OpenAPI を使ったレポートデータ

OpenAPI を使用して生データをレポートした後、Cloud Monitor では次の統計方法を使用して 1 分間隔と 5 分間隔で統計が計算されます。

  • Average: 平均値
  • Maximum: 最大値
  • Minimum: 最小値
  • Sum: 合計値
  • SampleCount: カウント
  • SumPerSecond: 対応する集約期間の合計/合計秒。 移動平均計算を使用することもできます。
  • CountPerSecond: 対応する集約期間のカウント/合計秒。 移動平均計算を使用することもできます。
  • LastValue: 集約期間内の最後のサンプリング値。これはゲージに似ています。
  • P10: 0.1 パーセンタイル、集約期間内の全サンプリングデータの 10% より大きい
  • P20: 0.2 パーセンタイル、集約期間内の全サンプリングデータの 20% より大きい
  • P30: 0.3 パーセンタイル、集約期間内の全サンプリングデータの 30% より大きい
  • P40: 0.4 パーセンタイル、集約期間内の全サンプリングデータの 40% より大きい
  • P50: 0.5 パーセンタイル、集約期間内の全サンプリングデータの 50% より大きい、中央値とも呼ばれる
  • P60: 0.6 パーセンタイル 、集約期間内の全サンプリングデータの 60% より大きい
  • P70: 0.7 パーセンタイル、集約期間内の全サンプリングデータの 70% より大きい
  • P75: 0.75 パーセンタイル、集約期間内の全サンプリングデータの 75% より大きい
  • P80: 0.8 パーセンタイル、集約期間内の全サンプリングデータの 80% より大きい
  • P90: 0.9 パーセンタイル、集約期間内の全サンプリングデータの 90% より大きい
  • P95: 0.95 パーセンタイル、集約期間内の全サンプリングデータの 95% より大きい
  • P98: 0.98 パーセンタイル、集約期間内の全サンプリングデータの 98% より大きい
  • P99: 0.99 パーセンタイル、集約期間内の全サンプリングデータの 99% より大きい
  • サービスアドレス

    サービスのインターネットアドレス: https://metrichub-cms-cn-hangzhou.aliyuncs.com

    サービスのイントラネットアドレスは次のとおりです。

    リージョン リージョン ID エンドポイント
    中国 (杭州) cn-hangzhou http://metrichub-cn-hangzhou.aliyun.com
    中国 (張家口) cn-zhangjiakou http://metrichub-cn-zhangjiakou.aliyun.com
    中国 (上海) cn-shanghai http://metrichub-cn-shanghai.aliyun.com
    中国 (北京) cn-beijing http://metrichub-cn-beijing.aliyun.com
    中国 (青島) cn-qingdao http://metrichub-cn-qingdao.aliyun.com
    中国 (深セン) cn-shenzhen http://metrichub-cn-shenzhen.aliyun.com
    中国 (香港) cn-hongkong http://metrichub-cn-hongkong.aliyun.com
    中国 (フフホト) cn-huhehaote http://metrichub-cn-huhehaote.aliyun.com
    UAE (ドバイ) me-east-1 http://metrichub-me-east-1.aliyun.com
    米国 (シリコンバレー) us-west-1 http://metrichub-us-west-1.aliyun.com
    米国 (バージニア) us-east-1 http://metrichub-us-east-1.aliyun.com
    日本 (東京) ap-northeast-1 http://metrichub-ap-northeast-1.aliyun.com
    ドイツ (フランクフルト) eu-central-1 http://metrichub-eu-central-1.aliyun.com
    オーストラリア (シドニー) ap-southeast-2 http://metrichub-ap-southeast-2.aliyun.com
    シンガポール ap-southeast-1 http://metrichub-ap-southeast-1.aliyun.com
    マレーシア (クアラルンプール) ap-southeast-3 http://metrichub-ap-southeast-3.aliyun.com
    インド (ムンバイ) ap-south-1 http://metrichub-ap-south-1.aliyuncs.com
  • リクエスト構文
    POST /metric/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
    [{"groupId":101,"metricName":"","dimensions":{"sampleName1":"value1","sampleName2":"value2"},"time":"","type":0,"period":60,"values":{"value":10.5,"Sum":100}}]
  • 署名アルゴリズム

    詳しくは、「署名アルゴリズム」をご参照ください。

  • リクエストパラメーター
    名前 必須 説明
    groupId long はい アプリケーショングループ ID。
    metricName 文字列 はい モニタリング測定名。 名前の長さは最大 64 バイトで、文字、数字、およびコネクタ "_-/\" を含むことができます。 制限を超える文字は切り詰められます。
    dimensions オブジェクト はい デメンションマップ。 key-value は文字列で、キーと値の長さがそれぞれ最大 64 バイトで、文字、数字、およびコネクタ "_-/\" を含むことができます。 制限を超える文字は切り詰められます。 key-value のペアの最大数は 10 です。
    time 文字列 はい 測定データの時刻。 "yyyyMMdd'T'HHmmss.SSSZ" と長い形式のタイムスタンプをサポートします、たとえば、20171012T132456.888+0800、または 1508136760000。
    type int はい

    レポートされたデータの型。 0 は生データを表し、1 は集計データを表します。

    集計データをレポートするときは、60 秒と 300 秒の両方の集計期間でデータをレポートすることを推奨します。 そうでなければ、7 日以上経過したモニタリングデータを照会することはできません。

    period 文字列 いいえ

    秒単位の集約期間。

    type=1 の場合、このフィールドは必須です。 値は、60 または 300 です。

    values オブジェクト はい 測定値の集まり。 type=0 の場合、キーは "value" である必要があり、生データがレポートされます。 Cloud Monitor は、最大、カウント、合計などの集計期間に基づいて、生データを複数の種類のデータに集計します。

Java SDK を使ったデータのレポート

  • Java SDK のインストール
    Maven を介して Java SDK をインストールするときは、次の依存関係を追加する必要があります。
    <dependency>
                <groupId>com.aliyun.openservices</groupId>
                <artifactId>log4j-core</artifactId>
                <version>5.1.6</version>
    </dependency>
  • 応答要素

    システムは HTTP ステータスコード 200 を返します。

    • リクエストの例
      POST /metric/custom/upload HTTP/1.1 
      Host: metrichub-cms-cn-hangzhou.aliyuncs.com
      x-cms-api-version:1.0
      Authorization:yourAccessKeyId:yourAccessKeySecret  
      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
      [{"groupId":101,"metricName":"","dimensions":{"sampleName1":"value1","sampleName2":"value2"},"time":"","type":0,"period":60,"values":{"value":10.5,"Sum":100}}]
    • 応答の例
      {
         "code":"200",
         "msg":""//The returned msg is null when the reporting is normal.
      }
  • コード例
    • 生データのレポート
      CMSClientInit.groupId = 101L;//Set a common group ID.
              CMSClient cmsClient = new CMSClient(endpoint, accKey, secret);//Initialize the client.
              CustomMetricUploadRequest request = CustomMetricUploadRequest.builder()
                      .append(CustomMetric.builder()
                              .setMetricName("testMetric")//Metric name
                              .setGroupId(102L)//Set a custom group ID.
                              .setTime(new Date())
                              .setType(CustomMetric.TYPE_VALUE)//The type is raw data.
                              .appendValue(MetricAttribute.VALUE, 1f)//The key must be this when the type is raw data.
                              .appendDimension("key", "value")//Add a dimension.
                              .appendDimension("ip", "127.0.0.1")//Add a dimension.
                              .build())
                      .build();
              CustomMetricUploadResponse response = cmsClient.putCustomMetric(request);//Report data.
              System.out.println(JSONObject.toJSONString(response));
    • 複数の集計期間の集計データを自動的に報告

      SDK ではローカル集計後のデータレポートがサポートされます。 集計期間は、1 分と 5 分です。

      データ型 説明 集計値 メモリ使用量 (名前、ディメンション、個々の時系列、および個々の集計期間を除く)
      Value 標準値 LastValue 以外のすべてのプロパティ 約 4 KB
      Gauge サンプル値 LastValue 4 バイト
      Meter 合計と速度 Sum、SumPerSecond 50 バイト
      Counter カウント SampleCount 10 バイト
      Timer 計算時間 SampleCount、CountPerSecond、Average, Maximum、Minimum、PXX (P10–P99) 約 4 KB
      Histogram ディストリビューション SampleCount, Average, Maximum, Minimum, PXX(P10–P99) 約 4 KB
      //Initialize
              CMSClientInit.groupId = 0L;
              CMSClient cmsClient = new CMSClient(accKey, secret, endpoint);//Create a client.
              CMSMetricRegistryBuilder builder = new CMSMetricRegistryBuilder();
              builder.setCmsClient(cmsClient);
              final MetricRegistry registry = builder.build();//Create a registry which contains two aggregation periods.
              //or final MetricRegistry registry = builder.build(RecordLevel._60S);//Create a registry which contains only the one-minute aggregation period.
      //Use value.
      ValueWrapper value = registry.value(MetricName.build("value"));
      value.update(6.5);
      //Use meter.
      MeterWrapper meter = registry.meter(MetricName.build("meter"));
      meter.update(7.2);
      //Use counter.
      CounterWrapper counter = registry.counter(MetricName.build("counter"));
      counter.inc(20);
      counter.dec(5);
      //Use timer.
      TimerWrapper timer = registry.timer(MetricName.build("timer"));
      timer.update(30, TimeUnit.MILLISECONDS);
      //Use histogram.
      HistogramWrapper histogram = registry.histogram(MetricName.build("histogram"));
      histogram.update(20);
      //Use gauge.
      final List list = new ArrayList();
      registry.gauge(MetricName.build("gauge"), new Gauge() {
                              @Override
                              public Number getValue() {
                                  return list.size();
                              }
                          });

Alibaba Cloud CLI を使用したデータのレポート

Alibaba Cloud アカウントの準備

Alibaba Cloud アカウントで RAM ユーザーを作成し、Cloud Monitor アクセス権限を持つ RAM ユーザー Access Key (AK) を生成したことをご確認ください。

  • RAM ユーザーの作成

  • RAM ユーザーの AccessKeyID と AccessKeySecret の生成

  • RAM ユーザーに対して、Cloud Monitor アクセス許可を付与

Alibaba Cloud CLI のインストール

システム要件:Linux、UNIX、または Mac OS

環境要件:Python 2.7.x をインストール済

  1. Python のインストール
    • Python 2.7.x をインストール済の場合、この手順をスキップします。
    • それ以外の場合は、コマンドラインインターフェイスで次のコマンドを実行します。
      wget をインストール済であることをご確認ください。
      wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz (or download it in some other way and put it in a certain path)
      tar -zxvf Python-2.7.8.tgz
      cd Python-2.7.8
      ./configure
      make
      sudo make install
  2. pip のインストール
    • コマンドラインインターフェイスで次のコマンドを実行します。
      pip をインストール済の場合、この手順をスキップしてください。
      curl "https://bootstrap.pypa.io/get-pip.py" -o "pip-install.py"
      sudo python pip-install.py
    • システムに次のような、あるいは同様の情報が表示されれば、インストールは成功です。
      Successfully installed pip-7.1.2 setuptools-18.7 wheel-0.26.0
  3. Alibaba Cloud CLI のインストール。
    • 以前のバージョンの pip を使うと Alibaba Cloud CLI のインストールに失敗する可能性があります。 必ず、pip 7.x 以降のバージョンをご使用ください。 コマンドラインインターフェイスで次のコマンドを実行して pip をアップグレードできます。
      sudo pip install -U pip
      システムに次のような、あるいは同様の情報が表示されれば、アップグレードは成功です。
      Successfully uninstalled pip-7.1.2
      Successfully installed pip-8.1.2
    • Alibaba Cloud CLI をインストールするには、次のコマンドを実行します。
      sudo pip install aliyuncli
      システムに次のような、あるいは同様の情報が表示されれば、インストールは成功です。
      Successfully installed aliyuncli-2.1.2 colorama-0.3.3 jmespath-0.7.1
  4. Alibaba Cloud CLI の設定 Alibaba Cloud CLI を設定するために、次のコマンドを実行します。
    ~ sudo aliyuncli configure
    Aliyun Access Key ID [*******************a]: youraccesskeyid
    Aliyun Access Key Secret [*******************b]: youraccesskeysecret
    Default Region Id [cn-hangzhou]: cn-hangzhou
    Default output format [json]: json
CMS SDK のインストール
  • Windows システムのインストール方法は以下のとおりです。
    cd C:\Python27\Scripts
    pip install aliyun-python-sdk-cms
  • Windows システムで SDK を更新するには、次のコマンドを実行します。
    pip install --upgrade aliyun-python-sdk-cms
  • Linux システムのインストール方法は以下のとおりです。
    sudo pip install aliyun-python-SDK-ecs
  • Linux システムで SDK を更新するには、次のコマンドを実行します。
    sudo pip install —upgrade aliyun-python-sdk-cms

モニタリングデータのレポート

モニタリングデータをレポートするには PutCustomMetric インターフェイスを使用します。

  • Windows システムの例
    aliyuncli.exe cms PutCustomMetric --MetricList "[{'groupId':1,'metricName':'testMetric','dimensions':{'sampleName1':'value1','sampleName2':'value2'},'type':0,'values':{'value':10.5}}]"
  • Linux システムの例
    aliyuncli cms PutCustomMetric --MetricList "[{'groupId':1,'metricName':'testMetric','dimensions':{'sampleName1':'value1','sampleName2':'value2'},'type':0,'values':{'value':10.5}}]"
  • データが正常にレポートされた場合、ステータスコード 200 が返されます。
    {
    "code": "200",
    }

ステータスコード

ステータスコード 説明
200 正常
206

一部は正常

"reach max time series num" が返された場合、時系列クォータが不足していることを示しています。 クォータを増やすか、不要な時系列を削除することを推奨します。

"not allowed original value, please upgrade service" が返された場合、生データのレポートをサポートしていない無料バージョンを使用していることを示しています。

"type is invalid" が返された場合は、"type" 値が無効であることを示しています。 0 または 1 以外の番号が渡されていないか、ご確認ください。

400 クライアントリクエストの構文エラー
403 検証失敗、制限速度、または未許可
500 内部サーバーエラー

RAM ユーザー認証

RAM ユーザー AK を使用してイベントデータをレポートする前に、Cloud Monitor アクセス権限を対応する RAM ユーザーに付与する必要があります。 アクセス権限を付与しないと、データをレポートするときに "cannot upload, please use ram to auth" というプロンプトが表示されます。

  1. RAM コンソールにログインします。
  2. 左側のナビゲーションウィンドウで、[ユーザー] をクリックします。
  3. 対象ユーザーを見つけ、[許可] をクリックします。

  4. 権限付与ページで、Aliyun Cloud Monitor Full Access ポリシーを選択し、[OK] をクリックします。