跳转至

部署和维护 / 上报自观测数据

本文主要介绍如何将配置 DataFlux Func 自观测数据。

1. 前言

默认情况下,DataFlux Func 的自观测数据存储在本地 Redis 和 MySQL 中。

在重度使用 DataFlux Func 后,指标、日志等内容数据量可能较为庞大。为了限制本地内存、磁盘使用,在本地保存的系统指标、任务记录日志会被缩减,保存总量也会被限制。

可以参考 部署和维护 / 系统指标和任务记录 / 关闭本地函数任务记录 关闭「本地函数任务记录」,减轻 MySQL 存储压力

如果需要完整记录 DataFlux Func 中产生的系统指标和任务记录日志,可以通过系统设置,将数据上报到数据平台。

2. 开启「自观测数据上报」

上报的任务日志为完整日志,不会被缩减

管理 / 系统设置 / 自观测数据上报,用户可以开启「自观测数据上报」

URL 地址可以填写 DataWay 或 DataKit 上报地址:

Text Only
1
http://openway.ip-or-domain.com?token=tkn_xxxxx
Text Only
1
http://datakit.ip-or-domain:9529

此外,一般也建议填写站点名,用于标记当前 DataFlux Func 用途,如:「测试用 Func」

在开启「自观测数据上报」后,可以同时关闭「本地函数任务记录」,减轻本地 DataFlux Func 存储压力

setup-guance-data-upload.png

3. 在数据平台中查看系统指标、任务记录日志

正确配置「自观测数据上报」后,就可以在数据平台中查看上报的系统指标和任务日志了。

dff-metric-in-guance.png

4. 上报数据说明

DataFlux Func 会上报多种数据,供排查问题。

自观测会随时调整

自观测数据会根据实际情况,随版本更新而随时调整。本文档仅提供最新版的自观测数据说明。

改用 service 过滤提高查询效率

在最新版中,所有 Logging 自观测数据都会额外增加 service 的 Tag,值与 Logging 中的 source 相同,用于适配 ScopeDB 的 service 分区存储。

因此,当查询 Func 的 Logging 自观测数据时,将过滤条件 source:xxxxx 改为 service:xxxxx,可以显著提高查询效率。

延迟队列(Metric)

尚未到达触发时间的任务队列

指标集:DFF_delay_queue

字段 类型 说明 示例值
queue Tag 队列 "8"
length Field 队列长度 100

工作队列(Metric)

已经到达触发时间的任务队列

指标集:DFF_worker_queue

字段 类型 说明 示例值
queue Tag 队列 "8"
length Field 队列长度 100
worker_count Field 监听队列的工作单元数量 5
process_count Field 监听队列的进程数量 25

函数触发计数(Metric)

指标集:DFF_func_trigger

字段 类型 说明 示例值
func_id Tag 函数 ID "demo__test.run"
trigger_count_per_minute Field 每分钟触发数 100

函数执行计数(Metric)

指标集:DFF_func_run

字段 类型 说明 示例值
func_id Tag 函数 ID "demo__test.run"
run_count_per_minute Field 每分钟执行数 100

函数执行状态计数(Metric)

指标集:DFF_func_status

字段 类型 说明 示例值
status Tag 函数执行状态 "success"
status_count_per_minute Field 每分钟状态数 100

函数执行耗时(Metric)

指标集:DFF_func_cost

字段 类型 说明 示例值
wait_cost_sum_per_minute Field 每分钟等待耗时合计(毫秒) 10000
queue_cost_sum_per_minute Field 每分钟排队耗时合计(毫秒) 10000
run_cost_sum_per_minute Field 每分钟执行耗时合计(毫秒) 10000
total_cost_sum_per_minute Field 每分钟总耗时合计(毫秒) 10000
cpu_cost_sum_per_minute Field 每分钟 CPU 耗时合计(毫秒) 10000
non_cpu_cost_sum_per_minute Field 每分钟非 CPU 耗时合计(毫秒) 10000

缓存数据库(Metric)

指标集:DFF_cache_db

