Elastic Stack
elastic-stack、ELK 直觉。
30 分钟
Elastic Stack(ELK / EFK)
Elasticsearch + Logstash/Fluentd + Kibana 是日志领域最成熟的自建方案之一:全文检索强、聚合分析灵活、生态插件丰富。K8s 场景常把 Logstash 换 Fluent Bit(EFK)。本课讲最小可用集群与 Index 生命周期;日志方法论见 dob-logs,轻量替代见 dob-loki,指标见 prometheus-essentials,DevOps 见 /roadmaps/devops。
学习目标
- 部署单节点 Elasticsearch + Kibana(开发)并理解分片/replica
- 用 Filebeat 采集 Docker 容器 JSON 日志到 ES
- 配置 ILM(Index Lifecycle Management) 自动 rollover 与删除
架构
backend container
└─ stdout JSON
└─ Filebeat(Docker autodiscover)
└─ Elasticsearch :9200
└─ Kibana :5601(Discover / Dashboard)
# filebeat.yml 概念片段
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
output.elasticsearch:
hosts: ["elasticsearch:9200"]
index: "coderoadmap-%{[agent.version]}-%{+yyyy.MM.dd}"
setup.ilm.enabled: true
setup.ilm.rollover_alias: "coderoadmap"
setup.ilm.pattern: "coderoadmap-*"
Kibana 查询
- Discover:
service:"coderoadmap-backend" AND level:ERROR AND trace_id:abc123 - Lens / Dashboard:按 level 计数、按 exception 分组 Top N
- 与 APM:Elastic APM 可接 OTel,实现 logs-metrics-traces 同栈(许可注意 Basic vs 付费)
运维要点
| 主题 | 建议 |
|---|---|
| 内存 | ES heap 不超过 50% 物理内存,通常 ≤ 31GB |
| 分片 | 单分片 20~50GB,避免过多小分片 |
| 映射 | 关键字段 keyword vs text 提前定义 template |
| 安全 | 生产启用 TLS、内置用户、API key |
资源不足时可降级到 dob-loki + Grafana,仅保留 label 索引。
练习
- 在 Kibana 创建 Index Pattern,过滤 backend ERROR 日志