目录
四、cadvisor对接prometheus与grafana
一、前言
docker的规模化使用已经成为当下的趋势,尤其是云原生技术的发展让docker的重要性得到进一步的提升,使用docker部署一些常规的中间件非常方便,不仅大大降低了环境搭建的成本,也能够在一定程度上节省了不少的资源,但是随之而来,也同时出现另一个问题就是尽管docker部署方便,但是一旦机器上部署的docker容器越来越多,如何对它们进行监控呢,毕竟docker也是要吃机器资源的,本文将通过实际案例来说明下如何解决这个问题。
二、docker监控概述
2.1 docker常用监控指标
在监控docker容器时,以下是一些常用的监控指标:
-
cpu使用率
-
描述:容器的cpu使用百分比。
-
用途:监控容器是否超出cpu资源限制,识别高负载问题。
-
-
内存使用量
-
描述:容器使用的内存总量和内存限制。
-
用途:监控内存使用情况,防止内存泄漏或过度使用。
-
-
网络流量
-
描述:容器的网络流入和流出流量。
-
用途:检测网络瓶颈或异常流量模式。
-
-
磁盘i/o
-
描述:容器的磁盘读写操作量。
-
用途:监控磁盘性能,避免i/o瓶颈。
-
-
文件系统使用量
-
描述:容器文件系统的总使用空间和可用空间。
-
用途:确保容器有足够的磁盘空间。
-
-
容器状态
-
描述:容器的运行状态(运行中、停止、重启等)。
-
用途:监控容器的健康状态,识别崩溃或重启事件。
-
-
进程数量
-
描述:容器内部运行的进程数量。
-
用途:检测进程异常,防止资源耗尽。
-
-
容器日志
-
描述:容器内部应用程序或系统产生的日志信息。
-
用途:排查应用程序问题,查看错误和警告信息。
-
-
运行时间
-
描述:容器自启动以来的运行时间。
-
用途:监控容器的稳定性和正常运行时间。
-
-
负载平均值
-
描述:容器的系统负载平均值。
-
用途:评估系统负载情况,识别潜在的性能问题。
-
2.2 docker常用监控工具
目前市面上也陆陆续续出现了不少关于docker的监控方案,下面列举一些docker常用监控工具
-
cadvisor
-
google开发的开源项目,用于收集、聚合、分析容器的资源使用和性能数据。
-
-
prometheus
-
开源的系统和服务监控系统,可与grafana等配合使用,支持docker容器的监控和告警。
-
-
grafana
-
开源的数据可视化和监控平台,支持多种数据源,可以与prometheus等监控工具集成,用于实时监控和数据展示。
-
-
datadog
-
云监控和安全平台,提供docker容器监控功能,支持自定义仪表盘、告警设置等。
-
-
sysdig
-
提供容器和云环境的监控解决方案,支持docker和kubernetes集成,提供实时和历史性能数据。
-
三、cadvisor概述
3.1 cadvisor是什么
cadvisor(container advisor)是一个由google开发的开源项目,专为监控docker容器而设计。它提供了容器级别的资源使用情况和性能指标,帮助用户深入了解每个运行中的容器的运行状态和资源消耗情况。
3.2 cadvisor功能特点
cadvisor具有下面的功能特点:
-
资源使用情况监控
-
cadvisor能够监控cpu、内存、磁盘和网络的使用情况,并提供实时的性能指标。
-
-
容器级别视角
-
与传统的宿主机监控工具不同,cadvisor专注于每个独立容器的监控,提供更精细化的数据。
-
-
跨平台支持
-
支持多种容器运行时,如docker和kubernetes等,以及多种操作系统。
-
-
轻量级和易集成
-
作为一个轻量级的容器内部监控工具,cadvisor可以与其他监控系统集成,如prometheus和grafana,实现更复杂的监控和报告。
-
-
web界面和api支持
-
通过web界面和api,用户可以直观地查看和管理监控数据,支持数据的导出和自定义查询。
-
3.3 cadvisor使用场景
cadvisor广泛应用于容器化环境中,特别是docker和kubernetes集群中,用于实时监控和性能优化,其功能和特性使其在以下场景中特别有用:
-
性能调优:
-
通过监控资源使用情况,帮助用户识别和解决性能瓶颈,优化容器应用的性能。
-
-
资源管理
-
确保容器在资源限制下正常运行,避免资源竞争和耗尽问题,提高整体资源利用率。
-
-
容器健康检查:
-
监控容器的运行状态和行为,及时发现和处理异常情况,保证容器的可靠性和稳定性。
-
-
集成与监控系统:
-
cadvisor作为一个轻量级的容器内部监控工具,能够与其他监控系统(如prometheus和grafana)集成,支持更复杂的监控需求和定制报告。
-
-
实时监控和报告:
-
通过web界面和api直观地查看和管理监控数据,支持数据的导出和自定义查询,帮助用户实时了解容器的运行状况和性能表现。
-
四、cadvisor对接prometheus与grafana
4.1 环境准备
-
prometheus服务;
-
参考相关的资料提前部署prometheus;
-
-
grafana服务;
-
参考相关的资料提前部署grafana;
-
-
docker环境;
-
提前安装docker,可以再在docker中部署几个服务;
-
4.2 docker部署cadvisor
为了能够获取到docker容器的运行状态,用户可以通过docker的stats命令获取到当前主机上运行的容器统计指标信息,有点像linux的top命令信息展示,通过这个命令可以查看容器的cpu利用率,内存使用量,网络io以及磁盘io等信息。
除了使用命令外,还可以通过docker提供的http api查看容器详细统计的监控信息。
4.2.2 docker部署cadvisor服务
cadvisor是google开源的一款用于展示和分析容器运行状态的可视化工具,通过在主机上运行cadvisor,用户可以轻松获取到当前主机上容器的运行统计信息,并以图表的形式向用户呈现。
执行如下的docker命令安装cadvisor
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
google/cadvisor:latest
4.2.3 访问界面
容器启动成功后,可以在浏览器通过:ip:8080进行访问,效果如下
往下翻也可以看到一些更详细的图形化指标信息
4.2.4 访问metrics
cadvisor也暴露了metrics的指标端点,可以在访问的url上添加/metrics查看,如下:
4.3 配置prometheus
4.3.1 修改prometheus配置文件
找到prometheus的yml配置文件,在job的配置中添加cadvisor的配置job信息,如下:
- job_name: "cadvisor"
scrape_interval: 10s
metrics_path: '/metrics'
static_configs:
- targets: ["公网ip:8080"]
4.3.2 重启prometheus服务
略
4.3.3 访问prometheus控制台
浏览器访问prometheus的监控页面,可以看到cadvisor就接入进来了
也可以通过链接点进去进一步查看监控的指标信息,和上面看到效果是一致的
4.4 接入grafana
如何将上述的指标信息更好的呈现出来呢,可以通过在grafana上配置dashboard,从而以更直观的方式展现,下面看具体的操作步骤;
4.4.1 grafana官网找一个模板
登录到grafana官网,搜索docker,找一个关于docker的dashboard,拷贝模板id,下面会用到:
比如这里我拷贝的是11600这个模板id
4.4.2 grafana配置dashboard模板
添加导入一个模板
跳转到下面的界面之后,拷贝上面的id到下面的框中
点击右侧的load按钮,跳转到下面的页面之后,选择本机的prometheus
最后点击import按钮进行加载,来到下面的监控页面
这个页面上清楚展示了主机上的容器信息,比如运行中的容器数量,具体某个容器的内存占用情况等,一目了然的可以直观的看到各类关于容器的指标信息。
五、写在最后
本文通过操作实践详细接受了使用prometheus监控docker的完整流程,如果正好你的项目中有使用到docker进行服务部署需要做监控的时,可以作为参考,本文到此结束感谢观看。
发表评论