cAdvisor+Prometheus+Grafana 监控容器服务

lance 2022-07-23 PM 280℃ 0条

cAdvisor.png


简单介绍

cAdvisor:用于收集正在运行的容器资源使用和性能信息,每个 Docker 宿主机都需要部署。
Prometheus:容器监控系统,收集与存储。
Grafana:开源可视化系统。


机器划分

主机名 IP 作用
K8-200 10.10.1.200 cAdvisor
K8-210 10.10.1.210 Prometheus、Grafana、cAdvisor

机器初始化

# 以下操作所有机器都需要
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && systemctl stop firewalld && systemctl disable firewalld && init 6

开始部署

K8-200 部署 cAdvisor

# 安装 Docker
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install -y docker-ce.x86_64 && systemctl start docker && systemctl enable docker

# 启动 cAdvisor
docker run -itd --restart=always --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor.200 google/cadvisor:latest

K8-210 设置 Prometheus 配置文件

# 创建 Prometheus 配置文件
mkdir -p /data/prometheus && vim /data/prometheus/prometheus.yml
global:
  # 采集周期及告警周期
  scrape_interval: 60s
  evaluation_interval: 60s
scrape_configs:
  # job_name 指定组名,用来在 Grafana 上更直观查看信息
  # targets 可理解为被监控端的具体信息,例如 Web 服务器主机的放到 Web 分组之类
  - job_name: Prometheus
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: Prometheus
  # 新建一个 Docker 分组
  - job_name: Docker
    # 自定义该分组的时间周期信息
    scrape_interval: 10s
    scrape_timeout: 5s
    static_configs:
      # 把部署了 cAdvisor 的主机信息填写进去
      - targets:
        - 10.10.1.200:8080
        - 10.10.1.210:8080

# 创建 Prometheus 数据目录        
mkdir /data/prometheus/data

# 赋权,新版本 Prometheus 使用 nobody 为 user,需先确认该用户的 UID
docker run --rm quay.io/prometheus/busybox cat /etc/passwd
nobody:x:65534:65534:nobody:/home:/bin/false

chown -R 65534:65534 /data/prometheus/

K8-210 部署 Prometheus

# 安装 Docker
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo && yum install -y docker-ce.x86_64 && systemctl start docker && systemctl enable docker

# 启动 cAdvisor
docker run -itd --restart=always --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor.210 google/cadvisor:latest

# 启动 Prometheus
docker run -itd -p 9090:9090 --restart=always --mount type=bind,source=/data/prometheus/prometheus.yml,target=/etc/prometheus/prometheus.yml --mount type=bind,source=/data/prometheus/data,target=/prometheus --name prometheus prom/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus --storage.tsdb.retention=15d --query.max-concurrency=50 --web.enable-lifecycle

# 参数解释
--config.file,指定配置文件
--storage.tsdb.path,指定数据存储目录
--storage.tsdb.retention,指定数据过期时间,默认 15 天
--query.max-concurrency,最大支持的并发查询量
--web.enable-lifecycle,启用热加载

浏览器访问 Prometheus 页面检查是否正常
1658549406025_22_001.jpg

K8-210 部署 Grafana

# 将当前用户 ID 保存到 ID 变量中,创建 Grafana 数据目录
ID=$(id -u)
mkdir -p /data/grafana

# 启动 Grafana
docker run -itd --user $ID -p 3000:3000 --name grafana --restart=always --mount type=bind,source=/data/grafana,target=/etc/grafana/provisioning grafana/grafana

配置 Grafana

登录 Grafana 页面 http://10.10.1.210:3000/login
默认账号密码为 admin

添加数据源

1658545378826_3_01.jpg

1658545398868_4_02.jpg

1658545424033_5_03.jpg

1658545532089_6_04.jpg

1658545567381_7_05.jpg

自定义目标参数

Prometheus 上测试语句是否正确
1658546559579_11_01.jpg

1658545967794_8_02.jpg

1658545994913_9_03.jpg

1658546908742_12_04.jpg

测试效果图
1658547657963_13_01.jpg

1658547684729_14_02.jpg

1658547701958_15_03.jpg

使用模板展示

模板地址如下:
https://grafana.com/grafana/dashboards/

导入模板(此处使用 193 模板)
01.jpg

02.jpg

03.jpg

效果图
01.jpg

基于模板 193 添加多台 Docker 主机

01.jpg

02.jpg

03.jpg

04.jpg

05.jpg

最终效果图
01.jpg

02.jpg


非特殊说明,本博所有文章均为博主原创。

觉得文章不错,打赏一点吧,1分也是爱😀

WeChat Pay

微信打赏

Alipay

支付宝打赏

评论啦~