AWS EKS集群Kubernetes Pod日志采集至Prometheus方案咨询
实现Pod日志采集到Prometheus生态的方案指引
Prometheus原生为时序指标存储工具,不支持直接存储非结构化日志,AWS EKS环境下推荐使用Prometheus生态的Promtail(采集器)+ Loki(日志存储)+ Grafana(可视化) 方案实现需求,可直接对接现有Prometheus Dashboard体系。
部署步骤
- 部署日志栈
使用Helm一键部署完整组件,依次执行以下命令:helm repo add grafana https://grafana.github.io/helm-charts && helm repo updatehelm install loki-stack grafana/loki-stack --namespace logging --create-namespace --set promtail.enabled=true
- 部署日志栈
- 配置采集规则
- 若你的应用日志直接输出到容器stdout/stderr:Promtail会自动采集全集群Pod标准输出日志,无需额外配置
- 若你的应用日志写入Pod内部的指定文件:给对应工作负载的Pod模板添加如下annotation,指定采集路径:
template: metadata: annotations: promtail.io/scrape: "true" promtail.io/log-path: "/path/to/your/app.log" # 替换为实际日志文件路径- 对接可视化面板
打开你的Prometheus关联的Grafana Dashboard: - 新增数据源,类型选择
Loki,填写集群内Loki服务的访问地址 - 新建日志检索面板,可按Namespace、Pod名称、关键词过滤日志,支持按时间范围筛选,无需再登录堡垒机执行kubectl命令
- 对接可视化面板
- 日志指标同步到Prometheus(可选)
若需要将错误日志的统计指标(如每小时错误次数)展示到Prometheus Dashboard,可在Promtail配置中添加日志解析规则,将匹配到的ERROR级日志提取为Counter类型指标,Prometheus可直接抓取该指标做趋势展示、告警配置。
- 日志指标同步到Prometheus(可选)
常用查询语句示例
- 筛选指定应用过去1小时的错误日志:
{app="your-app"} |= "ERROR" [1h] - 统计指定应用每小时错误日志数量:
sum(count_over_time({app="your-app"} |= "ERROR" [1h]))
内容的提问来源于stack exchange,提问作者shyam prudhvi
相关产品推荐
相关产品推荐

