跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Docker容器监控
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:Docker容器监控}} '''Docker容器监控'''是容器运维中的关键环节,指通过工具或命令实时收集、分析容器的运行状态(如CPU、内存、磁盘I/O、网络流量等指标),以确保服务稳定性并快速定位问题。本页面将详细介绍监控原理、工具链及实践方法。 == 监控核心指标 == Docker容器的监控通常关注以下四类核心指标: {| class="wikitable" |+ 容器监控指标分类 ! 指标类型 !! 说明 !! 典型工具 |- | '''资源使用率''' || CPU、内存、磁盘占用 || <code>docker stats</code>, cAdvisor |- | '''性能数据''' || 线程数、文件描述符数 || Prometheus + Node Exporter |- | '''日志流''' || 标准输出/错误日志 || ELK Stack, Fluentd |- | '''网络状态''' || 连接数、带宽、延迟 || Weave Scope, NetData |} == 原生监控工具 == === docker stats === Docker内置的实时监控命令,无需额外安装: <syntaxhighlight lang="bash"> # 查看所有运行中容器的资源使用 docker stats # 输出示例: CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS a1b2c3d4e5f6 nginx 0.02% 15MiB / 1GiB 1.47% 1.2kB / 648B 0B / 0B 3 </syntaxhighlight> === docker top === 查看容器内进程列表: <syntaxhighlight lang="bash"> docker top my_container # 输出示例: UID PID PPID C STIME TTY TIME CMD root 1234 456 0 14:30 ? 00:00:01 nginx: master process </syntaxhighlight> == 高级监控方案 == === cAdvisor === Google开发的容器资源监控工具,提供Web界面: <syntaxhighlight lang="bash"> # 快速启动cAdvisor容器 docker run \ --volume=/:/rootfs:ro \ --volume=/var/run:/var/run:ro \ --volume=/sys:/sys:ro \ --volume=/var/lib/docker/:/var/lib/docker:ro \ --publish=8080:8080 \ --detach=true \ --name=cadvisor \ gcr.io/cadvisor/cadvisor:v0.47.0 </syntaxhighlight> 访问 <code>http://localhost:8080</code> 可查看可视化监控面板。 === Prometheus + Grafana === 工业级监控方案配置流程: 1. 创建Prometheus配置文件 <code>prometheus.yml</code>: <syntaxhighlight lang="yaml"> global: scrape_interval: 15s scrape_configs: - job_name: 'docker' static_configs: - targets: ['docker-host:9323'] </syntaxhighlight> 2. 启动容器时暴露指标接口: <syntaxhighlight lang="bash"> docker run -d \ --name my_app \ -p 8080:8080 \ -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus </syntaxhighlight> 3. 使用Grafana创建仪表盘: <mermaid> graph LR A[Docker Containers] -->|Expose Metrics| B(Prometheus) B --> C{Grafana} C --> D[CPU Dashboard] C --> E[Memory Dashboard] </mermaid> == 日志监控实践 == 配置JSON日志驱动进行结构化日志收集: <syntaxhighlight lang="bash"> docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 nginx </syntaxhighlight> 使用ELK Stack分析日志: 1. Filebeat配置示例: <syntaxhighlight lang="yaml"> filebeat.inputs: - type: container paths: - '/var/lib/docker/containers/*/*.log' output.elasticsearch: hosts: ["elasticsearch:9200"] </syntaxhighlight> == 性能调优案例 == '''场景''':某Web服务容器内存持续增长<br/> '''排查步骤''': 1. 使用<code>docker stats</code>确认内存泄漏 2. 通过<code>docker exec -it container_id top</code>定位异常进程 3. 使用cAdvisor历史数据确认增长趋势 4. 最终发现是未关闭的数据库连接导致 '''解决方案''': <syntaxhighlight lang="python"> # 修复代码示例(Python Flask) @app.teardown_appcontext def shutdown_session(exception=None): db.session.remove() </syntaxhighlight> == 监控指标计算原理 == 关键指标计算公式: * CPU使用率: <math> \text{CPU\%} = \frac{\Delta \text{CPU\_time}}{\Delta \text{Real\_time}} \times 100\% </math> * 内存使用率: <math> \text{Mem\%} = \frac{\text{RSS}}{\text{Memory\_Limit}} \times 100\% </math> == 安全监控建议 == 1. 监控容器特权模式使用 2. 跟踪敏感目录挂载 3. 检测异常网络连接 4. 使用<code>docker audit</code>插件记录安全事件 == 扩展阅读 == * Docker官方文档:容器指标收集 * Prometheus Query Language (PromQL) 手册 * 分布式系统监控设计模式 [[Category:Docker学习路径]] [[Category:容器技术]] [[Category:集成部署]] [[Category:Docker]] [[Category:Docker容器操作]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)