重要

このページの日本語コンテンツは古くなっている可能性があります。最新の英語版コンテンツをご覧になるには、こちらをクリックしてください。

Confluent Cloud のメトリクス

Confluent Cloud のメトリクスは、サードパーティのモニタリングプロバイダーとの最高クラスの統合によって、または Confluent Cloud Metrics API を直接クエリすることで利用できます。Confluent Cloud のモニタリングを行うユーザーは、モニタリングに要する運用上の負荷を減らすために、統合を利用することが推奨されています。Confluent Cloud Metrics API は多様なクエリパターンのセットをサポートしていて、時間の経過に伴う使用状況とパフォーマンスの分析を行うことができます。

このページでは、Confluent Cloud が提供するメトリクスの利用を開始する方法について説明します。Confluent Cloud Metrics API の詳細については、API リファレンス を参照してください。

メトリクスのクイックスタート

前提条件

注釈

Confluent Cloud RBAC MetricsViewer ロールでは、組織内のすべてのクラスターを対象に、Metrics API へのサービスアカウントアクセスが提供されます。また、このロールを割り当てられたサービスアカウントは、サードパーティのメトリクスプラットフォームにメトリクスをインポートすることもできます。詳細については、以下の「Confluent Cloud Console で MetricsViewer ロールを新しいサービスアカウントに追加する」を参照してください。

Metrics API への認証を受けるための Cloud API キー を作成します。その例を次に示します。

confluent login
confluent api-key create --resource cloud

注釈

Metrics API と通信するためには Cloud API キーの使用が "必須" です。Kafka との通信用の Cluster API キーを使用すると、認証エラーになります。

参考

Apache Kafka® クライアントアプリケーションおよび Confluent Cloud メトリクスをモニタリングする方法の例と、さまざまな失敗のシナリオに対応してメトリクスの結果を表示する手順については、Confluent Cloud に接続する Apache Kafka® クライアント用の Observability のデモ を参照してください。

Confluent Cloud Console で MetricsViewer ロールを新しいサービスアカウントに追加する

MetricsViewer ロールでは、組織内のすべてのクラスターを対象に、Metrics API へのサービスアカウントアクセスが提供されます。また、このロールを割り当てられたサービスアカウントは、サードパーティのメトリクスプラットフォームにメトリクスをインポートすることもできます。

MetricsViewer ロールを新しいサービスアカウントに割り当てるには、次のようにします。

  1. In the top-right administration menu (☰) in the upper-right corner of the Confluent Cloud user interface, click ADMINISTRATION > Cloud API keys.
  2. Add key をクリックします。
  3. Granular access タイルをクリックし、API キーの範囲を設定します。Next をクリックします。
  4. Create a new one をクリックし、サービスアカウント名と、オプションで説明を指定します。Next をクリックします。
  5. API キーとシークレットがサービスアカウントに対して生成されます。クラスターに接続するには、この API キーとシークレットが必要になるため、必ずこの情報を安全な場所に保管してください。Save をクリックします。新規サービスアカウントと API キー、および関連付けられた ACL が作成されます。API access タブで、新しく作成した API キーを表示して確認できます。
  6. 右上の管理メニューの Accounts & access に戻り、Accounts の下の Service accounts タブをクリックして、すべてのサービスアカウントを表示します。MetricsViewer ロールを追加するサービスアカウントを選択して、Access タブをクリックします。
  7. Add role assignment をクリックし、MetricsViewer タイルを選択します。Save をクリックします。

Accounts & access で、組織のリソースを表示できます。また、作成したサービスアカウントに MetricsViewer ロールバインディングがあることが確認できます。

CLI を使用して MetricsViewer ロールをサービスアカウントに追加する

次のコマンドを実行して、MetricsViewer のロールバインディングを新しいサービスアカウントに追加します。最初に confluent login コマンドを使用してログインしてください。

サービスアカウントを作成します。

confluent iam service-account create MetricsImporter --description "A test service account to import Confluent Cloud metrics into our monitoring system"

出力は以下のようになります。

+-------------+--------------------------------+
| ID          | sa-123abc                      |
| Name        | MetricsImporter                |
| Description | A test service account to      |
|             | import Confluent Cloud metrics |
|             | into our monitoring system     |
+-------------+--------------------------------+

