Grafana+Prometheus+cAdvisor Docker容器监控平台搭建


组件角色分工主要功能默认端口
cAdvisor数据采集器 (Data Collector)负责收集 Docker 主机上所有运行容器的资源使用和性能指标(如 CPU、内存、网络、磁盘等),并暴露给 Prometheus 抓取。8080
Prometheus时序数据库和监控核心 (Monitoring Core)定时抓取、存储 cAdvisor 暴露的指标数据,并提供强大的查询语言 PromQL 来分析和聚合数据。9090
Grafana数据可视化平台 (Visualization Platform)从 Prometheus 查询数据,并通过丰富的图表和仪表盘进行直观展示,也支持设置报警规则。3000

下面是它们的协作方式:

被采集
暴露指标数据
端口 8080
按配置抓取数据
scrape_configs
存储查询数据
通过数据源调用
Prometheus API
渲染图表
Docker 容器
cGroups 资源指标
cAdvisor
数据采集器
Prometheus
监控核心与时序数据库
Grafana
数据可视化平台
监控仪表盘
Web 端口 3000

由于使用arm64架构本地部署,这里使用了 docker network 方便容器间通信,通过 docker network create dev-network 创建了dev-network网络

一、Docker运行 cAdvisor

1. cAdvisor 通常直接运行在宿主机上,以提供对主机上所有容器的监控能力。

```bash
docker run -d \
  --name=cadvisor \
  --network=dev-network \
  --restart=always \
  -p 1922:8080 \
  -v /:/rootfs:ro \
  -v /var/run:/var/run:ro \
  -v /sys:/sys:ro \
  -v /var/lib/docker/:/var/lib/docker:ro \
  --device=/dev/kmsg \
  --platform=linux/arm64/v8 \
  --privileged \
  gcr.io/cadvisor/cadvisor:v0.47.0
```

2. 参数解释:

- `--name=cadvisor`:容器名称
- `--network=dev-network`:网络名称
- `--restart=always`:重启策略
- `-p 1922:8080`:端口映射
- `-v /:/rootfs:ro`:数据卷挂载
- `-v /var/run:/var/run:ro`:数据卷挂载
- `-v /sys:/sys:ro`:数据卷挂载
- `-v /var/lib/docker/:/var/lib/docker:ro`:数据卷挂载
- `--device=/dev/kmsg`:设备挂载
- `--platform=linux/arm64/v8`:平台架构
- `--privileged`:特权模式
- `gcr.io/cadvisor/cadvisor:v0.47.0`:镜像名称

3. 验证

访问 http://<你的服务器IP>:1922,能看到 cAdvisor 的 Web 界面。
在这里插入图片描述


二、Docker运行prometheus

1. 创建配置文件 prometheus.yml

```yaml
global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  
  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080'] # 这里配置 cadvisor 输出地址
```

2. 运行prometheus容器

```bash
docker run -d \
  --name=prometheus \
  --network=dev-network \
  --restart=always \
  -p 1923:9090 \
  -v $(pwd)/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  -v prometheus_data:/prometheus \
  --platform=linux/arm64/v8 \
  prom/prometheus:v2.45.0 \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/prometheus \
  --web.console.libraries=/etc/prometheus/console_libraries \
  --web.console.templates=/etc/prometheus/consoles \
  --web.enable-lifecycle
```

3. 参数解释:

- `--name=prometheus`:容器名称
- `--network=dev-network`:网络名称
- `--restart=always`:重启策略
- `-p 1923:9090`:端口映射
- `-v $(pwd)/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml`:配置文件挂载
- `-v prometheus_data:/prometheus`:数据卷挂载
- `--platform=linux/arm64/v8`:平台架构
- `prom/prometheus:v2.45.0`:镜像名称
- `--config.file=/etc/prometheus/prometheus.yml`:环境变量,设置配置文件路径
- `--storage.tsdb.path=/prometheus`:环境变量,设置数据存储路径
- `--web.console.libraries=/etc/prometheus/console_libraries`:环境变量,设置控制台库路径
- `--web.console.templates=/etc/prometheus/consoles`:环境变量,设置控制台模板路径
- `--web.enable-lifecycle`:环境变量,启用生命周期管理

4. 验证

访问 http://<你的服务器IP>:1923/targets,能看到 prometheus 的 Web 界面。可以看到配置的 cadvisor 处于 UP 状态
在这里插入图片描述


三、Docker运行grafana

1. 运行grafana容器

```bash
docker run -d \
  --name=grafana \
  --restart=always \
  --network=dev-network \
  -p 1924:3000 \
  -v grafana_data:/var/lib/grafana \
  -e GF_SECURITY_ADMIN_PASSWORD=admin \
  -e GF_USERS_ALLOW_SIGN_UP=false \
  --platform=linux/arm64/v8 \
  grafana/grafana:10.1.0
```

2. 参数解释:

- `--name=grafana`:容器名称
- `--network=dev-network`:网络名称
- `--restart=always`:重启策略
- `-p 1924:3000`:端口映射
- `-v grafana_data:/var/lib/grafana`:数据卷挂载
- `-e GF_SECURITY_ADMIN_PASSWORD=admin`:环境变量,设置管理员密码
- `-e GF_USERS_ALLOW_SIGN_UP=false`:环境变量,禁止用户注册
- `--platform=linux/arm64/v8`:平台架构
- `grafana/grafana:10.1.0`:镜像名称

3. 验证

访问 http://<你的服务器IP>:1924,能看到 grafana 的 Web 登录界面。输入 admin/admin 登录后修改登录密码
在这里插入图片描述


四、监控页面配置

1. 配置数据源

菜单栏-> Data sources -> Add data source -> Prometheus在这里插入图片描述
在这里插入图片描述
我这里使用的是docker network,在server URL写入 http://prometheus:9090;如果没有docker network 或者不在同一个服务器,这里写http://<你的服务器IP>:1924即可。完成配置点击 save & test 按钮可以看到连接成功
在这里插入图片描述

2. 导入仪表盘

点击右上角加号选择 Import dashboard 进入导入页面
在这里插入图片描述
在这里插入图片描述
这里使用的是可以选择主机的docker监控模板,点击下载后选择Import dashboard 导入即可,当然也可以使用官方的ID加载,在Import via grafana.com 输入 193,然后选择 prometheus 数据源,点击导入按钮即可 在这里插入图片描述
最终效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一只帆記

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

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

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

打赏作者

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

抵扣说明:

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

余额充值