如何用Datadog监控Kafka DLQ并配置新消息入队告警?
用Datadog监控Kafka DLQ并触发邮件告警的解决方案
一、先搞定指标筛选不生效的问题
- 先查Datadog采集的指标有没有带
topic标签:- 登Datadog控制台进Metrics Explorer,搜
kafka.topic.messages.in.count(这个是统计主题消息流入数,比你用的bytes_out更适合监控DLQ) - 看指标详情里的标签,确认
topic标签存在,且值和你的DLQ主题名完全匹配——别忽略大小写、下划线/连字符这类细节,很多时候就是名字差一点导致筛选失效
- 登Datadog控制台进Metrics Explorer,搜
- 检查Kafka集成配置:
如果是用Datadog Agent采指标,打开kafka.d/conf.yaml,确保开了主题指标和标签采集:
改完重启Agent,等几分钟再去Metrics里看标签是否正常。init_config: instances: - kafka_connect_str: "localhost:9092" collect_topic_metrics: true tag_topics: true
二、选对监控指标
监控DLQ有没有新消息,优先用**kafka.topic.messages.in.count(主题累计消息数)或者kafka.topic.messages.in.rate**(每秒消息流入速率)——这俩直接对应消息数量,比字节数更精准,毕竟你要的是“有新消息”的告警,不是字节变化。
三、配置告警规则
- 进Datadog的Monitors > New Monitor > Metric Monitor,选Threshold Alert类型
- 写查询语句:
用sum:kafka.topic.messages.in.rate{topic:<你的DLQ主题名>}.as_rate()sum是因为多broker集群要汇总所有节点的流量,单节点用avg也没问题 - 设置阈值:
比如设“1分钟内平均速率>0”就触发——DLQ正常情况下应该没消息,一旦有流入就说明产生死信了。可以根据业务调整时间窗口(比如5分钟),避免偶发测试消息误告警 - 配置邮件通知:
在Notify Your Team里加收件人/团队,告警内容可以写清楚DLQ主题名、当前消息速率、触发时间,方便快速定位 - 保存后测试:手动往DLQ发一条消息,看是否能收到告警邮件
四、额外优化点
- 可以加
service标签缩小范围,只监控你的Spring Boot应用对应的Kafka集群,比如:sum:kafka.topic.messages.in.rate{topic:<DLQ主题名>,service:<你的服务名>}.as_rate() - 开告警恢复通知,死信停止流入时能收到提醒
- 把DLQ的消息日志和Datadog指标关联起来,排查死信原因更方便
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