ID フィールドをメモします。

MetricsViewer ロールバインディングをサービスアカウントに追加します。

confluent iam rbac role-binding create --role MetricsViewer --principal User:sa-123abc

出力は以下のようになります。

+-----------+----------------+
| Principal | User:sa-123abc |
| Role      | MetricsViewer  |
+-----------+----------------+

ロールバインディングのリストを表示し、MetricViewer ロールが作成されたことを確認します。

confluent iam rbac role-binding list --principal User:sa-123abc

出力は以下のようになります。

    Principal    | Email |     Role      | Environment | ...
-----------------+-------+---------------+-------------+----
  User:sa-123abc |       | MetricsViewer |             |

既存のサービスアカウントのリストを表示します。

confluent iam service-account list

出力は以下のようになります。

     ID     |              Name              |           Description
------------+--------------------------------+-----------------------------------
  sa-1a2b3c | test-account                   | for testing
  sa-112233 | ProactiveSupport.1614189731753 | SA for Proactive Support
  sa-aabbcc | KSQL.lksqlc-ab123              | SA for KSQL w/ ID lksqlc-ab123
            |                                | and Name ksqlDB_app_0
  ...

API キーを作成し、新しいサービスアカウントに追加します。

confluent api-key create --resource cloud --service-account sa-123abc

出力は以下のようになります。

It may take a couple of minutes for the API key to be ready.
Save the API key and secret. The secret is not retrievable later.
+---------+------------------------------------------------------------------+
| API Key | 1234567ABCDEFGHI                                                 |
| Secret  | ABCDEF123456.................................................... |
+---------+------------------------------------------------------------------+

API キーとシークレットをセキュアな場所に保管します。

サードパーティのモニタリングとの統合

サードパーティのモニタリングツールと直接統合すると、Confluent Cloud を他のアプリケーションと並行してモニタリングすることができます。

Datadog

Datadog と統合を行うと、ユーザーが Cloud API キーを Datadog UI に入力し、モニタリング対象のリソースを選択すれば、すぐに利用開始できるダッシュボードでわずか数分でメトリクスを確認できます。Datadog の使用を開始するには Cloud API キーを作成して、Datadog の 手順 に従います。

Dynatrace

Dynatrace provides an extension where users can input a Cloud API key into the Dynatrace Monitoring Configuration, select resources to monitor, and see metrics in minutes in a prebuilt dashboard. If you use Dynatrace, create your Cloud API key and follow the instructions to get started.

Grafana Cloud

Grafana Labs と統合を行うと、ユーザーが Cloud API キーを Grafana Cloud UI に入力し、モニタリング対象のリソースを選択すれば、すぐに利用開始できるダッシュボードでわずか数分でメトリクスを確認できます。Grafana Cloud の使用を開始するには Cloud API キーを作成して 手順 に従います。

Prometheus

Prometheus サーバーは、export エンドポイントを使用して Confluent Cloud Metrics API を直接スクレイピングできます。このエンドポイントは、ラベルの組み合わせごとに、各メトリックの単一の最新データポイントを Prometheus exposition フォーマットまたは Open Metrics フォーマットで返します。詳細については、「Export metric values」を参照してください。

Metrics API を使用した検出

以下の例では、cURL ではなく HTTPie を使用しています。このソフトウェアパッケージでは、最も一般的に利用されているソフトウェアパッケージマネージャーをインストールできます(こちらの ドキュメント を参照)。

Confluent Cloud Metrics API を使用して、エンドポイントは、使用可能なリソースとそのメトリクスをプログラムにより検出できます。このリソースとメトリックのメタデータは、descriptor オブジェクトで表現されます。

検出エンドポイントを使って、クライアントのスクリプトにメトリック名とリソース名をハードコードすることを回避できます。

使用可能なメトリクスをリスト表示する

リソースは、メトリクスを収集できる対象を表します。たとえば、Kafka クラスター、Kafka コネクター、ksqlDB アプリケーションなどです。

API の descriptors エンドポイントに GET リクエストを送信して、使用可能なメトリクスの説明を取得します。

http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/descriptors/resources' --auth '<API_KEY>:<SECRET>'

これによって、クエリ可能なリソースとそのラベルが記載された JSON ドキュメントが返されます。

