数据转发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 通过浏览器访问该域名