日志与监控(ELK / Prometheus 示例)
在生产环境中,对 Docker 容器的日志和运行指标进行实时监控,能够帮助快速排查问题和优化性能。
1. 使用 ELK 堆栈收集日志
-
ELK 组成:
- Elasticsearch:存储和搜索日志
- Logstash:收集、处理和转发日志
- Kibana:可视化日志数据
-
Docker Compose 示例:
version: "3.9"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
environment:
- discovery.type=single-node
ports:
- "9200:9200"
logstash:
image: docker.elastic.co/logstash/logstash:8.11.0
volumes:
- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf
ports:
- "5000:5000"
kibana:
image: docker.elastic.co/kibana/kibana:8.11.0
ports:
- "5601:5601"
`
- 应用容器日志收集:
services:
app:
image: myapp
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
- Logstash 配置 (
logstash.conf):
input {
tcp { port => 5000 }
}
output {
elasticsearch { hosts => ["elasticsearch:9200"] }
}
2. 使用 Prometheus 监控容器
- Prometheus:收集容器指标(CPU、内存、网络等)
- Docker Compose 示例:
services:
prometheus:
image: prom/prometheus:latest
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
- Prometheus 配置 (
prometheus.yml):
scrape_configs:
- job_name: 'docker'
static_configs:
- targets: ['app:9100']
- Node Exporter:在容器中暴露指标
node-exporter:
image: prom/node-exporter:latest
ports:
- "9100:9100"
-
Grafana 可视化:
- 将 Prometheus 数据源添加到 Grafana
- 创建仪表盘监控 CPU、内存、磁盘和网络指标
3. 最佳实践
- 日志集中管理,避免容器内部日志丢失
- 配置日志轮转和存储限制,避免磁盘占满
- 使用 Prometheus + Grafana 实现实时监控
- 结合告警机制(Alertmanager)快速响应异常
- 对关键服务设置单独监控指标
通过 ELK 堆栈收集日志和 Prometheus 监控指标,开发者可以实现 Docker 容器化应用的全面监控,及时发现问题并优化系统性能。
相关内容
- 构建自定义 Registry 本章节介绍如何搭建和管理 Docker 私有 Registry,包括部署自定义 Registry、配置存储与访问权限、镜像推送与拉取流程,以及安全与备份策略,满...
- 与 Kubernetes 的比较与协作 本章节对比 Docker 与 Kubernetes 的异同点,并讲解两者的协作方式,包括容器管理、编排、服务发现、部署流程和最佳实践,帮助理解容器生态系统中的应...
- Rootless Docker 与安全边界 本章节介绍 Rootless Docker 的使用方法及安全边界管理,包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略,提升容器安全性并降低宿主...
- 常用命令速查表 本章节提供 Docker 常用命令速查表,包括镜像管理、容器操作、网络配置、卷管理、日志查看及调试命令,帮助开发者快速查找和使用 Docker 命令,提高容器管...
- 参考文档与学习资源 本章节整理 Docker 官方文档、社区资源、教程和示例项目,帮助开发者系统学习 Docker 技术,掌握容器化应用的构建、运行、管理和优化方法。
- 示例项目与练习 本章节提供 Docker 示例项目和练习,包括容器化应用部署、Docker Compose 多服务编排、镜像优化、网络配置和存储管理,帮助开发者通过实战加深对...