dcgm-exporter + prometheus + kafka-adapter采集GPU容器监控

这篇具有很好参考价值的文章主要介绍了dcgm-exporter + prometheus + kafka-adapter采集GPU容器监控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

采集链路

dcgm-exporter

项目地址:https://github.com/NVIDIA/dcgm-exporter

dcgm-exporter主要用于将nvidia gpu的监控数据导出到prometheus里,符合prometheus的exporter规范。

deployment/templates/metrics-configmap.yaml定义了采集的指标名及具体含义,我们的场景下主要关注GPU和显存指标。

  # Utilization (the sample period varies depending on the product)
  DCGM_FI_DEV_GPU_UTIL,      gauge, GPU utilization (in %).        -- GPU使用率(%)
  DCGM_FI_DEV_MEM_COPY_UTIL, gauge, Memory utilization (in %).     -- 显存使用率(%)

  # Memory usage
  DCGM_FI_DEV_FB_FREE, gauge, Framebuffer memory free (in MiB).    -- 空闲显存(MB)
  DCGM_FI_DEV_FB_USED, gauge, Framebuffer memory used (in MiB).    -- 已用显存(MB)

部署

helm文档:https://helm.sh/zh/docs/

dcgm-exporter和prometheus-kafka-adapter都提供了helm部署方式,可以很方便的管理依赖。

部署dcgm-exporter前,需要对deployment/values.yaml的内容进行变更。

namespaceOverride: "kube-system"    -- 重要组件部署在kube-system下

serviceMonitor:
  enabled: true
  interval: 60s                     -- 采集间隔,默认是15s(即每分钟采集4个点),为了处理方便,改为60s(也就是每分钟1个点)
  honorLabels: false
  additionalLabels: {}
    #monitoring: prometheus
  metricRelabelings:
  - action: labelmap                -- 配置一个labelmap规则,将exported_pod/exported_namespace这些tag转换为pod/namespace
    regex: exported_(.*)
    replacement: $1

nodeSelector:
  nvidia-device-enable: enable      -- 只对某些节点部署dcgm-exporter(按需添加)
  #node: gpu

tolerations: []                     -- nodeSelector所选的节点中可能存在taints导致部署不上去,此处按需添加tolerations
#- operator: Exists

kubeletPath: "/var/lib/kubelet/pod-resources"      -- 如果集群内GPU机器对应目录下没有kubelet.sock文件,说明路径不对

注意事项

  1. 如果没有配置metricRelabelings,从prometheus拉取数据的时候,pod对应的是采集组件的pod名(也就是dcgm-exporter-xxx),namespace是kube-system。exported_pod和exported_namespace才是监控指标所属的pod和namespace。
  2. kubeletPath如果配置错误,会导致GPU的uuid无法关联到pod上,从prometheus拉取到的数据里就没有pod/namespace/exported_pod/exported_namesapce这些tag。且dcgm-exporter里会打印日志No Kubelet socket, ignoring

一些踩坑经验

网上一些部署教程发布的时间比较早,会建议使用https://github.com/NVIDIA/gpu-monitoring-tools来部署dcgm-exporter。

但是部署过程中,又需要部署pod-gpu-metrics-exporter,然而这个东西的部署脚本和镜像基本都找不到了。

所以最后只能单独部署一个低版本的dcgm-exporter。因为只能采集到GPU的uuid,没办法关联pod,又需要开发一个东西去做关联。

这里也卡住了我一两天,其实仔细下看gpu-monitoring-tools的readme,就能发现这个项目已经归档了,直接用NVIDIA/dcgm-exporter就行。

prometheus

部署方案就不写了(我是直接用的SAAS,实在是没部署经验。)

想验证GPU的监控正常采集到prometheus里,有两步检查过程。

  1. 首先可以看下dcgm-exporter有没有采集到相关指标。随便取一个dcgm-exporter pod,拿到容器ip,在集群内执行curl ${pod_ip}:9400/metrics,如果能从返回值中看到DCGM_FI_DEV_GPU_UTIL这些指标,说明数据采集到了。这时候也可以看下pod/namespace/exported_pod/exported_namesapce这些tag是否都有(如果没有就看看kubeletPath是否设置正确),取值是否符合预期。
  2. 如果上一步没问题,再看看prometheus里的数据是否正常。curl -H 'Authorization: xxx xxxxxx' -v -X GET http://${prometheus_ip}:9090/api/v1/query?query=DCGM_FI_DEV_GPU_UTIL。如果能拿到数据就说明没问题。

prometheus-kafka-adapter

项目地址:https://github.com/Telefonica/prometheus-kafka-adapter

这个组件主要是用于将Prometheus的数据导出到kafka,便于后续的数据处理(比如转存、归档)。

对于这类数据处理需求,也可以通过定时请求Prometheus去拉取数据。但是在集群内容器比较多的时候,拉取的数据量会非常大,延迟得不到保障,很容易出问题。

通过将数据导出到kafka,Prometheus就不再是性能瓶颈,从架构上也更低耦合。

部署

部署依旧使用helm,对helm/prometheus-kafka-adapter/values.yaml做一些修改即可。

environment:
  # defines kafka endpoint and port, defaults to kafka:9092.
  KAFKA_BROKER_LIST: "${your_broker_ips}"                   -- kafka broker列表
  # defines kafka topic to be used, defaults to metrics.
  KAFKA_TOPIC: "${your_topic}"                              -- kafka topic

