案例概述:
Docker作为目前十分出色的容器技术,得到大量很多企业的青睐,在生产环境中使用docker容器部署服务及应用的情况越来越多。所以面对日益庞大的docker服务群应用,如何具有针对性的,有效的监控也变成了企业运维人员工作需求。
容器信息采集及监控的方案有很多,有docker自身的docker stats命令、Scout、Data Dog.Prometheus等,本次为大家分享一款比较经典的容器开源监控组合方案:Cadvisor.+InfluxDB+Grafana。
Cadvisor,是Google用来监测单节点的资源信息的监控工具。Cadvisor提供了基础查询界面和 http接口,方便其他组件如 Grafana . Prometheus进行数据抓取。Cadvisor.可以对Docker 主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor使用Go语言开发,利用Linux的 Cgroup;获取容器的资源使用信息。
Google的 Kubernetes 中也默认地将其作为单节点的资源监控工具,各个节点缺省会被安装Cadvisor 。
Cadvisor.产品特点:
由于Cadvisor提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个Host,这不免会让人质疑它的实用性。但 Cadvisor的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
我们可以把 Cadvisor定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。
InfluxDB是一个由InfluxData.开发的开源非关系型时序型数据库。它由Go 写成,着力于高性能地查询与存储时序型数据。InfluxDB.被广泛应用于存储系统的监控数据,loT行业的实时数据等场景。类似的数据库还有Elasticsearch、Graphite等。
InfluxDB.应用场景:性能监控,应用程序指标,物联网传感器数据和实时分析等的后端存储。
InfluxDB主要功能
lnfluxDB主要特点
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、-prometheus和OpenTSDB作为数据源。
Grafana主要特性
提示:InfluxDB.用于数据存储,Cadvisor用户数据采集,Grafana用于数据展示
监控组件架构部署方案:
《1》:iptables -F
《2》: systemctl stop firewalld
《3》:setenforce 0
《4》:cd /etc/yum.repos.d/
《5》:wget http://mirrors.aliyun.com/repo/Centos-7.repo
《6》:yum -y install yum-utils device-mapper-persisted-data lvm2
《7》: yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
《8》:yum -y install docker-ce
《9》:systemctl start docker 启动
《10》:systemctl enable docker 开机自启动
《11》:rz 上传
《12》:ls 查看
《13》:docker load < grafana.tar
《14》:docker load < cadvisor.tar
《15》:docker load < influxdb.tar
《16》:rz 上传
《17》: docker load < nginx-1.19.tar
《18》:docker images 查看
为了把后期创建的CadvisortInfluxDBtGrafana,这三个容器都加入自己定义的网络便于理解和管理,所以才新建一个自定义网络。
《1》:docker network ls 查看
《2》:docker network create monitor 定义一个网络模式
《3》: docker network ls chak
启动容器,tutum/influxdb 镜像这里没有指定版本,默认会pull最新版本的influxdb
《1》:docker run -d --name influxdb --net monitor -p 8083:8083 -p 8086:8086 tutum/influxdb 启动
参数说明:
《2》:docker ps -l 查看是否启动
《3》:访问 : http://192.168.80.129:8083/
从上图可以看到,在Query Templates选项中提供了常用的操作模板,可根据这些模版来管理influxdb,下面我们就来创建数据库和数据库用户。
CREATE USER "root" WITH PASSWORD '123456' WITH ALL PRIVILEGES
创建 Cadvisor数据库cadvisor、用户 root,用户和数据库大家可以自行随意定义,用于后期grafana,的配置:
《1》:docker run -d --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --net monitor --publish=8080:8080 --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxdb:8086
《2》: docker ps -l
《3》:docker ps -a 查看
参数说明:
《4》:访问: http://192.168.80.129:8080/containers/
准备测试镜像
《5》:docker run -itd --restart=always --name nginx -p 8000:80 nginx 启动
《6》:在去访问,刷新
《1》:docker run -d --name grafana --net monitor -p 3000:3000 grafana/grafana 创建
《2》:docker ps -a 查看
《3》:访问: http://192.168.80.129:3000/
没有最好、最优的监控方案,需要根据企业环境的自身特点结合每个监控产品的优势来达到监控的目的。一个企业完整的监控体系包括以下几个组成部分: