数据转发kafka服务配置指引
最近更新时间: 2025-10-11 18:10:00
一、功能描述
支持运营端运维管理员把云监控数据转发到指定kafka 支持以下能力:
- 全量数据转发。比如转发cvm所有的指标数据。
- 支持部分转发。比如只转某台cvm或者某个appid下所有cvm的指标数据,也支持转发指定实例指定指标的数据。 以上这些通过转发规则进行配置
二、转发配置
由于缺少前端页面,因此转发规则通过黑屏操作,即在数据库中插入转发规则,步骤为: 1、连上转发数据库,数据库名为dispense。 2、配置转发规则。
-- 新建一条规则
insert into t_rule (RuleName, Status) values ('转发规则名', 1);
说明:
RuleName: 规则名称
Status: 规则是否启用,1 启用 0 不启用
-- 配置需要需要转发的指标
insert into t_metric (RuleId, Metric, Namespace, Measurement, Periods) values (10, 'cpu_usage', 'qce/cvm', 'cvm_device', '60');
说明:
RuleId:上面t_rule新建一条规则后的id字段
Metric:指标名
Namespace:指标所在的Namespace
Measurement:对应云监控的视图,如果获取视图参考说明1
Periods: 指标的时间粒度,支持配置"60,300"这种指定多个时间粒度,也支持配置"*"支持全部粒度
如何知道指标所在的Namespace和Measurement即支持的时间粒度,参考附录1
-- 配置过滤条件(非必须,如果只转发某个实例数据,则配置。该表总共有10个,通过对ruleId % 10可知道${n}在哪个表)
insert into t_condition_${n} (RuleId, Filters) values (10, '[{"Key":"vm_uuid","Values":["c7fc0b4c-0059-4318-bb0c-dc4a31a071da"],"Expression":"="},{"Key":"__appid__","Values":["251005942", "1"],"Expression":"in"}]');
说明:
RuleId:上面t_rule新建一条规则后的id字段
Filters:转发过滤规则,是个json数组,数组之间是and的关系
-- 配置转发目标kafka
insert into t_target (RuleId, Target, ProtoType) values (10, '{"brokers":"11.150.215.105:9092","topic":"Nowrite","user":"","password":""}', 1);
说明:
RuleId:上面t_rule新建一条规则后的id字段
Target:目标kafka地址
ProtoType:转发至kafka的消息类型。1 json 2 protobuf
三、 消息协议
转发至kafka消息协议如下:
// json
{
"Namespace": "qce/cvm",
"MetricName": "cpu_usage",
"Statistic": "MAX",
"Period": 60,
"Dimensions": [{
"Name": "appid",
"Value": "1"
}, {
"Name": "projectid",
"Value": "0"
}, {
"Name": "vm_uuid",
"Value": "4f7639f1-f156-41b4-9072-f7e27af97d3b"
}],
"Timestamp": 1737107700000,
"Value": 22.916666666666668
}
四、转发表结构说明
| 表名 | 含义 | 说明 |
| t_rule | 转发规则表 | 包含规则id、规则名、配置用户等规则元数据
`Id: 38230` `RuleName: 1118-二期-cvm-cpu // 转发规则名` `AppId: 1300260700 // 配置规则的用户appid,可为空` `SubUin: 0 // 配置规则的用户uin,可为空` `Status: 1 // 规则是否启用,1 启用 0 不启用` `CreateTime: 2024-11-20 11:14:23` `UpdateTime: 2024-11-20 11:14:23` `IsAllMetric: 0 // 可为空` |
| t_metric | 转发指标表 | 转发关联的指标信息。需要特别说明,如果是TCE环境,`ExtNamespace`和`ExtMetric`为空
` Id: 3732457` ` RuleId: 38230` ` ExtMetric: CpuUtil // 对外指标名,可为空` `ExtNamespace: QCE/TI_MODEL // 对外namespace,可为空` ` Measurement: model_svc // 视图名` ` Periods: * // *表示所有粒度,如果只想转发60和300粒度则配置60,300` ` Metric: cpu_util // 对内指标名` ` Namespace: qce/ti_model // 对内namespace` ` CNMeaning: CPU使用率 // 指标中文名,可为空` ` ENMeaning: cpu_util // 指标英文名,可为空` ` CName: ` ` Unit: % // 指标单位,可为空` ` CreateTime: 2024-12-12 18:30:00` ` UpdateTime: 2024-12-12 18:30:00` |
| t_condition_${n} | 转发条件表 | 总共有10个表(0~9),通过对ruleId % 10可以知道转发条件在哪个表上 也支持TCE环境配置全转发,即`condition`表为空 Filters的Expression只支持 `=` 或 `in` ;`=` 的情况下Values只会有一个值,`in` 的情况下 Values 可能是多个 `Id: 12` `RuleId: 38230` `Filters: [{"Key":"vm_uuid","Values":["c7fc0b4c-0059-4318-bb0c-dc4a31a071da"],"Expression":"="},{"Key":"__appid__","Values":["251005942", "1"],"Expression":"in"}]` `CreateTime: 2024-11-19 17:49:19` `UpdateTime: 2024-11-19 17:49:19` |
| t_target | 转发目标表 | TargetType目前只支持`Kafka`,ProtoType支持 `json`(1)和`pb`(2)两种 ` Id: 34539` ` RuleId: 38230` `TargetType: Kafka` ` Target: {"brokers":"11.150.215.105:9092","topic":"Nowrite","user":"","password":""}` ` ProtoType: 1` `CreateTime: 2024-11-19 16:48:31` `UpdateTime: 2024-11-19 16:48:31` |
五、附录1
如何查看指标、Namespace、Measurement、Period?
在master节点上执行kubectl get ingress -A | grep isd.barad
通过浏览器访问该域名
