Kafka サービスへのメトリックのストリーミング

IBM Cloud® Monitoring を使用して、選択したメトリックのセットを Kafka サービス (Event Streams など) にプッシュできます。

以下を構成する必要があります。

  • 定義されたスコープ内でエクスポートするメトリック。

    メトリック名とスコープは、PromQL 形式で指定されます。

  • データの細分度です。

    例えば、10 秒 (10s) または 1 分 (1m) です。 推奨される集計は 1m です。

  • IBM Cloud Monitoring がデータをエクスポートするために使用する Kafka トピック。

前提条件

ストリーミングを管理する前に、以下の前提条件を確認してください。

  • Event Streams・インスタンスを作成します

  • サービス・プランの制限事項を確認します。 詳しくは、制限と割り当て量を参照してください。

  • 適切な権限があることを確認してください。

    • ストリーミングを構成するには**「マネージャー」**の役割が必要です。

    • ストリーミングを構成するときには、IBM Cloud Monitoring インスタンスとEvent Streams・インスタンスが同じアカウントでプロビジョンされている必要があります。

    • IBM Cloud Monitoring インスタンスをEvent Streams・インスタンスに接続するには、以下の情報が必要です。

      • IBM Cloud Monitoring インスタンスでストリーミングを構成するには、管理者役割が必要です。 このロールには sysdig-monitor.launch.admin IAMアクションロールが含まれ、ユーザーはストリーミングの設定などの管理タスクを実行できます。

      • ストリーミングを構成するときには、Monitoring インスタンスとEvent Streams・インスタンスが同じアカウントでプロビジョンされている必要があります。

      • Monitoring インスタンスをEvent Streams・インスタンスに接続するには、以下の情報が必要です。

        • API を呼び出すエンドポイント URL

        • 認証のための資格情報

    • Event Streams でトピックを作成するには、管理者ロールが必要です。 この役割には、アプリまたはユーザーがトピックを作成または削除できるようにする messagehub.topic.manage IAM アクション役割が含まれます。

    • Monitoring が Event Streams でデータを公開するために使用する資格情報には、ライター役割が必要です。 この役割には、アプリまたはサービスが 1 つ以上のトピックにデータを書き込めるようにする messagehub.topic.write IAM アクション役割が含まれます。

  • IAM 設定を介して、構成された IP アドレスへのアクセスを制限するようにアカウントを構成する場合、または Event Streams サービスのコンテキスト・ベースの制限ルール (CBR) を介して接続が受け入れられるネットワーク・ロケーションをアカウントが制限する場合は、 Monitoring アカウントを許可リストする必要があります。 詳しくは、 Monitoring エンドポイント および Event Streams-ネットワーク・アクセスの制限 を参照してください。

このトピックの説明は、エンタープライズ・プランの使用を前提としています。

UI を使用したストリーミングの管理

ストリーミングの構成

UI を使用してストリーミングを構成するには、以下のステップを実行します。

ステップ 1. Event Streams でのトピックの作成

イベント・ストリームのトピックを作成するには、以下のステップを実行します。

  1. IBM Cloud アカウントにログインします

    ユーザー ID とパスワードを使用してログインすると、IBM Cloud ダッシュボードが開きます。

  2. メニューアイコンメニュー・アイコン > リソース・リストをクリックします。

  3. 使用する予定のEvent Streams・インスタンスを見つけて選択します。

  4. Event Streams インスタンス・コンソールで、管理 > ダッシュボードの起動をクリックします。

  5. **「トピックの作成 (Create a topic)」**をクリックします。

    「トピックの作成」
    「トピックの作成」

  6. トピック名を入力し、**「次へ」**をクリックします。

    トピック・パート 2 を作成します。
    トピック名の入力

  7. パーティションの数を入力し、**「次へ」**をクリックします。

    トピックは 1 つ以上のパーティションで構成されます。 パーティションは、メッセージの番号付きリストです。 トピックのスケーラビリティーを高めるために、パーティションは複数のブローカーにわたって分散されます。 また、コンシューマー・グループのメンバー間でメッセージを分散させるためにパーティションを使用することもできます。

    トピック・パート 3 を作成します。
    区画数の入力

  8. **「メッセージの保存 (Message retention)」を選択して「トピックの作成 (Create Topic)」**をクリックします。

    **「メッセージの保存 (Message retention)」**は、メッセージが削除されるまでの保存期間を定義します。 この期間内にメッセージがコンシューマーによって読み取られない場合、それらは失われます。

