尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SeaTunnel 告警通知实战指南:邮件 + 钉钉双渠道任务失败通知 10 分钟跑通

SeaTunnel 告警通知实战指南:邮件 + 钉钉双渠道任务失败通知 10 分钟跑通 SeaTunnel 告警通知实战指南邮件 钉钉双渠道任务失败通知 10 分钟跑通【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnelSeaTunnel 是一个分布式数据集成工具EmailSink和DingTalk是它内置的两个官方 Sink 连接器。本文用它们搭一条任务告警链路先跑通邮件通知再接入钉钉群机器人最后实现双渠道同时触达并控制消息频率。全部配置预计 10 分钟完成做完你会收到第一封告警邮件和第一条群消息。一、告警通知链路长什么样链路只有三段数据源产出告警数据 → 引擎调度 Sink → 邮件 / 钉钉渠道出站。检查任务source产出失败记录 / 状态数据 │ 数据行 ├─ EmailSink ─ SMTP 服务器 ─ 运维邮箱固定正文 CSV 附件 └─ DingTalk ─ 群机器人 Webhook ─ 钉钉群文本消息两点事实先说清这两个连接器本质是普通数据接收器仓库里没有独立的告警框架触发与否取决于有没有数据流入。Email 连接器文档和 DingTalk 连接器文档给出了全部参数定义本文配置项均以此为据。二、动手前检查清单一屏看完任何一项不满足都建议先补齐再写配置。检查项要求验证方式SeaTunnel 版本包含 EmailSink、DingTalk 两个连接器的版本安装目录connectors下能看到对应 jarJDK8 及以上邮件实现依赖 JDK 自带com.sun.mail包JDK 8 下最稳定java -version网络出口邮件SMTP 服务器 465 或 25 端口可达在运行节点telnet smtp.example.com 465网络出口钉钉可访问oapi.dingtalk.comHTTPS浏览器或curl访问机器人 Webhook 域名邮箱账号已开启 SMTP 服务并生成授权码专用密码邮箱设置页可见授权码钉钉机器人群内已创建自定义机器人安全设置为加签能拿到access_token与SEC开头密钥三、5 分钟跑通邮件通知 目标用 FakeSource 模拟一条告警记录验证邮箱能收到带附件的邮件。新建alert-email.confsource 部分用一行 FakeSource 模拟一条失败记录即可sink 配置如下sink { EmailSink { email_from_address senderexample.com email_to_address opsexample.com email_host smtp.example.com email_transport_protocol smtp email_smtp_auth true email_smtp_port 465 email_authorization_code 你的授权码 email_message_headline SeaTunnel 任务告警 email_message_content 任务明细见附件 } }参数含义与 EmailSinkOptions 定义一一对应参数说明示例email_from_address发件人地址认证时也作为用户名senderexample.comemail_to_address收件人多个用英文逗号分隔ax.com,bx.comemail_hostSMTP 服务器地址smtp.qq.comemail_transport_protocol传输协议smtp / smtpsemail_smtp_auth是否开启认证为 true 时自动启用 SSLtrueemail_smtp_portSMTP 端口默认 465465email_authorization_code邮箱授权码不是登录密码16 位专用密码email_message_headline邮件标题固定文本SeaTunnel 任务告警email_message_content邮件正文固定文本任务明细见附件email_attachment_name附件文件名默认 emailsink.csvalert.csv关于消息模板要说实话标题和正文是写死的字符串不支持变量替换上游数据行会被写成 CSV 附件随邮件发出。所以动态告警信息放在附件里正文写清背景即可。运行验证./bin/seatunnel.sh --config alert-email.conf -e local收件箱收到带 CSV 附件的邮件、日志出现 Sent message successfully 即成功。注意 EmailSinkWriter 实现中的逻辑至少写入一行数据才发信上游没数据时会跳过并记 No data to send。四、钉钉机器人配置与加签 目标把同一份告警数据推到钉钉群。群设置 → 智能群助手 → 添加自定义机器人安全设置选加签。复制 Webhook 地址形如https://oapi.dingtalk.com/robot/send?access_token...和SEC开头的密钥。配置 sinksink { DingTalk { url https://oapi.dingtalk.com/robot/send?access_tokenXXXXXX secret SECXXXXXXXXXXXXXXXXXXXX } }加签原理一句话连接器用 secret 对时间戳\n密钥做 HmacSHA256 再 Base64、URL 编码把 timestamp 和 sign 拼到 Webhook 后发出钉钉服务端据此校验来源见 DingTalkWriter 实现。参数说明示例url机器人 Webhook 完整地址https://oapi.dingtalk.com/robot/send?access_token...secret与机器人绑定的加签密钥SEC093249eef...消息格式上该连接器把每一行数据序列化为一条 text 类型消息发出msgtype 在源码中固定为 text。想要更易读的告警措辞在上游把行数据组织成完整句子例如I[2026-09-17 12:00, job-order-sync, FAILED, OOM at writer]。五、双渠道同时触达与频率控制同一个作业里声明两个 sink数据并行发往两个渠道sink { EmailSink { # 同第三节的完整配置 } DingTalk { url https://oapi.dingtalk.com/robot/send?access_tokenXXXXXX secret SECXXXXXXXX } }触发条件与限流现状DingTalk 每收到一行就发一条群消息EmailSink 只在有数据时、Writer 关闭时发一封。两个连接器都没有内置的频控参数因此防骚扰要靠数据侧上游加 filter 或去重只让首次失败状态变化的行流出避免重复推送需要聚合时优先走邮件渠道——多行数据天然合并成一个附件巡检类作业按周期调度周期内汇总后再产出告警行。六、排错手册现象常见原因处理动作日志报 Send email failed / SMTP 认证失败填了登录密码而非授权码email_smtp_authtrue时端口未用 465生成邮箱专用密码核对 host、port、protocol 三者匹配确认 SMTP 出口可达作业成功但没收到邮件source 未产出一行数据空数据不发信查日志 No data to send, skipping email确认 source 行数大于 0钉钉返回签名校验失败secret 与机器人不匹配运行机时间与标准时间偏差过大重新复制 webhook 与 secret用 NTP 同步机器时钟钉钉返回安全策略错误机器人安全设置用了自定义关键词而非加签群机器人安全设置改为加签后重新取 secret发送超时、连接被重置网络出口受限放开 465邮件与 443钉钉出站或配置代理延伸方向把周期巡检作业固定成模板检查类 source 定时运行仅在发现失败时向两个 sink 输出记录形成低噪音的失败通知。仓库中还有 connector-slack 等结构类似的接收器可按同一模式扩展渠道。附件 CSV 的字段顺序与分隔符由上游 schema 和email_field_delimiter决定可按团队规范固化成统一附件格式。先让一条 FakeSource 数据到达你的邮箱和钉钉群再谈调度与模板——链路通了后面的事都是配置。【免费下载链接】seatunnelSeaTunnel is a multimodal, high-performance, distributed, massive data integration tool.项目地址: https://gitcode.com/GitHub_Trending/se/seatunnel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表