IBM Cloud Docs
将度量值流式传输到 Kafka 服务

将度量值流式传输到 Kafka 服务

您可以使用 IBM Cloud® Monitoring 将一组所选度量值推送到 Kafka 服务,例如 Event Streams。

您将需要配置:

  • 要在定义的作用域中导出的度量。

    度量名称和作用域以 PromQL 格式指定。

  • 数据的粒度。

    例如,10 秒 (10s) 或 1 分钟 (1m)。 建议的聚集为 1m。

  • IBM Cloud Monitoring 用于导出数据的 Kafka 主题。

先决条件

在管理流式方法之前,请检查以下先决条件:

  • 创建 Event Streams 实例。

  • 检查服务套餐的限制。 有关更多信息,请参阅 限制和配额

  • 请确保您拥有适当的权限。

    • 您必须具有 manager 角色才能配置流式方法。

    • 配置流式方法时,必须在同一帐户中供应 IBM Cloud Monitoring 实例和 Event Streams 实例。

    • 要将 IBM Cloud Monitoring 实例连接到 Event Streams 实例,您需要以下信息:

      • 您必须具有 manager 角色才能在 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 中发布数据的凭证必须具有 编写者 角色。 此角色包含 messagehub.topic.write IAM 操作角色,该角色允许应用程序或服务将数据写入 1 或更多主题。

  • 如果配置帐户以通过 IAM 设置限制对已配置 IP 地址的访问,或者如果帐户限制通过 Event Streams 服务的基于上下文的限制规则 (CBR) 接受连接的网络位置,那么必须允许列出帐户中的 Monitoring IP。 有关更多信息,请参阅 Monitoring 端点Event Streams-限制网络访问

本主题的指示信息基于使用企业套餐。

通过 UI 管理流式方法

配置流式方法

完成以下步骤以通过 UI 配置流式方法:

步骤 1. 在 Event Streams 中创建主题

完成以下步骤以创建 Event Streams 主题:

  1. 登录到 IBM Cloud 帐户

    使用用户标识和密码登录后,IBM Cloud“仪表板”即会打开。

  2. 点击菜单图标 菜单图标 > 资源列表

  3. 查找您计划使用的 Event Streams 实例,然后选择该实例。

  4. 在 Event Streams 实例控制台中,单击 管理 > 启动仪表板

  5. 点击创建话题

    创建主题
    创建主题

  6. 输入主题名称,然后单击 下一步

    创建主题部分 2。
    输入主题名称

  7. 输入分区数,然后单击 下一步

    主题由一个或多个分区组成。 分区是经过排序的消息列表。 分区分布在代理程序中,以提高主题的可扩展性。 您还可使用分区在使用者组的成员之间分发消息。

    创建主题部分 3。
    输入分区数

  8. 选择 消息保留时间,然后单击 创建主题

    消息保留时间定义了消息在删除前保留的时间。 如果在此时间内使用者未读取您的消息,那么将错过这些消息。

步骤 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

    服务标识
    选择服务标识

  2. 选择该服务标识。

  3. 选择 访问策略

  4. 选择策略并对其进行修改以指定主题。

    编辑策略
    编辑策略

    修改策略
    修改策略

  5. 使用 IBM Cloud CLI获取凭证,并记录api key和经纪人 URL 的值。

步骤 3. 在 Monitoring 中配置与 Event Streams 的连接

要配置 IBM Cloud Monitoring 度量数据流,请执行以下操作:

  1. 以具有管理员权限的用户身份启动 Web UI。 有关如何启动 Web UI 的更多信息,请参阅导航至 Web UI

  2. 单击 用户图标。 这是具有已登录用户的首字母的图标。 然后单击 设置

  3. 选择 度量数据流

  4. 单击添加集成。 此时将显示“新建度量流集成”面板。

    度量流式集成面板
    度量流式集成面板

  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
    传输层安全性 (TLS) 方法。 启用 TLS 以加密和保护数据传输。
    凭证
    Monitoring 用于将数据从 Monitoring 实例导出到 Kafka 服务器的凭证。 您可以选择用户和密码,也可以选择 base64 编码的证书。

    凭证选项
    凭证选项

    压缩
    选择压缩类型。 有效选项包括: LZ4SnappyGzipZstandard。 有关更多信息,请参阅 Apache Kafka
  6. 单击 测试连接 以验证是否已成功配置 IBM Cloud Monitoring 与 Kafka 之间的连接。

    必须先测试连接,然后才能保存并启用配置。

  7. 选择 作用域 并定义要导出的 度量

    对于 作用域,选择一个或多个标签以过滤定义的度量。

    度量 必须使用 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>"

Where

  • <ENDPOINT> 指示 REST API 调用所指向的端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> 用于向 Monitoring 服务认证的 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>"

Where

  • <ENDPOINT> 表示 REST API 调用的目标端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> 用于向 Monitoring 服务认证的 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"
        }
    ]
}

创建流式配置

使用此方法来配置 1 流式配置,以将一组度量转发到 Event Streams。

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

Where

  • <ENDPOINT> 表示 REST API 调用的目标端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> 用于向 Monitoring 服务认证的 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 密钥已轮换,已处理或需要更改。
  • 当您要通过添加新度量或除去度量来更改流中的度量时。
  • 必须更改作用域时。
  • 对配置启用或禁用数据流式传输。

使用此方法来更新 1 流式配置,该配置将一组度量值转发到 Event Streams。

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

Where

  • <ENDPOINT> 表示 REST API 调用的目标端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> 用于向 Monitoring 服务认证的 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>"

Where

  • <ENDPOINT> 表示 REST API 调用的目标端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api
  • <TOKEN> 用于向 Monitoring 服务认证的 API 令牌。 必须在令牌中包含 Bearer。 有关更多信息,请参阅 使用 Monitoring API 令牌
  • <STREAMING_CONFIG_ID> 表示流式配置的 UUID。

使用 IBM Cloud Monitoring 监视流式方法

Event Streams 与 Monitoring 服务集成。Monitoring 提供了缺省模板,您可以对该模板进行定制以监视 Event Streams 实例,以及数据如何从 Monitoring 中流出并由预订 Event Streams的任何应用程序或服务使用。

完成以下步骤以监视 Event Streams 实例:

  1. 检查您是否在与 Event Streams 实例相同的区域中具有 Monitoring 实例。 必须配置此实例以收集平台度量值。 更多信息,请参阅 启用平台指标

  2. 启动 Monitoring UI

  3. 在“仪表板”部分中,转至 仪表板模板,然后选择模板 IBM Event Streams (Enterprise)

  4. 通过单击 创建定制仪表板来创建模板的副本。

    您可以使用度量值 每秒的主题字节数 来查看 Monitoring 如何将数据发送到 Event Streams。

    您可以使用度量值 每秒输出的主题字节数 来查看预订了 Event Streams的任何应用程序或服务如何使用数据。

  5. (可选) 编辑面板 每秒输入的主题字节数

    编辑面板
    编辑面板

    然后,定制度量以查看每个主题的数据。

    定制度量
    定制度量

    检查解决方案是否设置为 10M