概述
投递与消费可观测是 CLS 为投递任务与日志消费提供的运行时观测能力。相关任务在运行过程中会持续上报运行状态、处理量、时延等运行数据,这些运行数据以服务日志的形式存储到 CLS 内置的服务日志主题(
cls_service_log),可通过日志检索、SQL 分析、告警策略实时观测每一个任务的运行状态。本文按模块分章节介绍各自的服务日志字段与观测用法:
日志消费
说明:
服务日志主题
cls_service_log 汇聚了数据加工、定时 SQL、投递、日志消费等多个模块的运行日志。查询某个模块时,按该模块对应的字段前缀(如投递 Splunk 为 splunk_task_*、日志消费为 k_consumer_*)过滤即可。后续新增的投递类型(如投递 Azure)将以新章节形式补充到本文。前提条件与默认配置
已创建对应的 投递 Splunk 任务 或 日志消费。
任务已开启服务日志开关:服务日志开关默认开启,可在对应任务的配置页面查看和调整该开关。
投递 Splunk
使用场景
投递量与结果统计
通过
splunk_task_success_count(成功投递的事件条数)与 splunk_task_size(本批次投递数据量,字节)观察投递吞吐;splunk_task_dessert_size、splunk_task_dessert_sample_count 观察被丢弃的数据量,判断是否存在数据校验不通过被丢弃的情况。投递耗时观测
通过
splunk_task_send_time 与 splunk_task_arrived_time 的差值(结束处理单批次时间 − 开始处理单批次时间,均为秒级时间戳)衡量单批次投递的耗时。耗时持续升高通常意味着目标端写入变慢或网络链路存在瓶颈。投递状态监控与故障定位
通过
splunk_task_status 观察投递任务状态,异常时结合 splunk_task_msg 定位原因:Running:正常运行中。InvalidMessage:无效的数据(样本校验不通过,被丢弃)。UploadFailed:上报数据到目标失败。异常告警建议
投递失败(
splunk_task_status = UploadFailed)。数据被丢弃(
splunk_task_dessert_count > 0)。投递耗时超阈值(
splunk_task_send_time − splunk_task_arrived_time 超过业务容忍值)。服务日志字段说明
字段名 | 描述 | 示例值 |
splunk_task_uin | 用户账号 ID(UIN)。 | 1254139626 |
splunk_task_topic_id | 源日志主题 ID。 | XXXXXX-d122-43cf-bb74-39a4c9ec79bb |
splunk_task_task_id | 投递任务 ID。 | XXXXXX-61d1-4aff-b503-9a647379a107 |
splunk_task_status | 投递任务状态: Running:正常运行中InvalidMessage:无效的数据,样本校验不通过被丢弃。UploadFailed:上报数据到目标失败。 | Running |
splunk_task_success_count | 成功投递的事件条数。 | 10 |
splunk_task_size | 本批次投递的数据量(字节)。 | 540 |
splunk_task_dessert_count | 投递本次丢弃行数。 | 0 |
splunk_task_dessert_size | 投递本次丢弃样本的数据量(字节)。 | 0 |
splunk_task_dessert_sample_count | 投递本次丢弃样本点数量。 | 0 |
splunk_task_send_time | 投递任务结束处理单批次数据的时间(秒级时间戳),与 splunk_task_arrived_time 的差值用于衡量投递耗时。 | 1732691546 |
splunk_task_arrived_time | 投递任务开始处理单批次数据的时间(秒级时间戳)。 | 1732691538 |
splunk_task_region | 投递任务所属地域。 | ap-guangzhou |
splunk_task_target_address | 投递目标地址。 | http://10.1.1.8:8088/services/collector |
splunk_task_msg | 投递任务信息: invalid msg error:数据无效,样本校验不通过,丢弃该样本。upload data error:上报数据到目标失败。 | invalid msg error |
常用 SQL 查询示例
以下 SQL 需在服务日志主题
cls_service_log 中查询,并按字段前缀 splunk_task_* 过滤。每小时成功投递条数:
splunk_task_task_id: 您的任务 ID | select date_trunc('hour', __TIMESTAMP__) AS time,sum(splunk_task_success_count) AS success_countgroup by timeorder by time
投递耗时 P95 / P99:
splunk_task_task_id: 您的任务 ID | select approx_percentile(splunk_task_send_time - splunk_task_arrived_time, 0.95) AS p95_cost,approx_percentile(splunk_task_send_time - splunk_task_arrived_time, 0.99) AS p99_cost
丢弃数据统计:
splunk_task_dessert_count > 0 | select splunk_task_task_id,sum(splunk_task_dessert_count) AS dessert_totalgroup by splunk_task_task_idorder by dessert_total desclimit 10
日志消费
监控查看入口
日志消费(Kafka 协议消费)的运行监控内置在日志主题管理页中,查看步骤如下:
1. 登录 日志服务控制台,在左侧导航栏中选择日志主题。
2. 单击需要使用 Kafka 协议消费的日志主题 ID / 名称,进入日志主题管理页面。
3. 选择投递和消费 > Kafka 协议消费页签,切换页面至监控区域。
4. 监控分为消费主题与消费组两个维度:
消费主题维度:查看该日志主题下的消费日志条数(对应
k_consumer_line_count)、消费流量(对应 k_consumer_flow_count)。若同时开启多个消费组,流量与条数为各消费组之和。消费组维度:查看消费延迟(对应
k_consumer_delay_s),支持按消费组颗粒度(整体延迟)和分区颗粒度(单分区延迟)进一步下钻。5. 可在图表上方选择监控数据的时间区间;单击图表右上角的告警图标可直接配置告警。
说明:
配置告警需先打开服务日志开关,并拥有服务日志主题
cls_service_log 的读写权限。使用场景
消费量统计
通过
k_consumer_flow_count(消费的流量)与 k_consumer_line_count(消费的条数)观察日志消费吞吐。消费延迟观测
通过
k_consumer_delay_s(消费延迟时间,单位秒)观察消费端相对生产端的滞后程度。延迟持续升高通常意味着消费能力不足、消费端处理变慢或分区数据倾斜。消费分布分析
通过
k_consumer_group_id、k_consumer_partition_id、k_consumer_topic_name 聚合,识别各消费组、各分区的消费量与延迟分布,辅助排查数据倾斜与扩容规划。异常告警建议
消费延迟超阈值(
k_consumer_delay_s 超过业务容忍值)。消费量持续为 0(
k_consumer_line_count = 0 持续多个周期)。服务日志字段说明
字段名 | 描述 | 示例值 |
k_consumer_topic_name | 消费主题名称。 | XXXXXX-3d16a85a-b9cc-48a6-885f-b4215354c6c0 |
k_consumer_delay_s | 消费延迟时间,单位秒。 | 0 |
k_consumer_flow_count | 消费的流量。 | 0 |
k_consumer_line_count | 消费的条数。 | 0 |
k_consumer_group_id | 消费组 ID。 | test-sql-result-1-4 |
k_consumer_logset_id | 消费日志集 ID。 | XXXXXX-1254139626 |
k_consumer_partition_id | 消费主题分区 ID。 | 2 |
常用 SQL 查询示例
以下 SQL 需在服务日志主题
cls_service_log 中查询,并按字段前缀 k_consumer_* 过滤。消费延迟 Top N 分区示例:
k_consumer_group_id: 您的消费组 ID | select k_consumer_partition_id,max(k_consumer_delay_s) AS max_delaygroup by k_consumer_partition_idorder by max_delay desclimit 10