使用可能なメトリクスをリスト表示する

API の descriptors エンドポイントに GET リクエストを送信して、使用可能なメトリクスの説明を取得します。

http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/descriptors/metrics?resource_type=kafka' --auth '<API_KEY>:<SECRET>'

注釈

メトリクスを表示するリソースのタイプを指定するには、resource_type クエリパラメーターが必要です。有効なリソースタイプは、/descriptors/resources エンドポイントを使用して確認できます。

これによって、クエリ可能なメトリクスの詳細を含む JSON BLOB が返されます。現在使用可能なメトリクスのリストは以下のとおりです。

人が読める形式の、現在のメトリクスのリストについては、API リファレンス を参照してください。

クエリの例

Confluent Cloud Metrics API には、時系列データを柔軟にフィルタリングしたりグループ化したりできる、表現力豊かなクエリ言語があります。クエリのサンプルがテンプレートとして提供されています。サンプルはさらに Cloud Console 内にもあり、これらも Confluent Cloud Metrics API を使用します。

1 分あたりトピック別にグループ化してコンシューマーに送信されたバイトのクエリ

  1. 以下のテンプレートを使用して、sent_bytes_query.json という名前のファイルを作成します。lkc-XXXXX とタイムスタンプ値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.server/sent_bytes"
        }
      ],
      "filter": {
        "field": "resource.kafka.id",
        "op": "EQ",
        "value": "lkc-XXXXX"
      },
      "granularity": "PT1M",
      "group_by": [
        "metric.topic"
      ],
      "intervals": [
        "2019-12-19T11:00:00-05:00/2019-12-19T11:05:00-05:00"
      ],
      "limit": 25
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < sent_bytes_query.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "timestamp": "2019-12-19T16:01:00Z",
          "metric.topic": "test-topic",
          "value": 0.0
        },
        {
          "timestamp": "2019-12-19T16:02:00Z",
          "metric.topic": "test-topic",
          "value": 157.0
        },
        {
          "timestamp": "2019-12-19T16:03:00Z",
          "metric.topic": "test-topic",
          "value": 371.0
        },
        {
          "timestamp": "2019-12-19T16:04:00Z",
          "metric.topic": "test-topic",
          "value": 0.0
        }
      ]
    }
    

    注釈

    時間ウィンドウ内にデータを生成しなかった場合、特定のトピックのデータセットが空になります。

1 分あたりトピック別にグループ化してプロデューサーから送信されたバイトのクエリ

  1. 以下のテンプレートを使用して、received_bytes_query.json という名前のファイルを作成します。lkc-XXXXX およびタイムスタンプ値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.server/received_bytes"
        }
      ],
      "filter": {
        "field": "resource.kafka.id",
        "op": "EQ",
        "value": "lkc-XXXXX"
      },
      "granularity": "PT1M",
      "group_by": [
        "metric.topic"
      ],
      "intervals": [
        "2019-12-19T11:00:00-05:00/2019-12-19T11:05:00-05:00"
      ],
      "limit": 25
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < received_bytes_query.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "timestamp": "2019-12-19T16:00:00Z",
          "metric.topic": "test-topic",
          "value": 72.0
        },
        {
          "timestamp": "2019-12-19T16:01:00Z",
          "metric.topic": "test-topic",
          "value": 139.0
        },
        {
          "timestamp": "2019-12-19T16:02:00Z",
          "metric.topic": "test-topic",
          "value": 232.0
        },
        {
          "timestamp": "2019-12-19T16:03:00Z",
          "metric.topic": "test-topic",
          "value": 0.0
        },
        {
          "timestamp": "2019-12-19T16:04:00Z",
          "metric.topic": "test-topic",
          "value": 0.0
        }
      ]
    }
    

    注釈

    時間ウィンドウ内にデータを生成しなかった場合、特定のトピックのデータセットが空になります。

