docker 监控数据整合

安装docker

#开启内核转发
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
sysctl -p
wget -O /etc/yum.repos.d/ali_docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# centos7.x :
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker软件包源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装Docker CE
yum install -y docker-ce


## 配置docker

rm -f /etc/docker/*
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ajvcw8qn.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl enable docker.service

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=8088: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:8088/

配置cadvisor:

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

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

配置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
  
  查看: cat /etc/prometheus/prometheus.yml
  
      static_configs:
    - targets: ['localhost:9090']
  - job_name: 'docker'
    static_configs:
    - targets: ['192.168.3.100:8081']
    
  修改为:
    - targets: ['localhost:9090']   #在这一行下方添加,‘job不与targets同级’ :
  - job_name: 'docker'
    static_configs:
    - targets: ['192.168.3.100:8088','192.168.3.85:8088']  
    
  #targets填写:cadvisor 的IP和端口。targets:
  修改完成,重启 prometheus容器 即可
  
  
3. 重启prometheus容器:
docker restart prometheus

页面添加:

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

填写被监控服务器的IP:

页面检查:

通过访问:
http://192.168.3.85:8088/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]) * 100
rate(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-08-13 15:07  陈雷雷  阅读(190)  评论(0编辑  收藏  举报