Monitor介绍

(1)架构图

Monitoring Docker containers using cAdvisor

(2)Prometheus Server

介绍:
Prometheus Server 是整个监控系统的核心,它负责从各个被监控的目标(targets)中以 pull(拉取)的方式收集时序数据。数据通常采用 HTTP 协议的 REST API 格式暴露,Prometheus 通过配置抓取间隔(scrape interval)定期请求这些数据,并将采集到的数据存储到本地时间序列数据库中。默认端口为 9090

工作原理:

  • 抓取数据: Prometheus 根据配置文件中定义的目标地址,周期性地向目标发送 HTTP 请求以采集指标数据。
  • 数据存储: 采集到的数据以时间序列的形式存储到本地存储中,支持高效的时序数据存储和查询。
  • 查询语言: 提供强大的 PromQL(Prometheus Query Language),方便用户通过查询语言对数据进行实时分析、聚合和告警判断。
  • 告警规则: 用户可以在配置文件中定义告警规则,当数据满足特定条件时,Prometheus 会生成告警信息并发送到 Alertmanager。
(3)NodeExporter

介绍:
NodeExporter 是一个运行在被监控主机上的小型守护进程,专门用于收集操作系统及硬件相关指标,如 CPU 使用率、内存使用、磁盘 I/O、网络流量等。其默认暴露的端口为 9100

工作原理:

  • 数据导出: NodeExporter 定期采集主机的各项硬件和系统指标,并通过 HTTP 接口以预定格式暴露这些数据。
  • 无状态设计: 该组件主要负责数据采集,不涉及数据存储和复杂计算。
  • 与 Prometheus 的配合: Prometheus Server 按照预先配置的抓取规则,通过 HTTP 请求获取 NodeExporter 导出的指标数据。
(4)cAdvisor

介绍:
cAdvisor(Container Advisor)主要用于监控运行在主机上的容器。它可以实时收集容器的资源使用情况、性能指标以及运行状态等信息,并通过 HTTP 接口提供这些数据。默认端口为 8080

工作原理:

  • 容器监控: cAdvisor 定期收集每个容器的 CPU、内存、网络和磁盘等资源使用数据,同时记录容器的生命周期信息。
  • 数据展示: 除了暴露数据接口供 Prometheus 抓取外,cAdvisor 也提供一个基本的 Web UI 来直观展示容器的实时状态。
  • 与 Prometheus 的配合: Prometheus Server 可根据配置抓取 cAdvisor 提供的接口数据,从而将容器级别的监控数据纳入到整体监控系统中。
(5)Grafana

介绍:
Grafana 是一款功能强大的开源数据可视化和仪表盘展示工具。它并不直接负责数据采集,而是通过连接到 Prometheus Server(或其他数据源)来查询数据并进行图形化展示。默认端口为 3000

工作原理:

  • 数据查询: Grafana 利用 PromQL(或其他查询语言)从 Prometheus 中查询数据。
  • 可视化配置: 用户可以使用 Grafana 提供的各种图表、表格和仪表盘模板来自定义数据展示方式。
  • 实时监控: Grafana 支持实时刷新数据,为运维人员提供直观的监控界面,从而及时了解系统运行状况。
(6)Alertmanager

介绍:
Alertmanager 负责管理和处理 Prometheus Server 发送过来的告警信息。它的主要任务是对告警进行去重、分组、抑制以及路由,将经过处理的告警信息通过邮件、短信、IM 等方式发送给最终的接收人。

工作原理:

  • 告警接收: 当 Prometheus 根据告警规则检测到异常状态时,会将告警信息发送到 Alertmanager。
  • 告警处理: Alertmanager 对收到的告警信息进行分组(根据告警标签)、去重和抑制等处理,避免相同问题产生大量重复告警。
  • 告警路由: 根据预先配置的路由规则,将处理后的告警转发到不同的通知渠道,如邮件、Slack、微信等,确保相关人员能及时收到警报信息。
(7)整体工作流程
  1. 数据采集阶段:
    • Prometheus Server 根据配置定期向各个被监控目标发起 HTTP 抓取请求。
    • NodeExporter 提供主机级的系统和硬件数据;
    • cAdvisor 提供容器级的运行状态和资源使用数据。
  2. 数据存储与查询阶段:
    • 采集到的数据被 Prometheus 存储在其时序数据库中。
    • 用户或 Grafana 可以使用 PromQL 对数据进行查询、聚合和分析。
  3. 告警生成与处理阶段:
    • 基于定义好的告警规则,Prometheus 对采集到的数据进行监控和评估。
    • 当检测到异常时,Prometheus 生成告警信息并发送到 Alertmanager。
  4. 告警通知阶段:
    • Alertmanager 对告警信息进行分组、去重和路由,然后将最终的告警通知发送给预先定义的接收人(例如运维人员)。
  5. 数据展示阶段:
    • Grafana 通过与 Prometheus 连接,实时查询监控数据并将数据以图表、仪表盘等形式展示出来,方便用户直观地了解系统运行情况。

2. 容器化部署Node-Exporter

编写 Dockerfile 文件构建exporter镜像,要求基于centos完成Node-Exporter服务的安装与配置,并设置服务开机自启。

(需要的包在Technology_packageV1.0.iso 中 Monitor.tar.gz.)

(1) 基础镜像:centos:centos7.9.2009

(2) 使用二进制包 node_exporter-0.18.1.linux-amd64.tar.gz 安装node-exporter 服务

(3) 声明端口:9100

(4) 设置服务开机自启

请使用docker build命令进行构建镜像并使用 docker run命令运行该容器

将 docker run -d --name exporter-test monitor-exporter:v1.0 && sleep 5 &&docker exec exporter-test ps -aux && docker rm -f exporter-test 命令的返回结果提交到答题框

(1)基础环境准备

[root@k8s-master ~]# tar -zxvf Monitor.tar.gz
[root@k8s-master ~]# cd Monitor/
[root@k8s-master ~]# for i in `ls *.tar.gz`; do tar xf $i; done
[root@k8s-master Monitor]# docker load -i CentOS_7.9.2009.tar
Loaded image: centos:centos7.9.2009
(2)编写Node启动脚本

[root@k8s-master Monitor]# vim exporter.sh
#!/bin/bash
./node_exporter
(3)编写Dockerfile文件

[root@k8s-master Monitor]# vim Dockerfile-exporter
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