部署和维护 / 上报自观测数据
本文主要介绍如何将配置 DataFlux Func 自观测数据。
1. 前言
默认情况下,DataFlux Func 的自观测数据存储在本地 Redis 和 MySQL 中。
在重度使用 DataFlux Func 后,指标、日志等内容数据量可能较为庞大。为了限制本地内存、磁盘使用,在本地保存的系统指标、任务记录日志会被缩减,保存总量也会被限制。
可以参考 部署和维护 / 系统指标和任务记录 / 关闭本地函数任务记录 关闭「本地函数任务记录」,减轻 MySQL 存储压力
如果需要完整记录 DataFlux Func 中产生的系统指标和任务记录日志,可以通过系统设置,将数据上报到数据平台。
2. 开启「自观测数据上报」
上报的任务日志为完整日志,不会被缩减
在 管理 / 系统设置 / 自观测数据上报,用户可以开启「自观测数据上报」
URL 地址可以填写 DataWay 或 DataKit 上报地址:
| Text Only | |
|---|---|
1 | |
| Text Only | |
|---|---|
1 | |
此外,一般也建议填写站点名,用于标记当前 DataFlux Func 用途,如:「测试用 Func」
在开启「自观测数据上报」后,可以同时关闭「本地函数任务记录」,减轻本地 DataFlux Func 存储压力
3. 在数据平台中查看系统指标、任务记录日志
正确配置「自观测数据上报」后,就可以在数据平台中查看上报的系统指标和任务日志了。
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_status 和 status
DataFlux Func 上报日志中,task_status 和 status 存在一对一关系,task_status 为任务状态描述,status 为满足数据平台规范的状态值。
具体对应表如下:
| task_status 值 | status 值 | 说明 |
|---|---|---|
success |
ok |
成功 |
failure |
critical |
失败 |
skip |
warning |
任务跳过 |
字段 origin 和 origin_id
origin 和 origin_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 取代 |