クラスター lkc-XXXX で 2 時間以上保持された最大保持バイト数/時を照会するクエリ

  1. 以下のテンプレートを使用して、cluster_retained_bytes_query.json という名前のファイルを作成します。lkc-XXXXX およびタイムスタンプ値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.server/retained_bytes"
        }
      ],
      "filter": {
        "field": "resource.kafka.id",
        "op": "EQ",
        "value": "lkc-XXXXX"
      },
      "granularity": "PT1H",
      "intervals": [
        "2019-12-19T11:00:00-05:00/P0Y0M0DT2H0M0S"
      ],
      "limit": 5
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < cluster_retained_bytes_query.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "timestamp": "2019-12-19T16:00:00Z",
          "value": 507350.0
        },
        {
          "timestamp": "2019-12-19T17:00:00Z",
          "value": 507350.0
        }
      ]
    }
    

トピックおよびコンシューマーグループでグループ分けされた、過去 1 時間の平均コンシューマーラグのクエリ

  1. 以下のテンプレートを使用して、consumer_lag_max_hour.json という名前のファイルを作成します。必ず lkc-XXXXX を変更してください。また間隔は 1 分間隔で、過去 1 時間に対するものです。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.server/consumer_lag_offsets"
        }
      ],
      "filter": {
        "field": "resource.kafka.id",
        "op": "EQ",
        "value": "lkc-XXXXX"
      },
      "granularity": "PT1H",
      "group_by": [
        "metric.consumer_group_id",
        "metric.topic"
      ],
      "intervals": [
        "PT1M/now"
      ],
      "limit": 25
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < consumer_lag_max_hour.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "metric.consumer_group_id": "group_1",
          "metric.topic": "test_topic_1",
          "timestamp": "2022-03-23T21:00:00Z",
          "value": 0.0
        },
        {
          "metric.consumer_group_id": "group_2",
          "metric.topic": "test_topic_2",
          "timestamp": "2022-03-23T21:00:00Z",
          "value": 6.0
        }
      ]
    }
    

ksqlDB クラスター lksqlc-XXXXX について、使用されたストリーミングユニット数/時間に対するクエリ

  1. 以下のテンプレートを使用して、cluster_retained_bytes_query.json という名前のファイルを作成します。lkc-XXXXX およびタイムスタンプ値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.ksql/streaming_unit_count"
        }
      ],
      "filter": {
        "field": "resource.ksql.id",
        "op": "EQ",
        "value": "lksqlc-XXXXX"
      },
      "granularity": "PT1H",
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T11:00:00Z"
      ],
      "group_by": [
        "resource.ksql.id"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < ksql_streaming_unit_count.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.ksql.id": "lksqlc-XXXXX",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 4.0
        }
      ]
    }
    

ksqlDB クラスター lksqlc-XXXXX のすべての CSU で使用されているストレージの最大容量(%)に対するクエリ

  1. 次のテンプレートを使用して ksql_storage_utilization.json という名前のファイルを作成します。lksqlc-XXXXX とタイムスタンプの値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.ksql/storage_utilization"
        }
      ],
      "filter": {
        "field": "resource.ksql.id",
        "op": "EQ",
        "value": "lksqlc-xxxxx"
      },
      "granularity": "PT1M",
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T11:00:00Z"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < ksql_storage_utilization.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.ksql.id": "lksqlc-XXXXX",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 0.85
        }
      ]
    }
    

ksqlDB クラスター lksqlc-XXXXX でクエリによって使用される ksqlDB ストレージのバイト数に対するクエリ

  1. 次のテンプレートを使用して ksql_query_storage.json という名前のファイルを作成します。lksqlc-XXXXX とタイムスタンプの値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.ksql/task_stored_bytes"
        }
      ],
      "filter": {
        "field": "resource.ksql.id",
        "op": "EQ",
        "value": "lksqlc-xxxxx"
      },
      "granularity": "PT1M",
      "group_by": [
        "metric.query_id"
      ],
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T11:00:00Z"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < ksql_query_storage.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.ksql.id": "lksqlc-XXXXX",
          "metric.query_id": "CTAS_PAGEVIEWS_2",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 7688174488
        }
      ]
    }
    

