您的位置:首页 > 运维架构 > Docker

八 、DockerUI与Shipyard以及InfluxDB+cAdvisor+Grafana配置监控

2017-11-10 01:26 821 查看
一、DockerUI

基于DockerAPI实现的镜像容器仓库管理

docker run -d -p 59000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker


三大优点:

1:可以对运行着的容器进行批量操作

2:在容器网络中-会显示容器与容器间的网络关系

3:在Volumes中显示了所有挂载目录

对我当前需求而言,好想dockerui 和 shipyard能和二为一呀。

一个致命的缺点:

不支持多主机

容我想一下,如果我有N台docker主机时-我就需要一台台的用dockerui进行管理,想想都觉得麻烦。

就单台主机而言,dockerui是一款不错的管理工具。

二、Shipyard以及docker集群的监控

介绍一下接下来用到的各组件

1、docker

Docker daemon引擎

2、consul

服务发现和配置共享的服务软件

3、swarm

基于docker的集群调度管理软件,docker 1.2版本中已经自动集成集群功能了。

4、rethinkdb

RethinkDB是一个完全支持Memcached协议、数据可持久化的工业级key-value存储系统,它自带了cluster和web资源管理功能。

5、shipyard

docker可视化资源管理平台

6、registrator

服务自动注册

7、nginx

web服务代理软件

8、consultemplate

docker服务自动发现软件,这个要结合nginx使用,当我们在宿主机上启动一个容器服务时,这时候consultemplate就会自动从consul服务上发现在这个容器,并更新nginx配置文件。

9、cadvisor

google公司开源的docker容器资源监控软件。通过宿主机的/proc /sys /var/lib/docker等目录收取容器运行信息。

10、influxdb

InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。用来存储cadvisor的信息。

11、grafana

图表展现服务,功能非常强大。

12、graylog+ Elasticsearch

具有报警选项的可插入日志和事件分析服务器

Shipyard一款WEB界面的docker管理工具,使用过程中涉及到几个模块-通讯方式,如下图:



一:proxy从/var/run/docker.sock这个unixsocket获取数据,并被动等待swarm-agent查询

二:swarm-agent通过proxy获取数据,并向etcd推送

以上两个 装在需要被管理的服务器上

三:etcd被动等待swarm-agent推送Docker主机的注册信息

四:swarm-manager使用etcd(shipyard-discovery)获取基本数据

五:shipyard 跟rethinkdb和swarm-manager进行通讯

官方提供的安装命令

#123服务器
docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb
docker run -ti -d -p 54001:4001 -p 57001:7001 --restart=always --name shipyard-discovery  microbox/etcd -name discovery
docker run -ti -d -p 2375:2375 --hostname=192.168.220.123 --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest
docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 etcd://192.168.220.123:54001
docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.220.123:2375 etcd://192.168.220.123:54001
docker run -ti -d --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm  -p 58081:8080 shipyard/shipyard:latest server -d tcp://swarm:3375
#127服务器,shipyard有两个节点 一个是自己本身,一个是127
docker run -ti -d -p 2375:2375 --hostname=192.168.220.127 --restart=always --name shipyard-proxy -v /var/run/docker.sock:/var/run/docker.sock -e PORT=2375 shipyard/docker-proxy:latest
docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.220.127:2375 etcd://192.168.220.123:54001

IE访问:http://192.168.220.123:58081/
登录:admin/Shipyard

镜像和容器都自动加载啦,功能模块:容器、镜像、节点、仓库、账号、事件等,重点在容器和镜像的管理。
容器-查看启动信息

以及重启、停止、暂停、销毁、重命名、进控制台、复制启动容器(scale)等操作
当有多个节点时,使用pull images,会在每个节点上都下载images
点评:功能很实用,基本符合实际要求。


来,现在开始搞监控

创建influxdb数据库 用于存cadviser的采集的数据

docker run -d -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name influxsrv tutum/influxdb

![这里写图片描述](https://img-blog.csdn.net/20171112171648536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMTU4MDAzNjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
在网页API里面:
CREATE DATABASE "cadvisor" #建库
CREATE USER "username" WITH PASSWORD 'password' #建用户


创建cadvisor采集指标

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

再访问宿主机8081端口




cpu 内存 网络 容器信息 都可以看到了

grafana的展示

docker run -d -p 3000:3000 -e INFLUXDB_HOST=192.168.0.202  -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=influxdb -e INFLUXDB_PASS=influxdb --link influxsrv:influxsrv --name grafana grafana/grafana




Shipyard:

https://www.shipyard-project.com/

增加宿主机之后可以注册到etcd里面发现节点后用shipyard进行管理 小规模shipyard还是比较好用的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: