日志分析平台是网站运维的排障中枢。服务器数量超过5台,SSH上机器逐个grep日志的效率就会崩塌,更别提容器化环境里Pod漂移导致日志分散。搭建统一日志平台解决三个问题:集中采集、结构化检索、告警联动。主流方案里EFK与Grafana Loki是两条路线,选型差异直接影响存储成本与查询体验。
EFK架构与Filebeat采集配置
EFK指Elasticsearch、Filebeat、Kibana。Filebeat以Agent形式跑在业务机,tail日志文件并转发到ES集群,Kibana提供检索界面。Filebeat采集Nginx日志的典型配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
fields:
service: web-frontend
fields_under_root: true
output.elasticsearch:
hosts: ["es-node1:9200", "es-node2:9200"]
index: "nginx-access-%{[agent.version]}-%{+yyyy.MM.dd}"
setup.template.name: "nginx-access"
setup.template.pattern: "nginx-access-*"
多行日志(如Java异常堆栈)必须配置multiline,否则一条堆栈会被拆成几十条记录,检索时根本拼不起来。multiline.pattern匹配^[[:space:]]开头的行,negate取反,匹配到非起始行就合并到上一条。
Elasticsearch索引生命周期:控制存储成本的关键
ES的存储成本是EFK最大的痛点,冷数据长期占索引会拖垮集群。ILM策略自动降级与删除:
PUT _ilm/policy/logs-policy
{
"policy": {
"phases": {
"hot": { "actions": { "rollover": { "max_size": "50gb", "max_age": "1d" } } },
"warm": { "min_age": "7d", "actions": { "shrink": { "number_of_shards": 1 }, "forcemerge": { "max_num_segments": 1 } } },
"delete": { "min_age": "30d", "actions": { "delete": {} } }
}
}
}
热数据放SSD节点,7天后收缩分片强制合并,30天删除。日志场景每天TB级的写入,rollover的max_size比单纯按天切分更稳定,分片大小控制在50GB以内是ES官方建议的安全线。
Grafana Loki轻量方案:LogQL查询与标签设计
Loki只索引标签不索引全文,存储成本约为ES的十分之一,查询语法与PromQL神似:
# Promtail采集配置示例
scrape_configs:
- job_name: nginx
static_configs:
- targets: ['localhost']
labels:
job: nginx
app: frontend
__path__: /var/log/nginx/*.log
# LogQL统计5xx错误率
sum(rate({app="frontend"} |~ " 5\d\d " [5m])) by (host)
标签设计是Loki成败的关键:标签基数必须低(host、app、level),高基数字段(user_id、request_id)绝不能进标签,查询时用管道符过滤。标签基数爆炸会把Loki索引撑爆,这是新手最常见的翻车点。
EFK与Loki选型:存储预算与查询模式的权衡
需要全文检索、复杂聚合报表、审计合规场景,选EFK,ES的倒排索引在任意字段组合查询上无解。中小团队日志量每天几百GB以内、已用Prometheus+Grafana监控栈、查询以时间范围+固定标签为主,Loki是更经济的选择,还能复用现有Grafana面板。两者也可以混用:业务关键日志进ES,海量系统日志进Loki。
日志告警联动:从检索到自动通知
EFK用Kibana的Alerting规则匹配error关键字触发Webhook;Loki接Grafana Alerting,配合Loki的metric查询把日志转成指标再设阈值。告警要克制:CRITICAL单发值班群,ERROR按5分钟聚合去重,否则告警疲劳会让真正严重的事件被淹没。平台搭好后,故障平均定位时间(MTTR)的改善立竿见影。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/ri-zhi-fen-xi-ping-tai-da-jian-shi-zhan-efk-yu-grafanaloki/