service:
  # To define a NodePort, overload in a custom values file
  #   type: NodePort
  #   nodeport: <value>
  type: LoadBalancer                                        -- 我用的是LoadBalancer,因为prometheus是单独申请的SAAS,需要保证集群外能访问这个service。
  port: 80
  annotations: {}

集群内部署好prometheus-kafka-adapter之后,还需要修改prometheus的配置,并重启Prometheus。主要是增加一条remote_write规则。

remote_write:
  - url: "http://${load_balancer_ip}:8080/receive"

总结

helm很好用,后续好好研究下。文章来源地址https://www.toymoban.com/news/detail-636237.html

到了这里,关于dcgm-exporter + prometheus + kafka-adapter采集GPU容器监控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于DCGM和Prometheus的GPU监控方案

    DCGM(Data Center GPU Manager)即数据中心GPU管理器,是一套用于在集群环境中管理和监视Tesla™GPU的工具。 它包括主动健康监控,全面诊断,系统警报以及包括电源和时钟管理在内的治理策略。 它可以由系统管理员独立使用,并且可以轻松地集成到NVIDIA合作伙伴的集群管理,资源调

    2024年02月09日
    浏览(33)
  • Prometheus常用exporter及其常用监控指标

    CPU相关指标: node_cpu_seconds_total{mode=\\\"idle\\\"} :CPU空闲时间(秒)的总和。这是评估CPU使用率的重要指标之一。 node_cpu_seconds_total{mode=\\\"system\\\"} 、 node_cpu_seconds_total{mode=\\\"user\\\"} 等:分别表示CPU在内核态和用户态的运行时间。 内存相关指标: node_memory_MemTotal_bytes :内存总量(以字节为

    2024年03月11日
    浏览(64)
  • prometheus+mysql_exporter监控mysql

    prometheus+mysql_exporter监控mysql 一.安装mysql 1.下载: wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2.安装客户端: yum -y install mysql57-community-release-el7-10.noarch.rpm 3.安装服务端: yum -y install mysql-community-server 4.启动服务: systemctl start mysqld.service 5.查看服务是否启动:

    2024年02月20日
    浏览(37)
  • 【云原生 Prometheus篇】Prometheus架构详解与核心组件的应用实例(Exporters、Grafana...)

    老牌传统的: Zabbix 、Nagios、Cacti … 云时代的: Prometheus 、夜莺 … … Zabbix:更适用于传统业务架构的物理机、虚拟机环境的监控,对容器的支持比较差;数据存储主要采用的是关系型数据库,会随着监控节点数量的增加,关系型数据库的压力也会变大,监控数据的读写也会

    2024年02月22日
    浏览(40)
  • 【大数据监控】Prometheus、Node_exporter、Graphite_exporter安装部署详细文档

    Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

    2023年04月08日
    浏览(40)
  • Docker下prometheus安装mysqld-exporter/redis_exporter/mongo-exporter【亲测可用】

    一、安装mysqld-exporter 1、下载mysqld-exporter:docker pull prom/mysqld-exporter 2、根据自己配置的数据库用户名和密码进行启动 docker run -d --name mysqld_exporter -p 9104:9104 -e DATA_SOURCE_NAME=\\\"root:Newmysql55..(127.0.0.1:3306)/\\\" prom/mysqld-exporter 3、查看启动过的容器实例:docker ps -a 4、自动启动:docker up

    2024年02月16日
    浏览(39)
  • Prometheus监控之SNMP Exporter介绍和数据展现

    由于技术能力有限,文章仅能进行简要分析和说明,如有不对的地方,请指正,谢谢🙂。 SNMP协议全称是:Simple Network Management Protocol,译为简单网络管理协议,是作为TCP/IP网络管理标准协议,为不同的设备提供统一接口,实现了网络设备之间的统一管理。 SNMP协议分为三个版

    2023年04月26日
    浏览(46)
  • Prometheus监控实战之node_exporter详解

    目录 1 概述 2 功能 2.1 不同操作系统采集端 2.2 linux操作系统采集端 2.3 监控指标 2.4 参数定义 2.4.1 默认启用的参数  2.4.2 默认不启用的参数 2.5 启动参数 3 安装部署 3.1 下载 3.2 安装配置 3.3 测试验证 3.4 prometheus配置 3.5 在 grafana 中添加图表   Exporter是Prometheus的指标数据收

    2024年02月03日
    浏览(48)
  • Kibana+Prometheus+node_exporter 监控告警部署

    下载好三个软件包 一、prometheus安装部署 1、解压  2、修改配置文件的IP地址 3、运行Prometheus 4、打开浏览器根据配置文件的地址和端口访问,如果状态栏看到的跟下图不一样,记得在标签栏中的Status状态选择Targets  二、node_exporter 安装部署 1、解压,运行  2、打开浏览器输入

    2024年02月15日
    浏览(57)
  • 二进制部署Prometheus + Grafana监控集群,及各exporter安装

    Prometheus三大组件: Server 主要负责数据采集和存储,提供PromQL查询语言的支持。 Alertmanager 警告管理器,用来进行报警。 Push Gateway 支持临时性Job主动推送指标的中间网关。 Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google B

    2024年02月13日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包