掌握Docker容器监控:Docker命令与Prometheus的协同作战(上)

🐇明明跟你说过:个人主页

🏅个人专栏:《Docker入门到精通》 《k8s入门到实战》🏅

🔖行路有良友,便是天堂🔖

目录

一、引言

1、Docker简介

2、为什么要对Docker容器实行监控

3、Docker自带命令与Prometheus在监控中的角色

二、Docker自带命令监控

1、docker stats 实时资源监控

2、docker top 容器进程监控

3、docker inspect 容器详细信息查询

三、进阶监控:Prometheus介绍

1、Prometheus概述

2、核心特性与优势

3、架构与组件介绍


一、引言

1、Docker简介

Docker是一个开源的应用容器引擎,基于Google公司推出的Golang语言开发,并基于Linux内核的Cgroups、NameSpace以及UnionFS等技术。它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上。Docker不仅实现了虚拟化,而且其容器是完全使用沙箱机制,相互之间不会有任何接口,使得容器之间以及容器与宿主机之间的资源和环境相互隔离。

关于Docker的详细介绍,可以参考《Docker的诞生背景与设计初衷,以及发展前景》这篇文章

2、为什么要对Docker容器实行监控

  1. 资源管理和优化:监控Docker容器的资源使用情况,如CPU使用率、内存占用、网络流量等,有助于管理员了解每个容器的资源消耗情况,从而进行合理的资源分配和优化。通过监控,可以及时发现资源瓶颈,避免资源浪费或过载,确保系统的稳定运行。
  2. 故障排查和预警:通过监控Docker容器的运行状态和日志信息,可以及时发现容器运行过程中的异常情况或错误。当容器出现性能下降、崩溃或异常退出等情况时,监控系统可以发出预警通知,帮助管理员快速定位问题并进行处理,减少故障对业务的影响。
  3. 安全性保障:监控Docker容器的安全状态,如文件系统的完整性、网络连接的安全性等,有助于发现潜在的安全威胁。通过实时监控和告警机制,可以及时发现并应对恶意攻击、非法访问等安全事件,保障系统的安全性。
  4. 业务连续性保障:对Docker容器进行监控可以确保业务的连续性和稳定性。通过监控系统的实时反馈和预警功能,管理员可以及时了解系统的运行状态和潜在风险,并采取相应的措施进行预防和应对,确保业务的稳定运行。

3、Docker自带命令与Prometheus在监控中的角色

Docker自带的命令在监控中主要起到实时查看容器状态和性能的作用。例如,docker top命令可以显示容器内的进程信息,帮助了解容器的运行状况;docker stats命令则提供容器的资源使用统计,包括CPU使用率、内存使用情况等,这对于监控容器的性能非常有用;docker logs命令可以输出容器的日志信息,有助于排查容器的运行问题。

Prometheus在监控中的角色更为全面和深入。Prometheus是一个开源的系统监控和报警工具,它通过收集多维度的时间序列数据来监控系统的状态和性能。在Docker环境中,Prometheus可以配合各种exporter(如NodeExporter和cAdvisor)来收集Host硬件信息、操作系统信息以及容器运行信息等。这些信息随后被发送到Prometheus server进行处理,并通过Grafana进行图形化的展示,使得用户可以直观地了解系统的运行状况。

二、Docker自带命令监控

1、docker stats 实时资源监控

使用实例:

在安装docker的服务器上执行,如果还未安装docker,请参考《在CentOS系统中轻松安装和配置Docker指南》这篇文章

[root@node1 ~]# docker stats

监控指标解读:

  • CONTAINER ID:容器的唯一标识符,用于识别容器。
  • NAME:容器的名称。
  • CPU %:容器使用的 CPU 百分比。该百分比是相对于系统总 CPU 容量的使用率。
  • MEM USAGE / LIMIT:内存使用量和限制。MEM USAGE表示容器当前使用的内存量,LIMIT表示为容器设置的内存限制。
  • MEM %:内存使用百分比。表示容器当前使用的内存占其限制的百分比。
  • NET I/O:网络的输入和输出数据量。这包括了接收和发送的数据量。
  • BLOCK I/O:块设备的输入和输出数据量。这包括了从存储系统读取和写入的数据量。
  • PIDS:容器中正在运行的进程数量。

2、docker top 容器进程监控

使用语法:

docker top [OPTIONS] CONTAINER [ps OPTIONS]
  • OPTIONS:可选参数,用于指定额外的选项。
  • CONTAINER:要查看进程信息的容器名称或容器ID。
  • ps OPTIONS:可选参数,用于传递给ps命令的选项。

示例说明:

  • UID:进程的用户ID。
  • PID:进程的ID。
  • PPID:进程的父进程ID。
  • C:进程的CPU占用率。
  • STIME:进程的启动时间。
  • TTY:进程所连接的TTY(终端)。
  • TIME:进程已占用的CPU时间。
  • CMD:进程的命令。

3、docker inspect 容器详细信息查询

查询容器配置:

[root@node1 ~]# docker inspect test

这个命令会返回一个 JSON 格式的输出,其中包含了有关指定容器的详细配置信息,包括容器的网络设置、挂载的卷、环境变量、镜像信息等等。

