目录
四、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集成,提供实时和历史性能数据。
利用这些工具可以帮助管理员监视Docker容器的资源使用情况、性能指标、日志和事件,有助于优化和管理容器化环境。
三、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为用户提供了深入了解和有效管理容器的能力,是现代容器化部署中不可或缺的重要组成部分。
四、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 stats
除了使用命令外,还可以通过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查看,如下:
不难理解,既然暴露出了metrics的端点指标接口,就可以通过Prometheus接入之后进行监控
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进行服务部署需要做监控的时,可以作为参考,本文到此结束感谢观看。