要让容器错误日志自动触发企业微信告警,需构建日志采集→异常识别→告警触发→企业微信投递的可靠链路:用fluentd/filebeat采集stderr及关键词日志,elasticsearch/kql或elastalert/falco识别真实异常,再通过webhook推送结构化markdown消息至企业微信。

要让容器日志中的错误日志自动触发企业微信告警,关键不是“直接监听 stdout/stderr”,而是构建一条从日志采集 → 异常识别 → 告警触发 → 企业微信投递的可靠链路。整个过程无需手动轮询或写脚本轮查文件,核心靠标准化工具组合与规则驱动。
日志采集阶段:统一收口,结构化输出
容器本身不负责告警,只负责输出日志(建议用 json-file 驱动并配置 max-size 防爆盘)。真正起作用的是采集层:
- 推荐使用 Fluentd(轻量、插件丰富)或 Filebeat(与 ELK/EFK 生态兼容好)
- 配置采集器过滤
stream: "stderr"或匹配关键词如error、Exception、panic、failed - 输出到 Elasticsearch 或直接发往 Alertmanager / ElastAlert 等规则引擎(避免中间落盘丢失)
示例 Filebeat 过滤片段(filebeat.yml):
processors: - drop_event.when.not: or: - regexp.contains: 'message', '(?i)error|exception|fail|panic' - regexp.contains: 'stream', 'stderr'
异常识别阶段:基于规则而非关键词堆砌
单纯 grep “error” 容易误报(比如日志里出现 “error code 200”)。更稳妥的方式是:
解析微信公众号文章,提取标题、作者、正文、图片等信息。用户发送链接(mp.weixin.qq.com)时触发,自动提取内容并可保存至飞书表格。
- 在 Elasticsearch 中用 KQL 或 Lucene 写告警查询,例如:
log.level: "ERROR" or message: "*Exception*" and not message: "*health*" - 或用 ElastAlert(配合
frequency/spike类型规则)检测单位时间错误突增 - Falco 更进一步:它不看应用日志,而是监控系统调用,能捕获
execve启动失败、open权限拒绝等底层异常,生成带priority: Critical的 JSON 日志,天然适配告警规则
企业微信推送阶段:Webhook 是最简路径
所有告警引擎最终都要调用企业微信的 Webhook 接口(需提前在管理后台创建「自定义机器人」并获取 URL):
- ElastAlert:在
alert配置中启用wechat插件,填入 webhook 地址和 key - Alertmanager:配置
webhook_configs,用webhook_url指向一个轻量中转服务(如 Python Flask 小接口),把 Prometheus 告警格式转成企业微信要求的 JSON 格式 - 自研脚本:接收告警事件后,POST 到
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx,body 包含msgtype: text或markdown
企业微信 markdown 示例(突出错误上下文):
{ "msgtype": "markdown", "markdown": { "content": "? <font color='\"warning\"'>容器异常</font>\n> **服务名**:`nginx-prod`\n> **错误摘要**:`Connection refused`\n> **发生时间**:`2026-08-13 17:15:22`\n> **原始日志**:`connect() failed (111: Connection refused) while connecting to upstream`" } }
实际部署建议:优先复用现有栈,避免重复造轮子
- 如果已有 ELK:直接在 Kibana 中创建「告警」→ 选 Elasticsearch query → 设定条件 → 添加 WeChat action
- 如果用 Prometheus + cAdvisor:写一条
count_over_time(container_logs{level=~"error|critical"}[5m]) > 3的 PromQL 规则,交由 Alertmanager 分发 - 如果追求安全深度:Falco + Kafka + 自研消费者 → 过滤高危事件 → 推送企业微信(适合审计合规场景)
不复杂但容易忽略










