DOCKER监控

单节点监控

docker监控(Docker+Jmeter+InfluxDB+Grafana)
InfluxDB
一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。
cAdvisor
Google用来监测单节点的资源信息的监控工具。Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。
Grafana
一款可视化度量分析和可视化套件,常用于可视化基础设施和应用程序分析,与Kibana类似,UI更加灵活,且插件丰富。
Jmeter
Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
安装influxDB
docker run -d \
   -p 8083:8083 \
   -p 8086:8086 \
   --expose 8090 \
   --expose 8099 \
   --name influxsrv \
   tutum/influxdb

安装cadvisor
docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:rw \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  -p 8080:8080 \
  --detach=true --link influxsrv:influxsrv \
  --name=cadvisor \
  google/cadvisor:latest \
  -storage_driver=influxdb \
  -storage_driver_db=cadvisor \
  -storage_driver_host=influxsrv:8086

安装granfana
docker run -d \
  -p 3000:3000 \
  -e INFLUXDB_HOST=localhost \
  -e INFLUXDB_PORT=8086 \
  -e INFLUXDB_NAME=cadvisor \
  -e INFLUXDB_USER=root -e INFLUXDB_PASS=root \
  --link influxsrv:influxsrv \
  --name grafana \
grafana/grafana

直接访问http://host-ip:8083/进入配置管理界面。点击配置管理界面右上角的 配置按钮图标 进入配置配置管理后台,使用root/root登录。
在上图中我可以看到influxdb提供了一些查询/操作数据的语句模版,这对我们这些不太熟悉它的人写SQL非常有帮助。
我们选择模板CREATE DATABASE,在输入框会出现CREATE DATABASE "db_name",把db_name 替换成我们的数据源cadvisor,回车,我们的数据库就创建完成了。接下来我们继续执行下面的SQL来完成用户的创建和授权:
CREATE USER "cadvisor" WITH PASSWORD 'cadvisor'
grant all privileges on "cadvisor" to "cadvisor"
执行成功会有 Success! (no results to display) 的提示。

http://host-ip:8080/containers/能看到信息

访问http://host-ip:3000使用admin/admin即可登录配置管理后台,如果不想修改密码可以选择跳过。
配置Granfana数据源
选择数据库类型为influxdb,host为http://influxsrv:8086,填写cadvisor的账户密码:
保存之后,点击保存并测试:
添加Dashboard
点击左侧的 + 号,选择Dashboard,选择graph
进入心界面后,选择title,选择编辑
在展示数据配置界面选择一个数据源,比如内存,点击保存,即可完成该数据的动态展示:
在配置界面Axes选项卡中配置相关的显示单位。可以根据实际的情况选择监控的单位。,因为我们监控的内存,所以选择的是相关的单位。
至此, 所有配置步骤完成,简单配置了两个图像:

多节点监控

集群监控(Swarm多节点部署)
# 创建InfluxDB的宿主机目录挂载到容器
[root@master1 ~]# mkdir -p /opt/influxdb
# 编写docker-compose.yml文件
[root@master1 ~]# mkdir test
[root@master1 test]# cat docker-compose.yml
version: '3.7'
 
services:
  influx:
    image: tutum/influxdb
    ports:
      - "8083:8083"
      - "8086:8086"
    volumes:
      - "/opt/influxdb:/var/lib/influxdb"
    deploy:
      replicas: 1
      placement:
        constraints: [node.role==manager]
 
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    depends_on:
      - "influx"
    deploy:
      replicas: 1
      placement:
        constraints: [node.role==manager]
 
  cadvisor:
    image: google/cadvisor
    ports:
      - "8080:8080"
    hostname: '{{.Node.Hostname}}'
    command: -logtostderr -docker_only -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influx:8086
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    depends_on:
      - influx
    deploy:
      mode: global
 
volumes:
  influx:
    driver: local
  grafana:
    driver: local
    
# 在master1上执行
[root@master1 test]# docker swarm init --advertise-addr 192.168.15.129
Swarm initialized: current node (xtooqr30af6fdcu51jzdv79wh) is now a manager.
 
To add a worker to this swarm, run the following command:
    # 这里已经提示使用下面的命令在node节点上执行就可以加入集群(前提docker服务一定是启动的)
    docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377
 
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
 
 
# 在node1和node2上执行
[root@node1 ~]# docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377
This node joined a swarm as a worker
 
[root@node2 ~]# docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377
This node joined a swarm as a worker.
 
# 在master1上查看集群主机
[root@master1 test]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
xtooqr30af6fdcu51jzdv79wh *   master1             Ready               Active              Leader              18.06.1-ce
y24c6sfs3smv5sd5h7k66x8zv     node1               Ready               Active                                  18.06.1-ce
k554xe59lcaeu1suaguvxdnel     node2               Ready               Active                                  18.06.1-ce

# 创建集群容器
[root@master1 test]# docker stack deploy -c docker-compose.yml swarm-monitor
Creating network swarm-monitor_default
Creating service swarm-monitor_cadvisor
Creating service swarm-monitor_influx
Creating service swarm-monitor_grafana
 
 
# 查看创建的容器
[root@master1 test]# docker service  ls
ID                  NAME                     MODE                REPLICAS            IMAGE                    PORTS
wn36f7be6i5a        swarm-monitor_cadvisor   global              3/3                 google/cadvisor:latest   *:8080->8080/tcp
ufn3lqbhbww3        swarm-monitor_grafana    replicated          1/1                 grafana/grafana:latest   *:3000->3000/tcp
lf0z6dp1u8sn        swarm-monitor_influx     replicated          1/1                 tutum/influxdb:latest    *:8083->8083/tcp, *:8086->8086/tcp
 
# 查看容器的服务
[root@master1 test]# docker service ps swarm-monitor_cadvisor
ID                  NAME                                               IMAGE                    NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
vy1kqg5u8x3f        swarm-monitor_cadvisor.k554xe59lcaeu1suaguvxdnel   google/cadvisor:latest   node2               Running             Running about a minute ago                      
a08b5bysra3d        swarm-monitor_cadvisor.y24c6sfs3smv5sd5h7k66x8zv   google/cadvisor:latest   node1               Running             Running about a minute ago                      
kkca4kyojgr2        swarm-monitor_cadvisor.xtooqr30af6fdcu51jzdv79wh   google/cadvisor:latest   master1             Running             Running 59 seconds ago  
 
[root@master1 test]# docker service ps swarm-monitor_grafana
ID                  NAME                      IMAGE                    NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
klyjl7rxzmoz        swarm-monitor_grafana.1   grafana/grafana:latest   master1             Running             Running about a minute ago       
 
[root@master1 test]# docker service ps swarm-monitor_influx
ID                  NAME                     IMAGE                   NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
pan5yvwq7b79        swarm-monitor_influx.1   tutum/influxdb:latest   master1             Running             Running about a minute ago    


5. 访问web测试
1) 访问influxdb并创建数据库
登录InfluxDB的8083端口,并添加数据库
登录URL:http://192.168.15.129:8083

2) 访问cadvisor
登录URL:http://192.168.15.129:8080
登录数据库查看有没有把采集的数据写入


3) 访问grafana并配置
登录URL:http://192.168.15.129:3000
默认用户名:admin
默认密码:admin
温馨提示:
首次登录会提示修改密码才可以登录,我这里修改密码为admin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值