Prometheus中的Exporter详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【10月更文挑战第25天】Prometheus Exporter分为直接采集(如cAdvisor, Kubernetes)和间接采集(如Node Exporter)两类。

我们通常可以将Exporter分为两类:

直接采集型:这类Exporter直接内置了相应的应用程序,用于向Prometheus直接提供Target数据支持。这样设计的好处是,可以更好地监控各自系统的内部运行状态,同时也适合更多自定义监控指标的项目实施。例如cAdvisor、Kubernetes等,它们均内置了用于向Prometheus提供监控数据的端点。

间接采集型:原始监控目标并不直接支持Prometheus,需要我们使用Prometheus提供的Client Library编写该监控目标的监控采集程序,用户可以将该程序独立运行,去获取指定的各类监控数据值。例如,由于Linux操作系统自身并不能直接支持Prometheus,用户无法从操作系统层面上直接提供对Prometheus的支持,因此单独提供Node exporter,还有数据库或网站HTTP应用类等Exporter。

Exporter收集的数据值转化成文本内容展示。Prometheus基于文本的格式是面向行的。行由换行符(\n)分隔,最后一行必须以换行符结尾,空行被忽略,以#开始的行通常都是注释内容。这些样本数据集合说明如下:

  • 以#HELP开始的行,表示metric的帮助与说明注释,可以包含当前监控指标名称和对应的说明信息。
  • 以#TYPE开始的行,表示定义metric类型,可以包含当前监控指标名称和类型,类型有Counter、Gauge、Histogram、Summary和Untyped。
  • 以非#开始的行,即监控样本数据。
  • 其他一般性注释,方便阅读使用,会被Prometheus忽略。

可以在Prometheus官网https://prometheus.io/docs/instrumenting/exporters/里看到常用的Node/system metrics exporter(official)和MySQL server exporter(official)。在这些Exporter的名称末尾都标示了(official),即官方进行维护的Exporter。我们也可以直接到Prometheus GitHub官网https://github.com/prometheus上获取对应的Exporter最新版本。

YAML是一种类似XML、JSON的标记性语言,其基本语法规则如下

  • 大小写敏感。
  • 使用缩进完成层级关系展示。
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 缩进的空格数目不重要(通常2或4个空格),只需要相同层级左对齐即可。

在Prometheus安装后,官方会提供一个默认的prometheus.yml文件,其中包含global的默认配置内容,主要有以下四个参数:

  • scrape_interval,每次数据采集的时间间隔,默认为1秒。
  • scrape_timeout,采集请求超时时间,默认为10秒。
  • evaluation_interval,执行rules的频率,默认为1秒。
  • external_labels,与外部系统通信时添加到任意时间序列或告警用的外部标签。

scrape_configs主要用于配置被采集数据节点操作,每一个采集配置主要有以下几个参数:

  • job_name,全局唯一名称。
  • scrape_interval,默认等于global内设置的参数值,设置后可以覆盖global中的值。
  • scrape_timeout,默认等于global内设置的参数值。
  • metrics_path,从targets获取metric的HTTP资源路径,默认是/metrics。
  • honor_labels,Prometheus如何处理标签之间的冲突。若设置为"true",则通过保留标签来解决标签冲突进行数据值采集。若设置为"false",则通过重命名来解决标签冲突,以exported_格式采集数据值,例如exported_job形式,默认是"false"。
  • scheme,用于请求的协议方式,默认是http。
  • params,数据采集访问时HTTP URL设定的请求参数。
  • relabel_configs,采集数据重置标签配置。
  • metric_relabel_configs,metric重置标签配置。
  • sample_limit,对每个被已知样本(sample)数量的每次采集进行限制,如果超过限制,该数据将被视为失败。默认值为0,表示无限制。

CPU数据进行采集的主要监控指标是node_cpu_seconds_total。node_cpu_seconds_total是一个计数器,即此类metric是Counter类型,用来标识每核CPU各个模式下占用的时间。它的标签(Label)是cpu和mode。


内存数据的采集涉及与内存相关的所有监控指标,这些数据来源于Linux系统中的/proc/meminfo文件。node_memory_MemTotal_bytes是一个常规的计量器或测量器metric,它是Gauge类型。

磁盘数据采集的所有监控指标来源于Linux系统中的/proc/diskstats文件。使用node_disk_开始的metric


文件系统采集相关的所有metric都以“node_filesystem_”开始,标签使用了3个:device,fstype,mountpoint。所有数据类型均为Gauge。


网络采集相关的所有metric都以“node_network_”开始,可分为发送和接收两类,标签都使用了device,所有数据类型均为Counter。其中node_network_receive_bytes_total和node_network_transmit_bytes_total两个metric是我们主要关注的监控指标,可以利用它们来计算网络带宽使用情况。


MySQL数据库的性能状态监控内容非常多,但通常必不可少的内容包括查询吞吐量(Query throughput)查询执行性能(Query execution performance)连接情况(Connections)缓冲池使用情况(Buffer pool usage)这四个与基本的性能和资源利用率相关的指标。


MySQL有一个名为Questions的内部计数器,MySQL术语为“服务器状态变量”。对于客户端应用程序发送的所有语句,该计数器都是递增的。对应mysqld_exporter采集后再返回的样本数据中,使用mysql_global_status_questions展示当前的Questions大小。


关于查询执行性能表现方面,可以使用MySQL提供的Slow_queries计数器,每当查询的执行时间超过long_query_time参数指定的秒数时,计数器就会增加。对应mysqld_exporter采集后再返回的样本数据中,使用mysql_global_status_slow_querie


为了防止MySQL服务器的过载运行,数据库管理员需要根据业务量进行预评估,以便限制客户端连接MySQL的数量。对应mysqld_exporter采集后再返回的样本数据中,使用mysql_global_status_slow_queries


数据库管理需要查看MySQL当前实例的连接数,即Threads_connected数值,可使用MySQL提供的命令进行查询。对应mysqld_exporter采集后再返回的样本数据中,使用mysql_global_status_slow_querie


当MySQL默认的存储引擎是InnoDB时,会使用缓冲池来缓存表和索引的数据。即便是初级数据库管理员,在部署MySQL实例时,也会提前预估并在my.cnf文件中配置参数innodb_buffer_pool_size。这是InnoDB最重要的参数,主要作用是缓存innodb表的索引、数据和插入数据,默认值为128M。对应mysqld_exporter中,可以通过mysql_global_status_innodb_buffer_pool_reads查看指标数量。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
相关文章
|
7月前
|
消息中间件 Prometheus 监控
Prometheus实战篇:什么是Exporter
所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter.而Exporter的一个实例称为target,如图下所示, Prometheus通过轮询的方式定期从这些target中获取样本数据
|
Prometheus Cloud Native Linux
Prometheus(二)之Node Exporter采集Linux主机数据
Prometheus(二)之Node Exporter采集Linux主机数据
275 0
|
JSON Prometheus 监控
使用Exporter为Prometheus添加监控对象(持续更新ing)
使用Exporter为Prometheus添加监控对象(持续更新ing)
310 0
|
存储 Prometheus 监控
Exporter + Prometheus + Grafana进行监控
Exporter + Prometheus + Grafana进行监控
370 0
Exporter + Prometheus + Grafana进行监控
|
数据采集 Prometheus 监控
Prometheus 基于Python Django实现Prometheus Exporter
Prometheus 基于Python Django实现Prometheus Exporter
266 0
|
消息中间件 Prometheus 监控
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
本文将对 RocketMQ-Exporter 的设计实现做一个简单的介绍,读者可通过本文了解到 RocketMQ-Exporter 的实现过程,以及通过 RocketMQ-Exporter 来搭建自己的 RocketMQ 监控系统。RocketMQ 在线可交互教程现已登录知行动手实验室,PC 端登录 start.aliyun.com 即可直达。
412 0
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
|
Prometheus 监控 Cloud Native
Prometheus 部署 Black Exporter 黑盒监控 DNS-TCP-ICMP
建议软件包安装,二进制安装请自行解决配置问题,docker 安装需考虑网络问题。
973 0
|
消息中间件 Prometheus 监控
基于RocketMQ Prometheus Exporter 打造定制化DevOps平台
本文将对RocketMQ-Exporter的设计实现做一个简单的介绍,读者可以通过本文了解到RocketMQ-Exporter的实现过程,以及通过RocketMQ-Exporter来搭建自己的RocketMQ监控系统。该项目的git 地址https://github.com/apache/rocketmq-exporter
基于RocketMQ Prometheus Exporter 打造定制化DevOps平台
|
Prometheus 监控 Cloud Native
基于prometheus 实现exporter新增监控指标
基于prometheus 实现exporter新增监控指标
491 0