番禺网站建设番禺网络营销,app界面设计案例,自已做网站,网站建设知识及维护技巧容器的监控方案其实有很多#xff0c;有docker自身的docker stats命令、有Scout、有Data Dog等等#xff0c;本文主要和大家分享一下比较经典的容器开源监控方案组合#xff1a;cAdvisorInfluxDBGrafan 一、概念 1). InfluxDB是什么nfluxDB是用GO语言编写的一个开源分布式时…容器的监控方案其实有很多有docker自身的docker stats命令、有Scout、有Data Dog等等本文主要和大家分享一下比较经典的容器开源监控方案组合cAdvisorInfluxDBGrafan 一、概念 1). InfluxDB是什么nfluxDB是用GO语言编写的一个开源分布式时序、事件和指标数据库无需外部的依赖类似的数据库有Elasticsearch、Graphite等等InfluxDB主要的功能基于时间序列支持与时间有关的相关函数(如最大、最小、求和等)可度量性可以实时对大量数据进行计算基于事件它支持任意的事件数据InfluxDB的主要特点无结构(无模式):可以是任意数量的列可拓展的支持min, max, sum, count, mean, median 等一系列函数方便统计原生的HTTP支持内置HTTP API强大的类SQL语法自带管理界面方便使用2). cAdvisor是什么它是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了一目了然的单节点多容器的资源监控功能。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具各个节点缺省会被安装上CadvisorcAvisor是利用docker status的数据信息了解运行时容器资源使用和性能特征的一种工具cAdvisor的容器抽象基于Google的lmctfy容器栈因此原生支持Docker容器并能够“开箱即用”地支持其他的容器类型。cAdvisor部署为一个运行中的daemon它会收集、聚集、处理并导出运行中容器的信息。这些信息能够包含容器级别的资源隔离参数、资源的历史使用状况、反映资源使用和网络统计数据完整历史状况的柱状图。cAdvisor功能展示Host和容器两个层次的监控数据展示历史变化数据温馨提示由于 cAdvisor 提供的操作界面略显简陋而且需要在不同页面之间跳转并且只能监控一个 host这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具由这些工具进一步加工处理。我们可以把 cAdvisor 定位为一个监控数据收集器收集和导出数据是它的强项而非展示数据3). Grafana是什么Grafana是一个可视化面板Dashboard有着非常漂亮的图表和布局展示功能齐全的度量仪表盘和图形编辑器支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源Grafana主要特性灵活丰富的图形化选项可以混合多种风格支持白天和夜间模式支持多个数据源温馨提示在这套监控方案中InfluxDB用于数据存储cAdvisor用户数据采集Grafana用于数据展示 二、单节点部署 温馨提示 服务器信息 主机IP192.168.15.129主机名master1docker版本18.06.1-ce 1. 下载镜像(可做可不做在创建容器的时候会如果本地没有会自动下载) # 下载镜像
[rootmaster1 ~]# docker pull tutum/influxdb
[rootmaster1 ~]# docker pull google/cadvisor
[rootmaster1 ~]# docker pull grafana/grafana# 查看镜像
[rootmaster1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
grafana/grafana latest 7038dbc9a50c 7 days ago 223MB
google/cadvisor latest 75f88e3ec333 10 months ago 62.2MB
tutum/influxdb latest c061e5808198 2 years ago 290MB2. 创建InfluxDB容器 # 创建InfluxDB容器
[rootmaster1 ~]# docker run -itd -p 8083:8083 -p 8086:8086 --name influxdb tutum/influxdb参数详解
-itd已交互模式运行容器并分配伪终端并在后台启动容器
-p端口映射 8083端口为influxdb后台控制端口8086端口是influxdb的数据端口
--name给容器起个名字
tutum/influxdb以这个镜像运行容器(本地有使用本地没有先去下载然后启动容器)# 查看容器
[rootmaster1 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f01c5e754bc0 tutum/influxdb /run.sh 3 seconds ago Up 2 seconds 0.0.0.0:8083-8083/tcp, 0.0.0.0:8086-8086/tcp influxdb 配置InfluxDB 登录InfluxDB的8083端口也是管理平台设置管理员用户名密码并添加数据库 登录URLhttp://192.168.15.129:8083 设置管理员用户名密码并添加数据库 3. 创建cadvisor容器 # 创建cadvisor容器
[rootmaster1 ~]# docker run -itd --name cadvisor -p 8080:8080 --mount typebind,src/,dst/rootfs,ro --mount typebind,src/var/run,dst/var/run --mount typebind,src/sys,dst/sys,ro --mount typebind,src/var/lib/docker/,dst/var/lib/docker,ro google/cadvisor -storage_driverinfluxdb -storage_driver_dbcadvisor -storage_driver_userroot -storage_driver_passwordroot -storage_driver_host192.168.15.129:8086参数详解
-itd已交互模式运行容器并分配伪终端并在后台启动容器
-p: 端口映射 8080为cadvisor的管理平台端口
--name给容器起个名字
--mout把宿主机的相文目录绑定到容器中这些目录都是cadvisor需要采集的目录文件和监控内容
google/cadvisor以这个镜像运行容器(本地有使用本地没有先去下载然后启动容器)
-storage_driver需要指定cadvisor的存储驱动这里是influxdb
-storage_driver_db需要指定存储的数据库
-storage_driver_userinfluxdb数据库的用户名(测试可以加可以不加)
-storage_driver_passwordinfluxdb数据库的密码(测试可以加可以不加)
-storage_driver_hostinfluxdb数据库的地址和端口# 查看容器
[rootmaster1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c2005bb79d1 google/cadvisor /usr/bin/cadvisor -… 3 seconds ago Up 2 seconds 0.0.0.0:8080-8080/tcp cadvisor
2fa150d3c52b tutum/influxdb /run.sh 10 minutes ago Up 10 minutes 0.0.0.0:8083-8083/tcp, 0.0.0.0:8086-8086/tcp influxdb查看cadvisor管理平台登录URLhttp://192.168.15.129:8080 登录数据库查看有没有把采集的数据写入(SHOW MEASUREMENTS执行这个命令) 得到上面的结果说明已经采集到数据并且写入到数据库了 4. 创建grafana容器 # 创建grafana容器
[rootmaster1 ~]# docker run -itd --name grafana -p 3000:3000 grafana/grafana参数详解
-itd已交互模式运行容器并分配伪终端并在后台启动容器
-p: 端口映射 3000为grafana的管理平台端口
--name给容器起个名字
grafana/grafana以这个镜像运行容器(本地有使用本地没有先去下载然后启动容器)# 查看容器
[rootmaster1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57f335665902 grafana/grafana /run.sh 2 seconds ago Up 1 second 0.0.0.0:3000-3000/tcp grafana
7c2005bb79d1 google/cadvisor /usr/bin/cadvisor -… 15 minutes ago Up 15 minutes 0.0.0.0:8080-8080/tcp cadvisor
2fa150d3c52b tutum/influxdb /run.sh 25 minutes ago Up 25 minutes 0.0.0.0:8083-8083/tcp, 0.0.0.0:8086-8086/tcp influxdb配置granfana登录URLhttp://192.168.15.129:3000默认用户名:admin默认密码admin温馨提示 首次登录会提示修改密码才可以登录我这里修改密码为admin 得到上面的结果表示整个监控已经部署完成并可以对基础监控进行实施监控具体需要监控什么grafana怎么样排版怎样起名字根据个人的业务需求来进行设置即可 三、Swarm多节点部署 刚刚上面的例子是在一台主机上监控一台主机的容器信息这里我们要使用Swarm的集群部署多台主机容器之间的监控温馨提示 主机IP192.168.15.129 主机名master1 角色Swarm的主 granfana容器 influxdb容器 cadvisor容器 主机IP192.168.15.130 主机名node1 角色Swarm的node节点 cadvisor容器 主机IP192.168.15.131 主机名node2 角色Swarm的node节点 cadvisor容器 1. 准备工作 # 创建InfluxDB的宿主机目录挂载到容器
[rootmaster1 ~]# mkdir -p /opt/influxdb# 下载镜像(可做可不做在创建容器的时候会如果本地没有会自动下载)
[rootmaster1 ~]# docker pull tutum/influxdb
[rootmaster1 ~]# docker pull google/cadvisor
[rootmaster1 ~]# docker pull grafana/grafana# 查看镜像
[rootmaster1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
grafana/grafana latest 7038dbc9a50c 7 days ago 223MB
google/cadvisor latest 75f88e3ec333 10 months ago 62.2MB
tutum/influxdb latest c061e5808198 2 years ago 290MB2. 编写创建容器的yml文件 # 编写docker-compose.yml文件
[rootmaster1 ~]# mkdir test
[rootmaster1 test]# cat docker-compose.yml
version: 3.7services:influx:image: tutum/influxdbports: - 8083:8083- 8086:8086volumes: - /opt/influxdb:/var/lib/influxdbdeploy: replicas: 1placement: constraints: [node.rolemanager]grafana: image: grafana/grafanaports: - 3000:3000depends_on:- influxdeploy: replicas: 1placement: constraints: [node.rolemanager]cadvisor:image: google/cadvisorports:- 8080:8080hostname: {{.Node.Hostname}}command: -logtostderr -docker_only -storage_driverinfluxdb -storage_driver_dbcadvisor -storage_driver_hostinflux:8086volumes: - /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:rodepends_on: - influxdeploy: mode: globalvolumes: influx:driver: localgrafana: driver: local3. 创建Swarm集群 # 在master1上执行
[rootmaster1 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:2377To add a manager to this swarm, run docker swarm join-token manager and follow the instructions.# 在node1和node2上执行
[rootnode1 ~]# docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377
This node joined a swarm as a worker[rootnode2 ~]# docker swarm join --token SWMTKN-1-3yyjydabd8v340kptius215s29rbsq8tviy00s08g6md1y25k2-81tp7lpv114a393g4wlgx4a30 192.168.15.129:2377
This node joined a swarm as a worker.# 在master1上查看集群主机
[rootmaster1 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-ce4. 创建集群容器 # 创建集群容器
[rootmaster1 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# 查看创建的容器
[rootmaster1 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# 查看容器的服务
[rootmaster1 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 [rootmaster1 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 [rootmaster1 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端口并添加数据库登录URLhttp://192.168.15.129:8083 2) 访问cadvisor登录URLhttp://192.168.15.129:8080登录数据库查看有没有把采集的数据写入 3) 访问grafana并配置登录URLhttp://192.168.15.129:3000默认用户名:admin默认密码admin温馨提示 首次登录会提示修改密码才可以登录我这里修改密码为admin 这个动图比较长 主要是对grafana的配置操作注意里面的alpine_test容器不是和集群一块创建的是我单独创建的 做到以上的效果说明已经部署成功了具体的配置方案就是因需求而异了转载于:https://www.cnblogs.com/zhujingzhi/p/9844558.html