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

news/2024/5/18 21:27:14 标签: docker, prometheus, 容器, 运维, 云原生, linux

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

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

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

目录

四、 Prometheus与Docker的集成

1、安装与配置Prometheus

 2、配置cAdvisor作为数据源

 3、数据抓取与存储配置

 五、监控实践

1、监控指标选择

2、告警规则设置

 六、监控技术的发展趋势


四、 Prometheus与Docker的集成

1、安装与配置Prometheus

环境:

IP主机名安装组件
192.168.40.158testDocker、Prometheus、cAdvisor

 可以从Prometheus的官方GitHub仓库下载预编译的二进制文件,或者直接使用包管理器(如apt、yum等)进行安装。这里以直接从官网下载为例。

 访问Prometheus官网Download | Prometheus,下载安装包,

 执行以下命令,解压tar包

[root@test ~]# tar zxvf prometheus-2.50.1.linux-amd64.tar.gz

 进入到解压后的目录下

[root@test ~]# cd prometheus-2.50.1.linux-amd64

  • console_libraries/: 这个目录包含用于构建Prometheus控制台的库文件。
  • consoles/: 这个目录包含Prometheus控制台的前端文件。
  • LICENSE: 这是Prometheus的许可证文件,包含了使用和分发该软件的条款。
  • NOTICE: 这个文件包含了有关Prometheus软件的通知和版权信息。
  • prometheus: 这是Prometheus服务器的可执行文件。
  • prometheus.yml: 这是Prometheus的主要配置文件,用于定义监控目标、规则和服务发现等配置。
  • promtool: 这是Prometheus工具的可执行文件,用于管理和验证Prometheus的配置文件和规则。

编辑配置文件

[root@test prometheus-2.50.1.linux-amd64]# vim prometheus.yml

在末尾添加如下内容

  - job_name: 'docker'
    static_configs:
      - targets: ['localhost:8080'] # 假设cAdvisor在本地主机的8080端口上运行 

 

全局配置:

  • scrape_interval: 将抓取间隔设置为每15秒,默认为每1分钟。
  • evaluation_interval: 每隔15秒评估规则一次,默认为每1分钟。
  • scrape_timeout: 抓取超时设置为全局默认值(10秒)。

告警管理器配置:

  • alertmanagers: 配置Alertmanager的地址和端口,这里使用静态配置方式。

规则文件加载配置:

  • rule_files: 加载规则文件列表,在此示例中所有规则文件都被注释掉了。

抓取配置:

  • scrape_configs: 配置要抓取的目标。这里定义了两个作业(job):
  • 第一个作业名为"prometheus",抓取目标为Prometheus自身(localhost:9090)。
  • 第二个作业名为"docker",抓取目标是假设cAdvisor在本地主机的8080端口上运行(localhost:8080)。

 2、配置cAdvisor作为数据源

cAdvisor是一个开源的容器资源监控和性能分析工具,它可以为容器(包括Docker容器)提供详细的资源使用情况和性能数据。我们可以直接运行cAdvisor作为一个Docker容器来获取这些数据。

 这里我们以Docker启动cAdvisor,如果还未安装Docker,请参考《在CentOS系统中轻松安装和配置Docker指南》这篇文章

执行如下命令,启动cAdvisor容器

[root@test prometheus-2.50.1.linux-amd64]# docker run   -v  /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor  google/cadvisor:latest

 3、数据抓取与存储配置

 Prometheus会按照配置文件中指定的scrape_interval定期抓取目标的数据。抓取到的数据会被存储在本地的TSDB(时间序列数据库)中。可以通过调整storage.tsdb配置来修改存储设置,例如数据保留时间等。

以下配置将设置数据保留时间为15天:

 storage:  
  tsdb:  
    retention.time: 15d

 启动Prometheus

[root@test prometheus-2.50.1.linux-amd64]# ./prometheus --config.file=prometheus.yml

 Prometheus现在将开始从cAdvisor抓取数据,并将数据存储在其本地的TSDB中。我们可以通过Prometheus的Web UI(默认在9090端口上)来查看和查询这些数据。

 

 五、监控实践

1、监控指标选择

 CPU使用情况

sum(rate(process_cpu_seconds_total{job="your_job_name"}[5m]))

这个查询语句会计算过去5分钟内所有作业(job)的 CPU 使用率总和。你需要将your_job_name替换为你要监视的作业名称。

 内存消耗

container_memory_usage_bytes / 1024 / 1024

container_memory_usage_bytes是Prometheus中的一个指标,用于表示容器的内存使用量,单位为字节。我们可以使用该指标来监控容器的内存消耗情况。

磁盘I/O与网络I/O 

在Prometheus中,可以使用以下指标来监控磁盘I/O和网络I/O:

磁盘I/O:

  • node_disk_read_bytes_total: 读取的磁盘字节数。
  • node_disk_written_bytes_total: 写入的磁盘字节数。
  • node_disk_read_time_seconds_total: 磁盘读取操作的时间。
  • node_disk_write_time_seconds_total: 磁盘写入操作的时间。

网络I/O:

  • node_network_receive_bytes_total: 接收的网络字节数。
  • node_network_transmit_bytes_total: 发送的网络字节数。
  • node_network_receive_packets_total: 接收的网络数据包数。
  • node_network_transmit_packets_total: 发送的网络数据包数。

不过,这些指标需要有 node_exporter 才能采集到,安装也比较简单,读者可以尝试下,这里不再过多叙述

※这里的指标查询,我们只使用了Prometheus的PQL语言进行查询,而在实际中,通常会搭配Grafana的仪表板来进行监控数据的展示,在后续的文章中,会更新这一部分的内容。 

2、告警规则设置