ksqlDB クラスター lksqlc-XXXXX でタスクによって使用されるストレージのバイト数に対するクエリ

  1. 次のテンプレートを使用して ksql_task_storage.json という名前のファイルを作成します。lksqlc-XXXXX とタイムスタンプの値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.ksql/task_stored_bytes"
        }
      ],
      "filter": {
        "field": "resource.ksql.id",
        "op": "EQ",
        "value": "lksqlc-xxxxx"
      },
      "granularity": "PT1M",
      "group_by": [
        "metric.query_id",
        "metric.task_id"
      ],
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T11:00:00Z"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < ksql_task_storage.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.ksql.id": "lksqlc-XXXXX",
          "metric.task_id": "1_1",
          "metric.query_id": "CTAS_PAGEVIEWS_2",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 1079295760
        }
      ]
    }
    

ksqlDB クラスター lksqlc-XXXXX のクエリ飽和に対するクエリ

  1. 次のテンプレートを使用して ksql_query_saturation.json という名前のファイルを作成します。lksqlc-XXXXX とタイムスタンプの値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.ksql/query_saturation"
        }
      ],
      "filter": {
        "field": "resource.ksql.id",
        "op": "EQ",
        "value": "lksqlc-xxxxx"
      },
      "granularity": "PT1M",
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T11:00:00Z"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < ksql_query_saturation.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.ksql.id": "lksqlc-XXXXX",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 0.85
        }
      ]
    }
    

スキーマレジストリクラスター lsrc-XXXXX のスキーマ数に対するクエリ

  1. 以下のテンプレートを使用して、sent_bytes_query.json という名前のファイルを作成します。lkc-XXXXX とタイムスタンプ値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.schema_registry/schema_count"
        }
      ],
      "filter": {
        "field": "resource.schema_registry.id",
        "op": "EQ",
        "value": "lsrc-XXXXX"
      },
      "granularity": "PT1M",
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T10:01:00Z"
      ],
      "group_by": [
        "resource.schema_registry.id"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < schema_count.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.schema_registry.id": "lsrc-XXXXX",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 1.0
        }
      ]
    }
    

シンクコネクター lcc-XXXXX によって受信された 1 時間あたりのレコード数に対するクエリ

  1. 以下のテンプレートを使用して、sent_bytes_query.json という名前のファイルを作成します。lkc-XXXXX とタイムスタンプ値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.connect/received_records"
        }
      ],
      "filter": {
        "field": "resource.connector.id",
        "op": "EQ",
        "value": "lcc-XXXXX"
      },
      "granularity": "PT1H",
      "intervals": [
        "2021-02-24T10:00:00Z/2021-02-24T11:00:00Z"
      ],
      "group_by": [
        "resource.connector.id"
      ]
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < sink_connector_records.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "resource.connector.id": "lcc-XXXXX",
          "timestamp": "2021-02-24T10:00:00Z",
          "value": 26455991.0
        }
      ]
    }
    

特定のプリンシパル ID のメトリクスのクエリ

