网站首页 > 开源技术 正文
容器监控方案cAdvisor+InfluxDB+Grafana实现案例
容器监控的方案有很多,有docker自身的docker stats命令、有Scout、有Data Dog等等,本文主要和大家分享一下比较经典的容器开源监控方案组合:cAdvisor+InfluxDB+Grafana
1.概念
??cAdvisor:用于数据采集
??InfluxDB:用于数据存储
??Grafana: 用于数据展示
1.1 cAdvisor
它是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了一目了然的单节点多容器的资源监控功能。Google的Kubernetes中也缺省地将其作为单节点的资源监控工具,各个节点缺省会被安装上Cadvisor。总结起来主要两点:
展示 Host 和容器两个层次的监控数据。
展示历史变化数据。
由于 cAdvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 host,这不免会让人质疑它的实用性。但 cAdvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
?我们可以把 cAdvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据
1.2 InfluxDB
InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等
InfluxDB主要特色功能
基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等);
可度量性:你可以实时对大量数据进行计算;
基于事件:它支持任意的事件数据;
InfluxDB主要特点
无结构(无模式):可以是任意数量的列;
可拓展的;
支持min, max, sum, count, mean, median 等一系列函数,方便统计;
原生的HTTP支持,内置HTTP API;
强大的类SQL语法;
自带管理界面,方便使用;
1.3 Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源
2.部署过程
创建Influxdb容器,创建数据用户、数据库;
创建cAdvisor容器;
创建Grafana容器,配置grafana;
2.1 创建influxdb容器
启动容器,tutum/influxdb这里没有指定版本,默认会pull最新版本的influxdb:
docker run -d --name influxdb -p 8083:8083 -p 8086:8086 tutum/influxdb
方法2:
#获取镜像
docker pull tutum/influxdb
#修改标识
docker tag tutum/influxdb:latest k8s4:5000/influxdb
#推送到私有仓库
docker push k8s4:5000/influxdb
#新节点上启动influxdb
docker run -d --name influxdb -p 8083:8083 -p 8086:8086 k8s4:5000/influxdb
参数说明:
-d :后台运行此容器;
--name :启运容器分配名字influxdb;
-p :映射端口,8083端口为infuxdb后台控制端口,8086端口是infuxdb的数据端口;
tutum/influxdb:通过这个容器来运行的,默认会在docker官方仓库pull下来;
访问influxdb (节点IP+8083)
http://192.168.10.37:8083
创建cadvisor数据库cadvisor、用户root,用户和数据库可以自行定义,是用于后期grafana的配置
CREATE USER "root" WITH PASSWORD 'ld2019' WITH ALL PRIVILEGES
按回车执行
创建数据库
CREATE DATABASE "cadvisor"
2.2 创建cadvisor容器
运行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 \ --name=cadvisor \ google/cadvisor:latest \ -storage_driver=influxdb \ -storage_driver_db=cadvisor \ -storage_driver_host=192.168.10.37:8086
参数说明:
-d :后台运行此容器;
--name :启运容器分配名字cadvisor;
-p :映射端口8080;
--volume:把宿主机的相关目录绑定到容器中,这些目录都是cadvisor需要采集的目录文件和监控内容;
-storage_driver:需要指定cadvisor的存储驱动、数据库主机、数据库名;
google/cadvisor:通过cadvisor这个镜像来运行容器,默认会在docker官方仓库把镜像pull下来;
方法2:
使用daemonset方式部署
#cadvisor.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: cadvisor
namespace: kube-system
labels:
app: cadvisor
spec:
selector:
matchLabels:
name: cadvisor
template:
metadata:
labels:
name: cadvisor
spec:
hostNetwork: true
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
key: enabledDiskSchedule
value: "true"
effect: NoSchedule
containers:
- name: cadvisor
image: k8s4:5000/cadvisor:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: rootfs
mountPath: /rootfs
readOnly: true
- name: var-run
mountPath: /var/run
readOnly: false
- name: sys
mountPath: /sys
readOnly: true
- name: docker
mountPath: /var/lib/docker
readOnly: true
ports:
- name: http
containerPort: 4194
protocol: TCP
readinessProbe:
tcpSocket:
port: 4194
initialDelaySeconds: 5
periodSeconds: 10
args:
- --housekeeping_interval=10s
- --port=4194
- --storage_driver=influxdb
- --storage_driver_db=cadvisor
- --storage_driver_host=192.168.10.37:8086
terminationGracePeriodSeconds: 30
volumes:
- name: rootfs
hostPath:
path: /
- name: var-run
hostPath:
path: /var/run
- name: sys
hostPath:
path: /sys
- name: docker
hostPath:
path: /var/lib/docker部署:kubectl create -f cadvisor.yaml
访问:
节点IP+4194端口
http://192.168.10.38:4194/
从上图可以看到,其实cadvisor也有基础的图形展示功能,我们这里主要用它来做数据采集
2.3 创建granafa容器
运行granafa容器:
docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana
方法2:
#获取镜像
docker pull grafana/grafana
#添加标识
docker tag grafana/grafana k8s4:5000/grafana
#推送到私有仓库
docker push k8s4:5000/grafana
#其他节点启动
docker run -d --name grafana -p 3000:3000 k8s4:5000/grafana
通过节点IP+3000端口访问
http://192.168.10.38:3000
默认 admin/admin
已改:admin/ld2019
添加数据源Add data source
新建New dashboard,如下图:
新建了一个监控项之后,回来HOME,可以发现刚才创建的项目:
到这里cAdvisor+InfluxDB+Grafana容器监控系统就部署完成了
猜你喜欢
- 2024-10-15 Docker命令大全:从基础管理到高级实践
- 2024-10-15 10分钟知晓这些Docker监控工具(docker swarm 监控)
- 2024-10-15 Prometheus(普罗米修斯)介绍(普罗米修斯深度解析知乎)
- 2024-10-15 自动伸缩你的应用(自动伸缩装置怎么做?)
- 2024-10-15 十次方社交系统 第10章-容器管理与容器监控
- 2024-10-15 APO 集成生态exporter一键完成指标采集
- 2024-10-15 容器化时代的默认的监控方式(什么是容器化运行)
- 2024-10-15 如何得到实时的Docker性能Metrics?
- 2024-10-15 详解docker部署prometheus+grafana监控系统体系,值得收藏
- 2024-10-15 docker 监控方案介绍(docker 网络监控)
欢迎 你 发表评论:
- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)

本文暂时没有评论,来添加一个吧(●'◡'●)