EC2上systemctl停止Kafka-connect-worker时同步发指标至Datadog方案问询
解决方案
1. 编辑Kafka Connect的systemd服务文件
找到Kafka Connect Worker对应的systemd服务文件,常见路径为/etc/systemd/system/kafka-connect-worker.service或/usr/lib/systemd/system/kafka-connect-worker.service。
用编辑器打开文件:
sudo nano /etc/systemd/system/kafka-connect-worker.service
2. 添加停止前的指标发送逻辑
在[Service]区块中新增ExecStopPre指令,用于在服务停止前向Datadog发送自定义停止状态指标:
[Service] # 保留原有配置(如ExecStart、User等) ExecStart=/path/to/your/kafka/connect/start-script.sh # 添加指标发送命令 ExecStopPre=/bin/bash -c 'curl -X POST "http://127.0.0.1:8126/v1/series" -H "Content-Type: application/json" -d "{\"series\":[{\"metric\":\"kafka.connect.worker.status\",\"points\":[[$(date +%s),0]],\"tags\":[\"service:kafka-connect-worker\"],\"type\":\"gauge\"}]}"' # 保留原有停止命令(若存在) ExecStop=/path/to/your/kafka/connect/stop-script.sh
参数说明
kafka.connect.worker.status:自定义指标名称,可按需修改;- 指标值
0:代表服务停止(若需区分运行状态,可在启动时发送值1); tags:用于在Datadog中筛选指标,可根据自身标签规范调整;- 确保Datadog Agent的本地API端口
8126处于开启状态(默认启用)。
3. 重载systemd配置并生效
修改完成后,重载systemd配置:
sudo systemctl daemon-reload
重启Kafka Connect Worker使配置生效:
sudo systemctl restart kafka-connect-worker
4. 验证效果
执行停止命令:
sudo systemctl stop kafka-connect-worker
登录Datadog控制台,搜索kafka.connect.worker.status指标,即可看到对应服务停止时间点的0值数据。
替代方案:发送Datadog服务检查
若需要更直观的服务状态告警,可将ExecStopPre替换为发送Service Check的命令:
/bin/bash -c 'curl -X POST "http://127.0.0.1:8126/v1/check_run" -H "Content-Type: application/json" -d "{\"check\":\"kafka.connect.worker\",\"status\":2,\"tags\":[\"service:kafka-connect-worker\"],\"message\":\"Kafka Connect Worker stopped via systemctl\"}"'
其中status值定义:0=正常、1=警告、2=异常(停止)、3=未知。
注意事项
- 确保EC2实例已安装
curl工具(默认环境通常已包含); - 避免使用会修改Kafka Connect集群状态的操作(如之前的
curl delete); - 若服务进程退出过快,可适当调整
ExecStopPre的执行优先级,确保指标发送完成后再停止服务。
内容的提问来源于stack exchange,提问作者srinivas
相关产品推荐
相关产品推荐