字段 类型 说明 示例值
server Tag 目标数据库(HOST:PORT/DB "127.0.0.1:6379/5"
keys Field Key 数量 100
used_memory Field 内存使用量(字节) 10000
connected_clients Field 已连接的客户端数量 100
uptime Field 服务运行时长(秒) 60

数据库表(Metric)

指标集:DFF_db_table

字段 类型 说明 示例值
server Tag 目标数据库(HOST:PORT/DB "127.0.0.1:3306/dataflux_func"
name Tag 表名 "biz_main_func_api"
rows Field 行数 10
data_size Field 数据占用大小(字节) 100
index_size Field 索引占用大小(字节) 100
total_size Field 总占用大小(字节) 200
avg_row_size Field 平均每行占用大小(字节) 100

定时任务计划(Metric)

指标集:DFF_cron_job_scheduled

字段 类型 说明 示例值
scheduled_count_per_week Field 每周计划执行数 604800
scheduled_count_per_day Field 每天计划执行数 86400
scheduled_count_per_hour Field 每小时计划执行数 3600
scheduled_count_per_minute Field 每分钟计划执行数 60
scheduled_count_per_second Field 每秒计划执行数 1

业务实体(Metric)

指标集:DFF_entity

字段 类型 说明 示例值
entity Tag 业务实体 "funcAPI"
count Field 数量 100
enabled_count Field 已启用的数量 99

自观测数据上报 Panic 级别(Metric)

指标集:DFF_self_monitor_upload_panic_level

字段 类型 说明 示例值
panic_level Field Panic 级别 10

Func 服务信息(Logging)

指标集:DFF_service_info

字段 类型 说明 示例值
name Tag 服务名称 "server""worker""beat"
version Tag 版本号 "7.1.11"
edition Tag 版本 "GSE"
hostname Tag 主机名 "web001"
pid Tag 进程 PID 1234
uptime Field 服务运行时长(秒) 60

系统任务记录 / 函数任务记录(Logging)

DataFlux Func 在执行任何内部系统任务或者函数任务后,都会上报相应的任务日志,可以通过日志查看器查看。

指标集 说明
DFF_task_record 系统任务记录
DFF_task_record_func 函数任务记录
字段 说明 系统任务记录 函数任务记录
source 数据来源 固定为 DFF_task_record 固定为 DFF_task_record_func
site_name 站点名
id 任务 ID
name 任务名称
queue 所在队列
task_status 任务状态,可能值见下文
root_task_id 根任务 ID
script_set_id 所属脚本集 ID
script_id 所属脚本 ID
func_id 函数 ID
func_name 函数名
origin 来源,可能值见下文
origin_id 来源 ID
如:定时任务 ID
script_set_title 所属脚本集标题
script_title 所属脚本标题
func_title 函数标题
cron_job_exec_mode 定时任务执行模式 仅限定时任务
func_call_kwargs 函数传入参数
cron_expr 定时任务 Crontab 表达式 仅限定时任务
call_chain 调用链
return_value Return 返回值
message 任务日志
kwargs 任务参数
eta 预计执行时间
delay 延迟执行时长(秒)
timeout 超时时长(秒)
expires 过期时长(秒)
ignore_result 是否忽略结果
result 结果内容
exception_from 异常来源
exception_type 异常类型
exception 异常内容
origin_exception_type 原始异常类型
origin_exception 原始异常内容
traceback 错误堆栈
trigger_time_iso 触发时间(ISO 日期格式)
start_time_iso 启动时间(ISO 日期格式)
end_time_iso 结束时间(ISO 日期格式)
wait_cost 排队耗时(毫秒)
run_cost 执行耗时(毫秒)
total_cost 总耗时(毫秒)
cpu_cost CPU 耗时(毫秒)
cpu_cost_percent CPU 耗时占比
non_cpu_cost 非 CPU 耗时(毫秒)
non_cpu_cost_percent 非 CPU 耗时占比
sys_db_query_count 系统 DB 查询次数
sys_db_query_details 系统 DB 查询详情
sys_cache_db_query_count 系统缓存查询次数
sys_cache_db_query_details 系统缓存查询详情
status 日志状态,可能值见下文
workspace_uuid 工作空间 ID 仅限监控器函数
df_monitor_checker_id 监控器 ID 仅限监控器函数
df_monitor_id 告警策略 ID 仅限监控器函数

5. 相关字段详解

部分字段详解如下

字段 task_statusstatus

DataFlux Func 上报日志中,task_statusstatus 存在一对一关系,task_status 为任务状态描述,status 为满足数据平台规范的状态值。

具体对应表如下:

task_status 值 status 值 说明
success ok 成功
failure critical 失败
skip warning 任务跳过

字段 originorigin_id

originorigin_id 字段用来标记函数任务的执行来源,具体值如下:

origin 值 说明 origin_id 值意义 备注
funcAPI 函数 API 函数 API ID
cronJob 定时任务 定时任务 ID
direct 直接调用函数
如:数据平台 Studio 通过集群内调用
固定为 direct
integration 由脚本集成触发 {集成类型}.{启动方式}-{函数 ID}
旧版 syncAPI 同步 API 同步 API ID 在最新版中已被 funcAPI 取代
旧版 asyncAPI 异步 API 异步 API ID 在最新版中已被 funcAPI 取代
旧版 authLink 授权链接 授权链接 ID 在最新版中已被 syncAPI 取代
旧版 crontab 自动触发配置 自动触发配置 ID 在最新版中已被 cronJob 取代
旧版 batch 批处理 批处理 ID 在最新版中已被 asyncAPI 取代