将度量值流式传输到 Kafka 服务
您可以使用 IBM Cloud® Monitoring 将一组所选度量值推送到 Kafka 服务,例如 Event Streams。
您将需要配置:
-
要在定义的作用域中导出的度量。
度量名称和作用域以 PromQL 格式指定。
-
数据的粒度。
例如,10 秒 (10s) 或 1 分钟 (1m)。 建议的聚集为 1m。
-
IBM Cloud Monitoring 用于导出数据的 Kafka 主题。
先决条件
在管理流式方法之前,请检查以下先决条件:
-
检查服务套餐的限制。 有关更多信息,请参阅 限制和配额。
-
请确保您拥有适当的权限。
-
您必须具有 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 主题:
-
使用用户标识和密码登录后,IBM Cloud“仪表板”即会打开。
-
点击菜单图标
> 资源列表。
-
查找您计划使用的 Event Streams 实例,然后选择该实例。
-
在 Event Streams 实例控制台中,单击 管理 > 启动仪表板。
-
点击创建话题。
创建主题 -
输入主题名称,然后单击 下一步。
输入主题名称 -
输入分区数,然后单击 下一步。
主题由一个或多个分区组成。 分区是经过排序的消息列表。 分区分布在代理程序中,以提高主题的可扩展性。 您还可使用分区在使用者组的成员之间分发消息。
输入分区数 -
选择 消息保留时间,然后单击 创建主题。
消息保留时间定义了消息在删除前保留的时间。 如果在此时间内使用者未读取您的消息,那么将错过这些消息。
步骤 2. 创建凭证以向 Event Streams 认证监视实例
要将 Monitoring 实例连接到 Event Streams 实例,您需要以下信息:
- 用于调用 API 的端点 URL
- 认证凭证
完成以下步骤以创建 Monitoring 实例需要与 Event Streams 实例进行通信的服务凭证:
-
在 IBM Cloud中,单击 菜单 图标
> 资源列表。
-
查找您计划使用的 Event Streams 实例,然后选择该实例。
-
在 Event Streams 控制台中,单击 服务凭证。
-
选择新的凭证。
-
输入名称并选择 编写者 角色。
创建凭证 -
单击添加。
要限制对 1 主题的访问,请完成以下步骤:
-
从菜单栏中点击管理 > 访问(IAM ),然后选择服务ID。
选择服务标识 -
选择该服务标识。
-
选择 访问策略。
-
选择策略并对其进行修改以指定主题。
编辑策略 修改策略 -
使用 IBM Cloud CLI获取凭证,并记录api key和经纪人 URL 的值。
步骤 3. 在 Monitoring 中配置与 Event Streams 的连接
要配置 IBM Cloud Monitoring 度量数据流,请执行以下操作:
-
以具有管理员权限的用户身份启动 Web UI。 有关如何启动 Web UI 的更多信息,请参阅导航至 Web UI。
-
单击 用户图标。 这是具有已登录用户的首字母的图标。 然后单击 设置。
-
选择 度量数据流。
-
单击添加集成。 此时将显示“新建度量流集成”面板。
度量流式集成面板 -
指定以下信息:
- 集成名称
- 流配置的名称。
- 主题
- 要接收度量的 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 编码的证书。
凭证选项 - 压缩
- 选择压缩类型。 有效选项包括:
LZ4
,Snappy
,Gzip
和Zstandard
。 有关更多信息,请参阅 Apache Kafka。
-
单击 测试连接 以验证是否已成功配置 IBM Cloud Monitoring 与 Kafka 之间的连接。
必须先测试连接,然后才能保存并启用配置。
-
选择 作用域 并定义要导出的 度量。
对于 作用域,选择一个或多个标签以过滤定义的度量。
度量 必须使用 PromQL指定完整度量名称。
-
单击保存。
保存配置后,必须至少等待 30 分钟,然后流式方法才会处于活动状态。
通过 UI 启用或停止流式方法
您可以从“度量数据流”页面启动和停止度量流:
-
以具有管理员权限的用户身份启动 Web UI。 有关如何启动 Web UI 的更多信息,请参阅导航至 Web UI。
-
单击 用户图标。 这是具有已登录用户的首字母的图标。 然后单击 设置。
-
选择 度量数据流。 这将显示流式配置的列表。
流式配置 -
通过切换启用或禁用流式配置。
使用 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 实例:
-
检查您是否在与 Event Streams 实例相同的区域中具有 Monitoring 实例。 必须配置此实例以收集平台度量值。 更多信息,请参阅 启用平台指标。
-
在“仪表板”部分中,转至 仪表板模板,然后选择模板 IBM Event Streams (Enterprise)。
-
通过单击 创建定制仪表板来创建模板的副本。
您可以使用度量值 每秒的主题字节数 来查看 Monitoring 如何将数据发送到 Event Streams。
您可以使用度量值 每秒输出的主题字节数 来查看预订了 Event Streams的任何应用程序或服务如何使用数据。
-
(可选) 编辑面板 每秒输入的主题字节数。
编辑面板 然后,定制度量以查看每个主题的数据。
定制度量 检查解决方案是否设置为 10M。