ステップ 2 Event Streams でモニター・インスタンスを認証するための資格情報を作成します。

Monitoring インスタンスをEvent Streams・インスタンスに接続するには、以下の情報が必要です。

  • API を呼び出すエンドポイント URL
  • 認証のための資格情報

Monitoring インスタンスがEvent Streams・インスタンスと通信するために必要なサービス資格情報を作成するには、以下のステップを実行します。

  1. IBM Cloud で、メニューアイコンメニュー・アイコン > リソース・リストをクリックします。

  2. 使用する予定のEvent Streams・インスタンスを見つけて選択します。

  3. Event Streamsのコンソールで**「サービス資格情報」**をクリックします。

  4. **「新規資格情報」**を選択します。

  5. 名前を入力し、**「ライター」**役割を選択します。

    「資格情報の作成」
    「資格情報の作成」

  6. 追加 をクリックします。

アクセスを 1 つのトピックに制限するには、以下のステップを実行します。

  1. メニュー・バーから、「管理」 > **「アクセス (IAM)」をクリックして、「サービス ID」**を選択します。

    「サービス ID」
    「サービス ID の選択」

  2. サービス ID を選択します。

  3. **「アクセス・ポリシー」**を選択します。

  4. ポリシーを選択し、トピックを指定するように変更します。

    「ポリシーの編集」
    「ポリシーの編集」

    「ポリシーの変更」
    「ポリシーの変更」

  5. IBM Cloud CLI を使用して資格情報を取得し、API キーとブローカー URL の値をメモします。

ステップ 3。 Monitoring で Event Streams への接続を構成します。

IBM Cloud Monitoring メトリック・データ・ストリームを構成するには、以下の手順を実行します。

  1. 管理者権限を持つユーザーとして Web UI を起動します。 Web UI の起動方法について詳しくは、Web UI へのナビゲートを参照してください。

  2. ユーザー・アイコンをクリックします。 これは、ログオンしたユーザーのイニシャルがあるアイコンです。 次に、**「設定」**をクリックします。

  3. メトリック・データ・ストリーミングを選択します。

  4. **「Add Integration」**をクリックします。 「新規メトリック・ストリーミング統合」パネルが表示されます。

    「メトリック・ストリーミング統合」パネル
    「メトリック・ストリーミング統合」パネル

  5. 以下の情報を指定します。

    統合名
    ストリーミング構成の名前です。
    トピック
    メトリックを受信するための Kafka トピックの名前。
    ブローカー
    コンマで区切られた Kafka ブローカーのリスト (例: kafka-2.mh-svc.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc.eu-de.containers.appdomain.cloud:9093,kafka-0.mh-svc.eu-de.containers.appdomain.cloud:9093)。 URL を"で囲んではならないことに注意してください。
    TLS
    Transport Layer Security (TLS) 方式。 TLS を有効にして、データの転送を暗号化および保護します。
    資格情報
    Monitoring インスタンスから Kafka サーバーにデータをエクスポートするために Monitoring が使用する資格情報。 ユーザーとパスワード、または base64 エンコード証明書を選択できます。

    「資格情報オプション」
    「資格情報オプション」

    圧縮
    圧縮のタイプを選択します。 有効なオプションは、LZ4SnappyGzip、およびZstandardです。 詳しくは、 Apache Kafkaを参照してください。
  6. 接続のテストをクリックして、IBM Cloud Monitoring と Kafka の間の接続が正常に構成されたことを確認します。

    構成を保存して有効にする前に、接続をテストする必要があります。

  7. 範囲を選択し、エクスポートするメトリックを定義します。

    範囲の場合は、1 つ以上のラベルを選択して、定義済みのメトリックをフィルタリングします。

    メトリックは、 PromQL を使用して完全なメトリック名を指定する必要があります。

  8. 保存 をクリックします。

構成を保存した後、ストリーミングがアクティブになるまで少なくとも 30 分待機する必要があります。

UI を使用したストリーミングの有効化または停止

メトリック・データ・ストリーミングページからメトリックのストリーミングを開始および停止できます。

  1. 管理者権限を持つユーザーとして Web UI を起動します。 Web UI の起動方法について詳しくは、Web UI へのナビゲートを参照してください。

  2. ユーザー・アイコンをクリックします。 これは、ログオンしたユーザーのイニシャルがあるアイコンです。 次に、**「設定」**をクリックします。

  3. メトリック・データ・ストリーミングを選択します。 ストリーミング構成のリストが表示されます。

    ストリーミング構成のリスト
    ストリーミング構成

  4. トグルを使用してストリーミング構成を有効または無効にします。

