部署和維護 / 上報自觀測數據
本文主要介紹如何將配置 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 取代 |