)
一、什么是监控监控的意义监控核心意义提前发现问题消灭故障于萌芽避免重大线上事故。运维工作中监控是非常重要一环任何企业运维部门都离不开监控系统。我们需要监控什么容器资源情况容器 CPU、内存、磁盘 IO、网络 IO可使用docker stats命令快速查看宿主机服务器资源服务器 CPU、内存、磁盘 IO、网络 IO使用top、free查看进程存活状态判断服务进程是否正常运行Linux 本地简易监控命令工具# 安装 dstat、glances 全能监控工具 yum install epel-release -y yum install dstat glances -y Ubuntu apt install glances -y 综合查看系统资源 dstat -am glancesdstat -am实时输出 cpu、磁盘、网络、内存统计glances交互式全能监控面板docker stats查看各个容器资源占用docker stats二、云原生监控组件介绍组件作用端口Prometheus开源时序数据库采集、存储监控指标数据9090cAdvisor容器采集工具采集 docker 容器 cpu 内存磁盘网络指标8080node‑exporter主机采集代理采集服务器硬件资源指标9100Grafana可视化绘图工具读取 Prometheus 数据展示美观图表3000Prometheus 是 CNCF 云原生基金会第二个毕业项目使用 Go 语言开发。架构链路cAdvisor/node‑exporter 采集指标 → Prometheus 拉取存储 → Grafana 绘图展示Prometheus 生态核心组件Prometheus Serverhttp 服务、时序数据库 TSDB、数据抓取模块 retrievalExporter数据采集代理程序cAdvisor容器指标node_exporter服务器主机指标mysqld_exporterMySQL 数据库指标可视化Prometheus 自带简单 webUI生产环境使用 GrafanaAlertmanager告警组件阈值触发后推送通知给运维Pushgateway接收短生命周期任务临时指标供 Prometheus 拉取三、Docker Compose 部署 Prometheus cAdvisor环境说明Rocky Linuxdocker、docker‑compose 已安装完成。国内镜像加速下载镜像。3.1 拉取镜像国内华为云镜像加速# prometheus 镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/prom/prometheus:v3.9.1 docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/prom/prometheus:v3.9.1 prom/prometheus:v3.9.1 cadvisor 镜像 docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/google/cadvisor:0.56.2 docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/google/cadvisor:0.56.2 ghcr.io/google/cadvisor:0.56.2 redis 测试容器 docker pull redis:latest3.2 创建工作目录拷贝 prometheus 默认配置mkdir -p /prom cd /prom 先启动临时 prometheus 复制默认配置文件 docker run -d -p9090:9090 --name temp-prom prom/prometheus:v3.9.1 docker cp temp-prom:/etc/prometheus/prometheus.yml . docker rm -f temp-prom编辑prometheus.yml添加 prometheus 自身、cadvisor 监控任务global: scrape_configs: job_name: prometheus static_configs: targets: [localhost:9090] labels: app: prometheus job_name: cadvisor scrape_interval: 5s static_configs: targets: [cadvisor:8080] labels: app: cadvisor3.3 docker‑compose.yml 编写vim /prom/docker-compose.ymlversion: 3.2 services: prometheus: image: prom/prometheus:v3.9.1 container_name: prometheus ports: - 9090:9090 command: - --config.file/etc/prometheus/prometheus.yml volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro depends_on: - cadvisor cadvisor: image: ghcr.io/google/cadvisor:0.56.2 container_name: cadvisor ports: - 8080:8080 volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro depends_on: - redis redis: image: redis:latest container_name: redis ports: - 6379:63793.4 启动整套服务cd /prom docker compose up -d 查看容器状态 docker compose ps访问测试Prometheus 页面http://宿主机IP:9090cAdvisor 页面http://宿主机IP:8080Targets 状态页http://宿主机IP:9090/targets 查看采集目标是否 UP⚠️注意服务器防火墙放行 9090、8080 端口。集群时间必须同步时间不一致监控数据会异常。# 同步时间 yum install ntpdate -y ntpdate ntp.aliyun.com timedatectl set-timezone Asia/Shanghai四、部署 Grafana 可视化工具4.1 拉取镜像启动容器docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grafana/grafana:9.5.5 docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/grafana/grafana:9.5.5 grafana/grafana:9.5.5 docker run -d --namegrafana -p 3000:3000 grafana/grafana:9.5.5访问地址http://宿主机IP:3000默认账号密码admin / admin首次登录要求修改密码。4.2 Grafana 配置添加数据源选择 Prometheus填入 prometheus 地址http://prometheus:9090docker compose 网络或者宿主机 IP导入 Dashboard 模板社区现成模板不用自己画图cAdvisor 容器监控模板 ID13946 / 19724Grafana 模板网站https://grafana.com/grafana/dashboards/五、node‑exporter 监控其他 Linux 主机二进制部署node‑exporter 用来采集宿主机服务器 CPU、内存、磁盘、网络指标部署在被监控机器上监听 9100 端口。5.1 在被监控服务器安装 node‑exporter上传node_exporter‑1.9.0.linux‑amd64.tar.gz到被监控机器mkdir -p /prom cd /prom tar xf node_exporter-1.9.0.linux-amd64.tar.gz mv node_exporter-1.9.0.linux-amd64 node_exporter5.2 方式 1临时后台运行测试# nohup 后台运行监听 0.0.0.0:9100 cd /prom/node_exporter nohup ./node_exporter --web.listen-address0.0.0.0:9100 验证ps aux|grep node_exporter ss -anplut |grep 9100浏览器访问http://被监控主机IP:9100可以看到大量 metrics 指标输出代表成功。进程信号小知识SIGHUP(1)终端断开发送信号进程默认退出nohup 忽略 HUP 信号SIGINT(2)CtrlC 中断SIGTERM(15)kill 默认信号优雅关闭SIGKILL(9)强制杀死进程不可忽略5.3 配置 systemd 开机自启生产推荐停止 nohup 启动的旧进程kill -9 $(pidof node_exporter)编写 service 文件vim /usr/lib/systemd/system/node_exporter.service[Unit] DescriptionPrometheus Node Exporter [Service] Restarton-failure ExecStart/prom/node_exporter/node_exporter --web.listen-address0.0.0.0:9100 [Install] WantedBymulti-user.target