grafan+cadvisor+prometheus监控docker

grafan+cadvisor+prometheus监控docker:

  运行cadvisor:
  
  docker run \
  --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=8081:8080 \
  --detach=true \
  --name=cadvisor  \
  google/cadvisor:latest
  
 
 运行grafana:
  
  docker run -d \
  --name=grafana \
  -p 3000:3000 \
  grafana/grafana

  
  
  运行prometheus:
  
  docker run -d \
  --name=prometheus \
  -p 9090:9090 \
  prom/prometheus



# 访问端口:
http://192.168.3.100:3000/
http://192.168.3.100:9090/
http://192.168.3.100:8081/

配置cadvisor:

访问入口: http://[ip]:8081

能看到数据信息就说明配置没问题

配置prometheus:

#进入prometheus
docker exec -it prometheus sh


#修改配置
vim /etc/prometheus/prometheus.yml 

  static_configs:                                                                            
    - targets: ['localhost:9090']                                                                
  - job_name: 'docker'                                                                           
    static_configs:                                                                              
    - targets: ['192.168.3.100:8081']
    
#修改完毕后重启  prometheus 容器:
docker restart prometheus

进入web页面:

点击 http://192.168.3.100:8081/metrics能看到数据,说明配置没问题

能看到监控数据则没有问题

配置启动grafana:

docker run -d \
> --name=grafana \
> -p 3000:3000 \
grafana/grafana


# 默认账号密码都是 admin

添加数据源:

选择 prometheus 为数据源:

选择这个源:

添加数据展示 仪表盘:


container_memory_usage_bytes{image!="",name="cadvisor"}
container_memory_max_usage_bytes{image!="",name="cadvisor"}

填写完毕后 保存配置
#官方有很多仪表盘提供使用
#其中较为适合监控docker容器的仪表盘号: 193

效果:

问题:

grafana图表无数据问题原因:

1. 如果grafna没有数据,可能时时间不对,需要每台服务器时间保持一致
2. promql存在问题,如:版本不兼容
3. prometheus里无数据,需要排查prometheus

多服务器监控docker

默认只能监控当前主机,如果需要监控多个主机,就需要做以下操作步骤:

1. 被监控主机安装 cadvisor 
  docker run \
  --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=8081:8080 \
  --detach=true \
  --name=cadvisor  \
  google/cadvisor:latest



2. 在其他服务器运行prometheus:

  docker run -d \
  --name=prometheus \
  -p 9090:9090 \
  prom/prometheus


3. 在prometheus容器中新增被监控服务器的IP[所有IP]

  docker exec -it prometheus sh
  
  查看:
      static_configs:
    - targets: ['localhost:9090']
  - job_name: 'docker'
    static_configs:
    - targets: ['192.168.3.100:8081']
    
  修改为:
    - targets: ['localhost:9090']  #在这一行下方添加:
  - job_name: 'docker'
    static_configs:
    - targets: ['192.168.3.100:8081','192.168.3.85:8081']  
    
  #targets填写:cadvisor 的IP和端口。targets:
  修改完成,重启 prometheus容器 即可
  
  
3. 重启prometheus容器:
docker restart prometheus

页面添加:

进入prometheus 设置页面 点击 :  ’Add data source‘ 添加数据源

填写被监控服务器的IP:

页面检查:

通过访问:
http://192.168.3.85:8081/containers/
http://192.168.3.100:8081/containers/
查看是否安装 cadvisor

导入监控:

label_values(up,instance)

多个主机配置配置这个是一样的

做了这一步后去编辑图表,让他显示其他节点信息,节点多的情况下每个节点都需要增加 query0配置 label_values(up,instance)

# 在编辑页面修改参数为:rate(container_cpu_user_seconds_total{image!="",instance="$Node"}[5m]) * 100rate(container_cpu_user_seconds_total{image!=""}[5m]) * 100#保存即可这个$Node 就是 Variables 这个Name: query0  也可以配置为 $query0  也可以配置为 $Node 那下面图这里就要改成 $Node

添加复选框

找到:Home / Settings选择  Variables 右边选项卡出现后在 Query 后面 添加: label_values(up,instance)修改完成后 保存或者 update 即可

#因为这里 看到 variable中定义的 Name: query0 那么他就是获取信息的关键在每个图形页面添加如下设置:,instance="$query0"添加完成后点击 save 保存
posted @ 2021-07-14 15:00  陈雷雷  阅读(311)  评论(0编辑  收藏  举报