metric.principal_id ラベルを使用して、特定のユーザーまたはサービスアカウントごとにメトリクスをフィルターできます。メトリクス io.confluent.kafka.server/active_connection_countio.confluent.kafka.server/request_count などが metric.principal_id ラベルによるフィルタリングをサポートしています。現在このラベルをサポートしているすべてのメトリクスについては、API リファレンス を参照してください。

  1. 次のテンプレートを使用して、principal_query.json という名前のファイルを作成します。lkc-XXXXX とタイムスタンプの値は、必要に応じて変更します。

    {
      "aggregations": [
        {
          "metric": "io.confluent.kafka.server/active_connection_count"
        }
      ],
      "filter": {
        "field": "resource.kafka.id",
        "op": "EQ",
        "value": "lkc-XXXXX"
      },
      "granularity": "PT1H",
      "group_by": [
        "metric.principal_id"
      ],
      "intervals": [
        "2022-01-01T00:00:00Z/PT1H"
      ],
      "limit": 5
    }
    
  2. 次のコマンドを使用して、クエリを POST として送信します。API_KEYSECRET は、環境に合わせて変更します。

    http 'https://api.telemetry.confluent.cloud/v2/metrics/cloud/query' --auth '<API_KEY>:<SECRET>' < principal_query.json
    

    出力は以下のようになります。

    {
      "data": [
        {
          "metric.principal_id": "sa-abc123",
          "timestamp": "2022-01-01T00:00:00Z",
          "value": 430.99999999997
        },
        {
          "metric.principal_id": "u-def456",
          "timestamp": "2022-01-01T00:00:00Z",
          "value": 427.93333333332
        },
        {
          "metric.principal_id": "u-abc123",
          "timestamp": "2022-01-01T00:00:00Z",
          "value": 333.19999999997
        }
      ],
      "meta": {
        "pagination": {
          "next_page_token": "eyJ2ZXJzaW9uIjoiMSIsInJlcXVlc3RI",
          "page_size": 5
        }
      }
    

    注釈

    指定した間隔内に報告されたメトリック値が存在しないトピックは返されません。

FAQ

Metrics API を請求書の照合の使用可能の有無

いいえ、できません。Metrics API は、モニタリング、トラブルシューティング、キャパシティプラニングを目的として情報を提供するものです。現時点ではメトリクスには Kafka プロトコルのリクエストのオーバーヘッドが含まれていないので、請求書を照合する監査システムとして使用することはできません。詳細については、請求についてのドキュメント を参照してください。

retained_bytes 以外に、クエリに存在するトピックのデータセットが空になる

クエリを実行した時間範囲に 0.0 の値しかない場合は、API から空のデータセットが返されます。該当する時間範囲にゼロ以外のデータがある場合は、0.0 の値の時間スライスが返されます。

トピックの保持ポリシーを変更した後に、retained_bytes が減らなかった

retained_bytes の値は、各データポイントで表される間隔における最大値として計算されます。現行の間隔の中でデータが削除されても、その結果は次の時間範囲ウィンドウが始まるまで表に現れません。たとえば、過去 30 日間にわたって 1 日あたり 4 GB のデータを生成していた場合に、1 日間隔を指定して過去 3 日間の retained_bytes を照会すると、クエリから返される時系列の値は 112 GB、116 GB、120 GB となります。その後に、そのトピックのデータをすべて削除してデータの生成を停止しても、クエリから返される値は翌日まで同じです。翌日の最初にクエリを実行すると、同じクエリから 116 GB、120 GB、0 GB が返されます。

サポートされる単位について

データは 1 分間隔で保管されます。ただし、クエリ可能な単位は、クエリ間隔の長さによって制限されます。現在サポートされる単位とクエリの制限については、API リファレンス を参照してください。

コンシューマーラグはどのようにモニタリングすればよいですか。

Metrics API のメトリクスの保持期間について

メトリクスは 7 日間保持されます。

特定のメトリクスがプレビュー版と一般提供(GA)版のどちらであるか、どうすればわかりますか。

Confluent は、新しいメトリクスを追加するため常に模索しています。ただし、新しいメトリクスを追加する際、安定化させる方法を公開するにはほとんどのユースケースに適していると確認するのに多少時間がかかります。/descriptors エンドポイントからの応答に、各メトリクスのライフサイクル段階(previewgenerally available など)が含まれています。preview 段階のメトリクスは、API バージョンを変更することなく、その特性に対して重大な変更が加えられる可能性があります。プレビュー版では、可能な限り最高のエクスペリエンスを提供するために、何度も変更が繰り返されます。

Metrics API へのクエリでタイムアウト応答(HTTP エラーコード 504)が返された場合について

クエリがタイムアウト(最大クエリ時間は 60 秒)を超えた場合は、次の 2 つの方法のうちどちらかを実行することをお勧めします。

  • 時間間隔を短くします。
  • 返されるデータの単位を小さくします。
  • より少ないデータポイントが返されるように、クライアント側でクエリを分割します。たとえば、一度にすべてのトピックに対してクエリを実行するのではなく、特定のトピックを照会したり、時間間隔を短くすることもできます。

これらの方法は、パーティションレベルのデータに対して何日間にもわたる間隔でクエリを実行する場合に特に重要です。

Confluent Cloud メトリクスが 1 時間/6 時間/24 時間あたりのデータでのみ表示される理由

これは既知の制限であり、2,000 を超えるパーティションのある一部のクラスターで発生します。現在、この問題に取り組んでいますが、現時点では修正はありません。

クエリで 5xx 応答コードが返された場合について

Confluent は、このようなタイプの応答には再試行を行うことを推奨してきました。通常、これはサーバー側の一過性の問題を示しています。Metrics API に対してクエリを実行するためのクライアントの実装は、このようなタイプの応答に数分間対応できるように設計する必要があります。

おすすめのリソース