观书散遗帙,探古穷至妙。这篇文章主要讲述#yyds干货盘点# Prometheus Exporter cAdvisor相关的知识,希望能为你提供帮助。
文章图片
本文已经收录在 Prometheus 合集 Prometheus 都可以采集那些指标?-- 常用 Exporter 合集 中。
容器已经发展了很久,最开始的时候还争论容器监控使用什么方式,现在基本已经形成了事实标准,容器监控使用 Google 出品的cAdvisor 。
cAdvisor 的官方地址是 https://github.com/google/cadvisor, cAdvisor 是 Container Advisor 的缩写。
cAdvisor 为容器用户提供了对其运行容器的资源使用情况和性能特征的指标。它是一个正在运行的守护进程,收集、聚合、处理和导出有关正在运行的容器的信息。具体来说,对于每个容器,它保持资源隔离参数、历史资源使用情况、完整的历史资源使用情况直方图和网络统计信息。这些数据会从容器角度和机器角度导出 。
cAdvisor 有对 Docker 容器的原生支持,并且应该支持任何其他容器类型的开箱即用。cAdvisor的容器抽象是基于lmctfy的,所以容器本质上是分层嵌套的。
安装cAdvisor 可以以多种方式运行,如果以容器的方式运行,那么这么执行就可以。
docker run \\
--volume=/:/rootfs:ro \\
--volume=/var/run:/var/run:ro \\
--volume=/sys:/sys:ro \\
--volume=/var/lib/docker/:/var/lib/docker:ro \\
--volume=/dev/disk/:/dev/disk:ro \\
--publish=8080:8080 \\
--detach=true \\
--name=cadvisor \\
--privileged \\
--device=/dev/kmsg \\
gcr.io/cadvisor/cadvisor:v0.38.0
cAdvisor现在正在 http://localhost:8080上运行(在后台)。这个设置包括了cAdvisor需要观察的Docker状态目录
cAdvisor 也可以在容器之外以二进制的方式运行。
关于 cAdvisor 如何在 CentOS/RHEL/Fedora 或者 Debian 系的操作系统上运行起来,可以参考https://github.com/google/cadvisor/blob/master/docs/running.md 。文章除了解决在这两大类系统上如何运行,还包括 如何监控硬件加速器,比如 GPU 或者 NVML 。
对于 cAdvisor 在 Debian 系统上无法获取内存数据,请参考这个 Issues https://github.com/google/cadvisor/issues/432 。
关于 cAdvisor 的启动参数可以参考 https://github.com/google/cadvisor/blob/master/docs/runtime_options.md ,详细讲解了各种启动参数。
对于 Kubernetes 用户,cAdvisor 可以作为 Daemonset 类型去运行。如何部署 可以参考 https://github.com/google/cadvisor/tree/master/deploy/kubernetes 。
Web UIcAdvisor 是有一个独立的 Web UI 界面的,这一点和其他的 Exporter 有很大的不同。或者说 Google 并不是为 Prometheus 写了一个导出容器监控数据的 Exporter ,cAdvisor 是可以脱离 Prometheus 单独使用的 ,所以它有独立的 UI 界面。
cAdvisor 提供的 UI 地址是
http://&
lt;
hostname&
gt;
:&
lt;
port&
gt;
/
。这个 UI 在
/containers
上有一个主要资源,它导出关于机器上所有容器的实时信息。cAdvisor Web UI 支持身份认证,支持 HTTP basic 和 HTTP Digest 。
HTTP basic 身份认证要启用 HTTP basic 身份认证需要添加一个
http_auth_file
参数来打开这个功能,并且指定 账号密码的存储文件,。默认情况下,认证域设置为localhost。./cadvisor --http_auth_file test.htpasswd --http_auth_realm localhost
test.htpasswd 文件的内容如下:
admin:$apr1$WVO0Bsre$VrmWGDbcBV1fdAkvgQwdk0
这段内容的意思是 账号是 admin ,密码是 paasword1 ,密码是经过处理的。
HTTP Digest 身份认证要启用 HTTP Digest 身份认证需要添加一个
http_digest_file
参数来打开这个功能,并且指定 账号密码的存储文件,。默认情况下,认证域设置为localhost。./cadvisor --http_digest_file test.htdigest --http_digest_realm localhost
test.htdigest 文件的内容如下:
admin:localhost:70f2631dded4ce5ad0ebbea5faa6ad6e
这段内容的意思是 账号是 admin ,密码是 paasword1 ,密码是经过处理的。
这两种身份验证可以使用任何一种,但是如果在参数中同时使用两个文件,则只启用 HTTP basic 身份验证。
数据导出上边说道 cAdvisor 和其他的 Prometheus Exporter 不太一样,其他的 Exporter 只能将数据导出到 Prometheus ,而 cAdvisor 不是只能将数据导出到 Prometheus 。
根据 Google 的文档,cAdvisor 可以将采集到的 数据导出到 BigQuery 、ElasticSearch 、InfluxDB、Kafka 、Prometheus、Redis、StatsD、stdout(标准输出) 。
cAdvisor 支持将统计数据导出到各种存储插件,启用存储插件需要使用
-storage_driver
参数。我们主要来看 cAdvisor 如何将数据存储到 Prometheus ,其他存储没有用过,有需要的可以参考 https://github.com/google/cadvisor/blob/master/docs/storage/README.md 。
cAdvisor 将容器和硬件统计信息公开为 Prometheus Metric 的标准格式。默认情况下,这些指标在
/metrics
的 HTTP 接口下提供。这个接口可以通过设置 -prometheus_endpoint
和-disable_metrics
或 -enable_metrics
这些参数来自定义。Prometheus 在启动以后配置 Job 来获取对应的 cAdvisor 指标就可以。
通过 cAdvisor 可以采集到两大类指标,分别是容器指标和机器的指标。
容器的指标有 CPU、内存、文件系统、网络流量、启动时间等等参数,详细参考如下链接。
https://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md#prometheus-container-metrics
机器的硬件指标有宿主机的 CPU 核数、内存容量、hugepage 、NVM 等等指标,如果用参数打开了 GPU 的采集,估计也能有一些,当然这些指标不能和 Node Exporter 以及 GPU Exporter 去比较,会少很多,详细的可以参考这个链接
https://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md#prometheus-hardware-metrics
这些列表里的 指标都可以通过
-disable_metrics
或 -enable_metrics
参数来打开采集或者关闭采集。总结【#yyds干货盘点# Prometheus Exporter cAdvisor】cAdvisor 是 Google 出品的一个用来采集容器指标的一个很好的组件,Google 最初的规划并不是一个 Prometheus 的容器指标 Exporter ,但是现在反而是容器指标的事实标准,并且和 Prometheus 结合最紧密。
推荐阅读
- #yyds干货盘点# 7. ?会查新华字典不(会。Python字典已经掌握了)
- #yyds干货盘点#Python - 爬虫_请求伪造
- Pandas学习笔记02处理数据实用操作
- #yyds干货盘点#Hadoop企业级生产调优手册
- k8s 1.22.4 kubeadm 部署
- Java 项目中使用 Resilience4j 框架实现故障隔离
- 图解 Eureka 的缓存架构 #yyds干货盘点#
- kubeadm快速部署K8S 1.20集群
- #yyds干货盘点#Java ASM系列((096)检测潜在的NPE)