API を使用したストリーミングの管理

UI を使用してストリーミングを管理するには、以下のステップを実行します。

ストリーミング構成をリストします

このメソッドを使用して、既存のすべてのストリーミング構成の詳細を取得します。

curl --request GET https://<ENDPOINT>/api/v1/dataStream/configs
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"

説明

  • <ENDPOINT>は、REST API 呼び出しによってターゲットとされるエンドポイントを示します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。
  • Monitoring サービスでの認証に使用する <TOKEN> API トークン。 トークンにBearerを含める必要があります。 詳しくは、Monitoring API トークンの操作を参照してください。

応答は、以下のようになります。

{"dataStreamConfigs":[{"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","enabled":true,"name":"Streaming metrics - demo","type":"kafka"}]}

ストリーミング構成の詳細の取得

このメソッドを使用して、1 つのストリーミング構成の詳細を取得します。

curl --request GET https://<ENDPOINT>/api/v1/dataStream/configs/<STREAMING_CONFIG_ID>
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"

説明

  • <ENDPOINT>は、REST API 呼び出しによってターゲットにされるエンドポイントを表します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。
  • Monitoring サービスでの認証に使用する <TOKEN> API トークン。 トークンにBearerを含める必要があります。 詳しくは、Monitoring API トークンの操作を参照してください。
  • <STREAMING_CONFIG_ID>は、詳細を取得するストリーミング構成の UUID を表します。

応答は、以下のようになります。