环境变量与状态查看:

查看环境变量

docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' <container_id_or_name>

这条命令会列出指定容器的所有环境变量。

查看容器状态

docker inspect -f '{{.State.Status}}' <container_id_or_name>

这条命令会输出指定容器的状态,例如 running、exited 等。

三、进阶监控:Prometheus介绍

1、Prometheus概述

Prometheus是一套开源的系统监控报警框架,启发于Google的borgmon监控系统,由在SoundCloud工作的前Google员工于2012年创建,并作为社区开源项目进行开发,于2015年正式发布。2016年,Prometheus正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目。

Prometheus相比传统监控系统如Nagios或Zabbix,具有易管理性、业务数据相关性、高效性以及良好的可视化等优势。Prometheus的核心部分只有一个单独的二进制文件,易于部署和管理;同时,它能够监控服务的运行状态,获取服务和应用内部真正的运行状态,提供深入的业务数据相关性;其高效性体现在可以处理大量的监控指标和高速的数据处理;而良好的可视化则使得用户可以直观地了解系统的运行状况。

2、核心特性与优势

  • 多维数据模型: Prometheus 使用多维数据模型来存储时间序列数据,每个时间序列具有指标名称和一组键值对标签,这使得数据聚合和查询变得非常灵活。
  • 灵活的查询语言: Prometheus 提供了 PromQL(Prometheus Query Language),这是一种强大且灵活的查询语言,可以用于对时间序列数据执行各种操作和聚合。
  • 数据抓取: Prometheus 使用轮询的方式定期从目标服务中抓取指标数据。它支持多种抓取方式,包括 HTTP、HTTPS、DNS、TCP 和 ICMP。
  • 动态服务发现: Prometheus 支持多种服务发现机制,包括 Kubernetes 服务发现、Consul、EC2 等,这使得自动发现和监控新的目标变得简单。
  • 可视化和图表: Prometheus 结合了 Grafana 等可视化工具,可以通过图表和仪表盘直观地展示监控数据,帮助用户更好地理解系统的行为和趋势。
  • 警报和通知: Prometheus 提供了灵活的警报规则和通知机制,可以根据时间序列数据定义警报规则,并在触发条件满足时发送通知。
  • 易于部署和扩展: Prometheus 的架构简单,易于部署和扩展。它具有单二进制文件和可运行在容器中的特性,因此非常适合于云原生环境和微服务架构。
  • 社区和生态系统: Prometheus 有一个庞大的开源社区,提供了丰富的插件和整合解决方案,例如各种 Exporters 和 Alertmanager,使得用户能够自定义和扩展 Prometheus 的功能。 

3、架构与组件介绍

1. Prometheus Server(Prometheus 服务器):

Prometheus Server 是整个监控系统的核心组件。它负责从各种目标(如应用程序、数据库、操作系统等)收集指标数据,并将这些数据存储在本地时间序列数据库中。Prometheus Server 还提供了查询 API,允许用户使用 PromQL 查询语言对存储的指标数据进行查询和分析。

2. Exporter(导出器):

Exporter 是用于将第三方系统的指标数据导入到 Prometheus 中的中间件。Exporter 通常是在待监控的系统中运行的小型服务或进程,它们负责暴露系统的运行时指标,并将这些指标以 Prometheus 可以理解的格式暴露出来。Prometheus 支持各种类型的 Exporter,包括 Node Exporter(用于监控主机的资源利用率)、Blackbox Exporter(用于网络探测和监控)等。

3. PromQL(Prometheus 查询语言):

PromQL 是 Prometheus 的查询语言,它允许用户对存储在 Prometheus 中的指标数据进行灵活的查询和聚合。使用 PromQL,用户可以执行各种操作,包括选择、过滤、聚合、计算率等,以便对监控数据进行分析和可视化。

4. Alertmanager(警报管理器)

Alertmanager 是 Prometheus 的警报管理组件,负责处理从 Prometheus Server 发出的警报。Alertmanager 可以根据用户定义的警报规则对警报进行分组、去重和抑制,然后将警报发送到指定的通知渠道(如电子邮件、Slack、PagerDuty 等)。

5. Grafana(可视化工具)

Grafana 是一个流行的开源监控和可视化工具,它与 Prometheus 集成紧密,可以通过 Prometheus 数据源连接到 Prometheus Server,并使用 PromQL 查询语言创建仪表盘和图表,以直观地展示监控数据。

 

 🎗️🎗️🎗️以上仅是我对Docker容器监控的个人观点与见解,如果您有任何不同的看法或建议,欢迎在评论区与我分享和讨论。

🚩🚩🚩对于希望深入了解Docker技术的朋友们,我诚挚地邀请您关注我的Docker专栏《Docker从零到精通:实战指南》。我会定期更新和分享Docker领域的最新知识、技术动态和前沿实践,希望能为您的Docker学习之旅提供有价值的参考和指导。

❤️❤️❤️最后,请允许我衷心感谢您的阅读和对本专栏的支持!您的鼓励是我持续创作的最大动力。希望我们能在Docker的学习道路上共同进步,共创辉煌!!!

  • 32
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明明跟你说过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值