在Prometheus中配置告警规则需要编辑Prometheus的配置文件(通常是prometheus.yml文件),并在其中定义告警规则

例如:

groups:
  - name: example
    rules:
      - alert: HighMemoryUsage
        expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "High memory usage on {{ $labels.instance }}"
          description: "{{ $labels.instance }} memory usage is above 90%"

 

  • groups:这是告警规则的组定义。在一个组内可以定义多个告警规则。
  • name:这个组的名称,这里命名为"example"。
  • rules:这是组内的规则列表,每个规则定义了一个具体的告警条件和设置。
  • alert:规则的名称,用于标识此规则。在这里,规则名为"HighMemoryUsage"。
  • expr:这是一个PromQL表达式,用于定义触发警报的条件。在这个示例中,它计算可用内存占总内存的百分比,如果超过90%,则触发警报。
  • for:这是警报持续时间,表示当触发条件持续了多长时间后触发警报。在这里,如果条件持续了5分钟,则触发警报。
  • labels:这是用于标记警报的附加标签。在这个示例中,我们为警报设置了一个"severity"标签,值为"warning"。
  • annotations:这是用于描述警报的附加注释。在这个示例中,我们为警报设置了一个简要的摘要和描述。

这个告警规则的作用是当可用内存占总内存的百分比超过90%并持续5分钟时触发警报,并且警报的严重性为警告级别,提供了摘要和描述信息以便用户理解警报的原因和影响。

 六、监控技术的发展趋势

  1. 自动化和自动化运维:随着云原生技术的普及和自动化运维的需求增加,监控技术也在朝着更加自动化的方向发展。自动化能够提高效率、降低成本,并减少人为错误。

  2. 云原生监控:随着容器化、微服务架构和Serverless等云原生技术的流行,监控技术也在适应云原生环境的需求。云原生监控工具提供了更好的可扩展性、灵活性和适应性,能够更好地监控分布式系统。

  3. 多维度监控:传统的指标监控已经不能满足复杂系统的监控需求,因此多维度监控变得越来越重要。除了常见的系统资源监控指标外,还需要监控应用程序的性能指标、用户体验指标等。

  4. 人工智能和机器学习:人工智能和机器学习技术在监控领域的应用越来越广泛。通过利用机器学习算法分析监控数据,可以实现异常检测、自动故障诊断、预测性维护等功能,帮助企业提高系统的稳定性和可靠性。

  5. 开源监控工具的发展:开源监控工具在监控领域的地位越来越重要,例如Prometheus、Grafana等。这些工具具有开放的生态系统、丰富的社区支持和灵活的功能,被越来越多的企业和组织所采用。

  6. 容器化监控:随着容器技术的普及,容器化监控也变得越来越重要。容器化监控工具可以监控容器的运行状态、资源利用率、性能指标等,帮助企业实现对容器化环境的全面管理和监控。

  7. 安全监控:随着网络安全威胁的增加,安全监控也变得越来越重要。安全监控工具可以实时监测网络流量、异常行为、安全事件等,及时发现和应对安全威胁。

 总体而言,监控技术的发展趋势是向着更加智能化、自动化、多维度、实时化和安全化方向发展,以满足不断变化的业务需求和复杂的系统环境。

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Docker的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!!

 


http://www.niftyadmin.cn/n/5420707.html

相关文章

C/C++生态工具链——编译构建工具CMake/CMakeList初探

一,CMake简介 CMake的全称是Cross-platform Make。我第一次参与Linux C开发时使用的工具是Make,而后开始切换到CMake,一开始以为CMake是和C语言有关,原来开头的C表示它可以跨平台。 CMake的使用场景: 跨平台编译运行&…

【RHCSA问答题】第十二章 管理网络

系列文章目录 第一章 红帽企业Linux入门 第二章 访问命令行 第三章 从命令行管理文件(上) 第三章 从命令行管理文件(下) 第五章 创建、查看和编辑文本文件(上) 第五章 创建、查看和编辑文本文件&#xff0…

【计算机网络_应用层】https协议——加密和窃密的攻防

文章目录 1.https协议的介绍2. 加密和解密2.1 什么是加密2.2 常见的加密方式2.2.1 对称加密2.2.2 非对称加密 2.3 数据摘要(数据指纹)2.4 数字签名 3. https协议的加密和解密方案一:使用对称加密(❌)方案二&#xff1a…

数据库-第八/九章 数据库编程和优化【期末复习|考研复习】

前言 总结整理不易,希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 数据库系统概论系列文章传送门: 第一章 绪论 第二/…

基于Java+springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java springbootVUEredis实现的前后端分类版网上商城项目 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

基于物联网的智能辅助泊车系统设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 物联网技术 3 1.2 JFinal框架技术 3 1.3 uni-app技术 4 1.4 本章小结 4 2 智能辅助泊车系统的分析 5 2.1 需求分析 5 2. 1.1 系统的功能需求 5 2. 1.2 系统的非功能需求 5 2. 1.3 系统业…

腾讯云将系统盘扩容到150G,怎么挂载上去

您已经成功将vda磁盘的容量从50GB扩展到150GB,但vda1分区(即您的根文件系统所在的分区)的大小仍然是50GB,接下来的步骤是扩展vda1分区的大小以使用全部150GB的磁盘空间,然后扩展文件系统以覆盖整个分区。这个过程分为两…

html兼容性问题都有什么;如何解决

HTML兼容性问题是在不同浏览器或设备上显示网页时可能出现的不一致或错误的情况。以下是一些常见的HTML兼容性问题及解决方法的详细讲解: 标签解析不一致: 不同浏览器对HTML标签的解析方式可能有所不同,导致显示效果不一致。为了解决这个问题…