本文目录导读:

- 场景一:使用 ELK Stack(Elasticsearch + Logstash + Kibana)—— 开源首选
- 场景二:使用云服务(以阿里云 SLS 日志服务为例)—— 免运维
- 场景三:使用商业监控工具(如 Grafana + Loki/Prometheus)—— 可视化最强
- 核心“坑”与最佳实践
- 快速选择建议
收集日志 → 提取关键信息 → 设定触发条件 → 通知负责人。
不同的工具实现方式不同,下面针对三大主流场景(开源 ELK、云服务、商业监控)分别说明操作方法。
使用 ELK Stack(Elasticsearch + Logstash + Kibana)—— 开源首选
这是最常见的方案,标准做法是使用 Elastic Watcher(X-Pack 的一部分,基础版免费)。
步骤:
- 确认日志已进入 Elasticsearch:确保你的应用日志已通过 Filebeat/Logstash 发送到了 ES 索引(如
myapp-logs-*)。 - 进入 Kibana:
- 点击左侧菜单 Stack Management → Watcher。
- 点击 创建阈值告警 (Create threshold alert)。
- 配置规则(核心步骤):
- 名称:
接口500错误告警 - 索引:选择
myapp-logs-* - 时间窗口:
最近5分钟 - 查询条件:
- KQL 写法:
response_status: >= 500 - Lucene 写法:
response_status: [500 TO *]
- KQL 写法:
- 触发条件:
count()is greater than10(5分钟内超过10个500错误就告警)
- 名称:
- 配置动作(通知方式):
- Slack:填入 Webhook URL。
- Email:配置 SMTP 服务器。
- Webhook:调用你的自定义接口(最灵活)。
- 保存并激活。
优点:完全自主可控,数据不出网。 缺点:需要维护 ES 集群。
使用云服务(以阿里云 SLS 日志服务为例)—— 免运维
国内用户常用阿里云日志服务(SLS),其告警配置非常方便。
步骤:
- 日志已采集:确认你的日志已经通过 Logtail 等采集到了 SLS 的 Logstore。
- 进入告警:打开 SLS 控制台,找到你的 Project → 告警 → 告警规则。
- 新建告警:
- 搜索语句:
* | select count(*) as error_count where status >= 500 - 触发条件:
error_count > 100(错误数大于100) - 分组:按
host或service_name分组,可以分别看到每台机器的情况。
- 搜索语句:
- 设置通知:
- 行动策略:选择已有的钉钉/飞书/企业微信机器人(填入 Webhook URL)。
- 频率:每5分钟检查一次。
- 保存。
优点:无需维护服务器,自动弹性伸缩。 缺点:按存储和查询量付费。
使用商业监控工具(如 Grafana + Loki/Prometheus)—— 可视化最强
Grafana 现在是可视化标准,配合 Loki 处理日志,配置告警。
步骤:
- 接入数据源:Grafana 里添加 Loki 数据源(如果是 Prometheus 指标,方法类似)。
- 创建告警规则:
- 进入 Alerting → Contact points(先配置通知渠道,如钉钉、邮件)。
- 进入 Alert rules → New alert rule。
- 编写查询:
- 使用 LogQL 语法:
sum(rate({service="myapp"} |= "ERROR" [5m])) > 0.1含义:过去5分钟内,每秒钟 ERROR 日志出现次数超过0.1次(即5分钟有30个ERROR)。
- 使用 LogQL 语法:
- 设置通知:选择刚才配置好的 Contact point。
- 保存。
优点:统一监控大盘(Metrics + Logs + Traces)。 缺点:学习成本稍高(需要懂 LogQL)。
核心“坑”与最佳实践
在具体操作时,有几个常见误区需要注意:
- 别直接上报“错误日志”:
- ❌ 错误写法:
count(log_level="ERROR") > 0 - ✅ 正确做法:必须设置阈值(如连续3次或5分钟内出现10次),否则瞬间会被刷屏。
- ❌ 错误写法:
- 必须设置“静默时间” (Silence):
如果每5分钟告警一次,半夜上线发版,可能会触发100条告警,配置一个简单的静默规则(如“屏蔽已处理的告警”)非常重要。
- 增加“分组”:
- 如果100台服务器同时报错,不要发送100条告警,应该按
服务名 + 错误类型分组,只发一条汇总消息:“共有 80 台机器报告 500 错误,占总机器 80%”。
- 如果100台服务器同时报错,不要发送100条告警,应该按
- 要能直接定位:
- ❌ 垃圾告警:
"日志错误" - ✅ 高质量告警:
"[严重] 线上核心支付模块 - 5分钟内错误率90%,最新错误日志样例:/tmp/pay_err.log:23 - SQL connection timeout"
- ❌ 垃圾告警:
快速选择建议
| 你的情况 | 推荐工具 | 配置难度 |
|---|---|---|
| 个人项目、小团队、无运维经验 | 阿里云 SLS / 腾讯云 CLS / Datadog | ⭐ 低 |
| 公司有 Elasticsearch 集群 | Kibana Watcher | ⭐⭐ 中 |
| 已有 Grafana 监控大盘 | Grafana + Loki | ⭐⭐⭐ 中高 |
| 需要极低延迟、高吞吐 | 自建 Flink + Kafka(适合高级用户) | ⭐⭐⭐⭐⭐ 高 |
如果是为了快速解决问题:建议直接使用云服务(阿里云 SLS)或商业软件(如 Datadog),配置一个简单的“错误数超过阈值”的规则,5分钟内就能跑通。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播