查看「消息发送」函数日志
2024-09-05
本文档主要介绍观测云中消息发送任务中产生的函数日志
1. 简介
与其他 DataFlux Func 中执行的函数一样,当配置了函数日志上报至观测云后,消息发送任务的日志同样可以方便地在观测云平台查询。
有关如何配置函数日志上报到观测云,以及上报的各字段说明,请参考 手册 / 部署和维护 / 上报自观测数据
2. 查询日志
关键字段:
| 字段 | 类型 | 说明 |
|---|---|---|
source |
str | 固定为 DFF_task_record_func |
func_id |
str | 函数 ID 格式为: message_desk__api.* |
workspace_uuid |
str | 所属观测云工作空间 UUID 格式为: wksp_xxxxx |
monitor_checker_ids |
str(JSON) | 涉及监控器 ID 列表 仅限监控告警消息 格式为: [ "rul_xxxxx", "rul_yyyyy" ] |
event_ids |
str(JSON) | 涉及事件 ID 列表 仅限监控告警消息 格式为: [ "event-xxxxx", "event-yyyyy" ] |
message_type |
enum | 消息任务类型,详细见下文 X. 消息类型 |
exception_type |
str | 错误类型 如:微信消息发送失败 "WechatSendingFailure" |
exception |
str | 具体错误 如: WechatSendingFailure('Status Code: 200. Response: {"errcode":40058, ... <略> } |
如果需要查看某个工作空间的所有消息发送任务的执行日志,使用以下条件查询:
| Text Only | |
|---|---|
1 | |
如果需要查看特定类型消息的日志,使用 message_type 过滤:
| Text Only | |
|---|---|
1 | |
如果需要查看特定事件的消息日志,使用 event_ids 过滤:
| Text Only | |
|---|---|
1 | |
由其他系统直接发送消息
除了「监控器告警」,其他系统也存在发送消息的情况,并会调用不同的 Func 函数进行消息发送,具体请咨询调用方使用何种方式发送
比较典型的,如 Studio 发送一般性的通知邮件等,可能会直接调用 MessageDesk 脚本集下的函数
对应日志的查询方法如下:
| 直接发送邮件 | |
|---|---|
1 | |
延迟发送消息
对于某些需要延迟发送的消息(如静默前通知邮件),可能会调用「观测云支持」下的消息任务函数,并指定发送时间
延迟发送消息的日志时间
需要注意的是,延迟发送消息分 3 个阶段
-
设置任务阶段:如在 00:00 时,用户在 UI 操作,并产生了一个在 05:00 发送消息的任务(注意:此日志时间为 00:00 而不是 05:00)
-
延迟消息出列阶段:当时间到达 05:00 时,系统内部会从任务池中取出上述 1. 中的任务,并启动异步发送任务
-
实际发送阶段:消息实际发送
「设置任务阶段」的用户 UI 操作
一般来说,延迟触发的任务来自用户的 UI 操作
具体而言,如:用户在 00:00:00 添加了一个 00:30:00 开始生效的静默规则,并指定生效前 5 分钟发送通知
那么,用户的这个「添加静默规则」的动作,就叫做「UI 操作」,时间为用户进行操作的时间 00:00:00
而延迟任务发送时间则为「00:30:00 - 5 分钟」,即 00:25:00
此外,由于 Func 只提供基础功能,而具体业务功能。具体处理(如:什么时候调用了什么函数)请咨询 Studio 侧研发
对应日志的查询方法如下:
根据日志,检查是否正确配置了延迟任务
查询时间为 UI 操作时间
| 添加 / 替换消息任务 | |
|---|---|
1 | |

根据日志,检查延迟任务是否正确出列
查询时间为 计划发送时间
| 延迟任务出列日志 | |
|---|---|
1 | |

根据「延迟消息出列阶段」中实际调用的函数 ID 查询对应日志,检查发送结果
查询时间为 计划发送时间
| 消息实际发送日志 | |
|---|---|
1 | |

如涉及取消已经设置的延迟发送任务,可根据以下过滤条件搜索:
| 删除消息任务 | |
|---|---|
1 | |
3. 分段解读
每一行日志遵循如下格式:
| 时间 | 与上一行日志 时间差(毫秒) |
任务开始至本行日志 总时间(毫秒) |
所在模块 | 内容 |
|---|---|---|---|---|
[07-30 17:04:45] |
[+706ms] |
[706ms] |
【函数】 |
调用函数:message_desk__feishu.send |
| 具体示例 | |
|---|---|
1 | |
发送请求
记录具体消息发送的请求内容,包括地址、请求体
| 示例 | |
|---|---|
1 2 3 4 | |
请求结果
记录具体消息发送的响应内容,包括状态码,响应体
如遇到发送失败,可从此处开始排查
| 示例 | |
|---|---|
1 2 3 | |
4. 完整示例
每次迭代后日志内容可能有变化
由于存在新增、修改功能,或发现以往日志输出需要完善的地方
因此,每次迭代之后,日志具体内容细节可能多少都会有变动
以下是添加了解释的完整示例
在下方日志中:
# 开头的内容为说明解释,不是日志原文
同时额外加入了空行,方便阅读,日志原文中没有空行
其他内容为日志原文
| 日志解读 | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
X. 消息类型
字段 message_type 值与消息类型对照表如下:
message_type |
消息类型 |
|---|---|
"mail" |
邮件 |
"dingTalkRobot" |
钉钉机器人 |
"feishuRobot" |
飞书机器人 |
"wechatRobot" |
企业微信机器人 |
"HTTPRequest" |
HTTP 请求 |
"jiguang" |
极光推送 |
"sms" |
短信 |
"slackIncomingWebhook" |
Slack Incoming Webhook |
"teamsWorkflowWebhook" |
Teams Workflow Webhook |