{
    "dataStreamConfig": {
        "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "enabled": true,
        "name": "Streaming metrics - demo",
        "emitterType": "kafka",
        "emitterProperties": {
            "bootstrap.servers": "kafka-0.mh-svc1.eu-de.containers.appdomain.cloud:9093, kafka-2.mh-svc2-0000.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc3.eu-de.containers.appdomain.cloud:9093",
            "topic.name": "my-monitoring-topic",
            "compression.type": "lz4",
            "security.protocol": "SASL_SSL",
            "sasl.mechanism": "PLAIN",
            "sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"xxxxxxxxxxxxx\";","ssl.truststore.base64.content":""}},"dataStreamRules":[{"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","enabled":true,"metrics":["kube_daemonset_labels","kube_node_status_condition"],"aggregation":"avg","aggregationSec":10,"scope":"kubernetes.cluster.name = \"mycluster\"",
            "dataStreamConfigUuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
    ]
}

ストリーミング構成の作成

このメソッドを使用して、一連のメトリックを Event Streams に転送する 1 つのストリーミング構成を構成します。

curl --request POST https://<ENDPOINT>/api/v1/dataStream/configs
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"
 -d @streaming-config.json

説明

  • <ENDPOINT>は、REST API 呼び出しによってターゲットにされるエンドポイントを表します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。
  • Monitoring サービスでの認証に使用する <TOKEN> API トークン。 トークンにBearerを含める必要があります。 詳しくは、Monitoring API トークンの操作を参照してください。

streaming-config.jsonファイルの例を以下に示します。

{
    "dataStreamConfig": {
        "enabled": true,
        "name": "Streaming metrics config",
        "emitterType": "kafka",
        "emitterProperties": {
            "bootstrap.servers": "kafka-0.mh-svc1.eu-de.containers.appdomain.cloud:9093,kafka-2.mh-svc2.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc3.eu-de.containers.appdomain.cloud:9093",
            "topic.name": "my-monitoring-topic",
            "compression.type": "lz4",
            "security.protocol": "SASL_SSL",
            "sasl.mechanism": "PLAIN",
            "sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"xxxxxxxxxx\";",
            "ssl.truststore.base64.content": ""
        }
    },
    "dataStreamRules": [
        {
            "enabled": true,
            "metrics": [
                "kube_daemonset_labels",
                "kube_node_status_condition"
            ],
            "aggregation": "avg",
            "aggregationSec": 10,
            "scope": "kubernetes.cluster.name = \"mycluster\""
        }
    ]
}

ストリーミング構成の更新

以下のいずれかのサイズでストリーミング構成を更新します。

  • Event Streams で認証するための API キーは、ローテーションされているか、プロミスキャスされているか、または変更する必要があります。
  • ストリーミングするメトリックを変更する場合は、新しいメトリックを追加するか、メトリックを削除します。
  • 有効範囲を変更する必要がある場合。
  • 構成のデータ・ストリームを有効または無効にします。

このメソッドを使用して、一連のメトリックを Event Streams に転送する 1 つのストリーミング構成を更新します。

curl --request PUT https://<ENDPOINT>/api/v1/dataStream/configs/<STREAMING_CONFIG_ID>
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"
 -d @streaming-config.json

説明

  • <ENDPOINT>は、REST API 呼び出しによってターゲットにされるエンドポイントを表します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。
  • Monitoring サービスでの認証に使用する <TOKEN> API トークン。 トークンにBearerを含める必要があります。 詳しくは、Monitoring API トークンの操作を参照してください。
  • <STREAMING_CONFIG_ID>は、ストリーミング構成の UUID を表します。

streaming-config.jsonファイルの例を以下に示します。

{
    "dataStreamConfig": {
        "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "enabled": true,
        "name": "Streaming metrics - demo",
        "emitterType": "kafka",
        "emitterProperties": {
            "bootstrap.servers": "kafka-0.mh-svc1.eu-de.containers.appdomain.cloud:9093, kafka-2.mh-svc2-0000.eu-de.containers.appdomain.cloud:9093,kafka-1.mh-svc3.eu-de.containers.appdomain.cloud:9093",
            "topic.name": "my-monitoring-topic",
            "compression.type": "lz4",
            "security.protocol": "SASL_SSL",
            "sasl.mechanism": "PLAIN",
            "sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"xxxxxxxxxxxxx\";","ssl.truststore.base64.content":""}},"dataStreamRules":[{"uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","enabled":true,"metrics":["kube_daemonset_labels","kube_node_status_condition"],"aggregation":"avg","aggregationSec":10,"scope":"kubernetes.cluster.name = \"mycluster\"",
            "dataStreamConfigUuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
    ]
}

ストリーミング構成の削除

このメソッドを使用して、一連のメトリックを Event Streams に転送する 1 つのストリーミング構成を削除します。

curl --request DELETE https://<ENDPOINT>/api/v1/dataStream/configs/<STREAMING_CONFIG_ID>
 -H "content-type: application/json"
 -H "Authorization: <TOKEN>"

説明

  • <ENDPOINT>は、REST API 呼び出しによってターゲットにされるエンドポイントを表します。 詳しくは、モニタリング REST API エンドポイントを参照してください。 例えば、us-south で使用可能なインスタンスのパブリック・エンドポイントは https://us-south.monitoring.cloud.ibm.com/api です。
  • Monitoring サービスでの認証に使用する <TOKEN> API トークン。 トークンにBearerを含める必要があります。 詳しくは、Monitoring API トークンの操作を参照してください。
  • <STREAMING_CONFIG_ID>は、ストリーミング構成の UUID を表します。

IBM Cloud Monitoring を使用したストリーミングのモニタリング

Event Streams は、Monitoring サービスと統合されています。Monitoring には、Event Streams インスタンスをモニターするためにカスタマイズできるデフォルト・テンプレートが用意されています。このテンプレートは、Event Streams にサブスクライブしているアプリケーションまたはサービスによってデータがどのように Monitoring からストリーミングされ、コンシュームされるかを示します。

Event Streams・インスタンスをモニターするには、以下のステップを実行します。

  1. Monitoring のインスタンスがEvent Streams・インスタンスと同じリージョンにあることを確認します。 このインスタンスはプラットフォーム・メトリックを収集するように構成されている必要があります。 詳しくは、プラットフォームのメトリックの有効化を参照してください。

  2. Monitoring UI を起動します

  3. **「ダッシュボード」セクションで「ダッシュボード・テンプレート (Dashboard templates)」に移動し、テンプレート「IBM イベント・ストリーム (エンタープライズ) (IBM Event Streams (Enterprise))」**を選択します。

  4. **「カスタム・ダッシュボードの作成 (Create custom dashboard)」**をクリックしてテンプレートのコピーを作成します。

    メトリック*「トピックの受信バイト/秒 (Topic bytes in per second)」*を使用して、Monitoring によってEvent Streamsにデータがどのように送信されているかを確認できます。

    メトリック*「トピックの送信バイト数/秒 (Topic bytes out per second)」*を使用して、Event Streamsにサブスクライブしているアプリケーションまたはサービスによってデータがどのように消費されているかを確認できます。

  5. (オプション) パネル*「トピックの受信バイト数/秒 (Topic bytes in per second)」*を編集します。

    編集パネル
    編集パネル

    次に、トピックごとにデータを表示するために、メトリックをカスタマイズします。

    「メトリックのカスタマイズ」
    「メトリックのカスタマイズ」

    単位が 10M に設定されていることを確認します。