Prometheus中的各种Exporter

https://yunlzheng.gitbook.io/prometheus-book/part-ii-prometheus-jin-jie/exporter/what-is-prometheus-exporter

【Prometheus】Exporter详解

xxxx_Exporter程序对外暴露了一个用于获取当前监控样本数据的HTTP访问地址。这样的一个程序称为Exporter,Exporter的实例称为一个Target。Prometheus通过轮询的方式定时从这些Target中获取监控数据样本,并且存储在数据库当中。


社区提供的Exporter


硬件

Apcupsd Exporter,IoT Edison Exporter, IPMI Exporter 都是干什么用的?


这三个Exporter是Prometheus监控使用的Exporter,分别用于监控以下内容:

  • Apcupsd Exporter:

用来监控不间断电源(UPS)设备。Apcupsd是一款开源的UPS监控软件,这个Exporter会从Apcupsd收集UPS状态数据并输出给Prometheus Server。

  • IoT Edison Exporter:

用于监控Intel Edison这类边缘计算和物联网设备。Intel Edison是一款小型单板设备,适用于IoT项目。这个Exporter从Edison设备收集数据。

  • IPMI Exporter:

用于监控通过Intelligent Platform Management Interface (IPMI)接口管理的设备,比如服务器。IPMI是一个用来远程监控和管理计算机硬件组件的开源标准。这个Exporter会从支持IPMI的设备上收集硬件监控数据。

所以总的来说:

Apcupsd Exporter用于监控UPS设备状态。
IoT Edison Exporter用于监控Intel Edison等IoT边缘设备。
IPMI Exporter用于监控支持IPMI标准的服务器和设备。

它们都是具体为某个类型的设备或协议定制的监控导出器,可将设备数据导出到Prometheus服务器进行监控。


Ceph Exporter, Gluster Exporter, HDFS Exporter, ScaleIO Exporter等这都是什么?各自监控的产品有何作用和区别?


这些Exporter都是为了监控不同的分布式存储产品而开发的Prometheus Exporter:

  • Ceph Exporter: 用于监控Ceph分布式存储集群,可以获取Ceph的性能指标如IO性能,存储利用率等。

  • Gluster Exporter: 监控Gluster分布式文件系统,获得Gluster规模,吞吐量,使用率等监控数据。

  • HDFS Exporter:监控Hadoop分布式文件系统HDFS,提供HDFS节点状态、数据节点统计信息等监控指标。

  • ScaleIO Exporter:用于监控Dell EMC ScaleIO企业级存储,可以监控ScaleIO系统整体运行状态和性能指标。

功能上主要区别:

  • 监控对象不同,针对不同产品定制的Exporter。

  • 采集的监控指标也不同,根据各自产品特点提供相应的指标。

  • 使用方法基本相同,但配置文件等细节会有差异。

这些Exporter都是通过对接各自存储产品的监控接口,将关键指标如性能、容量利用率、故障信息等以Prometheus推出格式导出,从而让Prometheus来进行统一监控。它们共同目的是监控各种分布式存储集群运行状态。


Ceph,Gluster,HDFS,ScaleIO 都是哪家公司开发的?什么开发语言?有何特点和区别?

Ceph, Gluster, HDFS 和 ScaleIO 的主要特点和区别如下:

  • Ceph:开源项目,由Red Hat等公司支持开发。用C++开发,特点是高可靠性、扩展性强,支持对象、块、文件三种存储模式。

  • Gluster:开源项目,由Red Hat等公司支持开发。用C语言开发,特点是简单易用,支持文件共享及存储。

  • HDFS:由Apache基金会开发,遵循Hadoop项目。主要用Java开发,特点是适用于大数据处理,支持高吞吐量读写。

  • ScaleIO:Dell EMC公司专有产品,使用C/C++开发。特点是专业化企业级存储,提供虚拟块存储功能。

区别在于:

  • 开放性:Ceph和Gluster开源,HDFS基于Apache许可,ScaleIO是专有产品。

  • 使用场景:Ceph和ScaleIO适合企业级,Gluster和HDFS适合开源社区和大数据。

  • 架构:Ceph支持多种存储模式,Gluster是简单文件系统,HDFS适用于大数据,ScaleIO是虚拟块存储。

  • 处理能力:HDFS读写吞吐量高,Ceph和ScaleIO更适合混合工作负载。

  • 公司支持:Ceph和Gluster由开源社区驱动,HDFS由Apache,ScaleIO由DELL EMC长期迭代。

所以在功能和应用场景上有不同侧重点。


Apache Exporter, HAProxy Exporter, Nginx Exporter等 有何作用?


这些Exporter都用于监控不同的软件服务,具体如下:

  • Apache Exporter:

用于监控Apache HTTP服务器,可以收集Apache的请求数、并发数等基础指标。

  • HAProxy Exporter:

监控负载均衡软件HAProxy,如总请求、每秒请求数、后端服务状态等。

  • Nginx Exporter:

监控Web服务器Nginx,可以获取Nginx的HTTP请求统计数据及后端底层模组性能指标。

  • PostgreSQL Exporter:

监控关系型数据库PostgreSQL,收集该数据库的缓存信息、连接数、查询响应时间等metrics。

  • Node Exporter:

监控Linux主机性能,如CPU、内存、磁盘I/O utilization及文件描述符使用情况等系统级别指标。

所以这些Exporter的作用都是:

监控具体软件或服务的运行状态和性能指标,将相关metrics通过Prometheus客户端推送给中央Prometheus服务器,实现对目标系统的监控。它们都是基于应用或系统定制的监控导出器。


AWS ECS Exporter, Docker Cloud Exporter, Docker Hub Exporter, GitHub Exporter 都是什么?各自有什么作用?


这些Exporter主要用来监控以下服务:

  • AWS ECS Exporter:监控Amazon ECS服务,可以获取ECS集群和任务的运行状况。

  • Docker Cloud Exporter:监控Docker云管理服务Docker Cloud,获取容器调度信息等。

  • Docker Hub Exporter:监控Docker镜像仓库Docker Hub,获取镜像拉取数量等指标。

  • GitHub Exporter:监控GitHub代码仓库,返回仓库Star量、Fork量、Issue数量等项目活动指标。

它们的主要作用和区别:

  • 监控对象不同,针对各自服务定制。

  • AWS ECS Exporter监控ECS服务集群运行。

  • Docker Cloud/Hub Exporter监控Docker平台使用情况。

  • GitHub Exporter监控代码存储平台GitHub活动。

  • 它们都通过相应平台API抓取重要运行指标,以Prometheus格式输出。

  • 实现对这些云服务/平台的监控和度量分析。

所以这些Exporter都是基于不同的云服务或平台,定制开发出来实现主动监控的监控导出工具。便于Prometheus进行统一管理监控。


Fluentd Exporter, Grok Exporter有何作用?Grok是哪个公司搞的?有何作用


  • Fluentd Exporter:

用于监控日志数据收集和处理工具Fluentd的运行状态,如输入/输出日志数量、通过放速等基础指标。

  • Grok Exporter:

监控日志解析工具Grok的使用情况,如解析 Pattern 的匹配数量、错误日志等。

Grok 是由 Sumo Logic 公司开发的开源日志解析工具。它可以通过定制化的模式(Pattern)来对非结构化日志进行解析提取。

Grok 的主要作用是:

  1. 提供一组常见的日志解析 Pattern 以及模式匹配引擎。

  2. 用户可以根据实际日志格式定制自己的 Grok Pattern 进行日志解析。

  3. 将非结构化日志解析为结构化的数据,有利于后续统计、检索和分析处理。

  4. 被很多日志分析工具如Logstash、Kibana集成使用。

所以总的来说:

Fluentd Exporter 和 Grok Exporter 都是对日志处理相关系统的监控导出工具。

Fluentd Exporter 用于监控日志汇聚工具Fluentd,Grok Exporter用于监控日志解析工具Grok本身的运行指标。


Collectd Exporter, Graphite Exporter, InfluxDB Exporter, Nagios Exporter, SNMP Exporter有何作用?Collectd,Graphite,InfluxDB,Nagios,SNMP都是什么?哪家公司开发的?有何特点


这些Exporter主要作用和监控对象如下:

  • Collectd Exporter:监控系统度量采集工具Collectd。

  • Graphite Exporter:监控时序列数据库Graphite。

  • InfluxDB Exporter:监控时序数据库InfluxDB。

  • Nagios Exporter:监控网络和应用监控系统Nagios。

  • SNMP Exporter:监控通过SNMP协议监控的设备。

这些监控系统/协议情况:

  • Collectd:开源项目,采集主机性能指标。

  • Graphite:开源项目,长期存储和可视化时间序列数据。

  • InfluxDB:开源项目,时序数据库优化时序数据查询。

  • Nagios:开源项目,监控网络服务和应用程序的状态。

  • SNMP:网络管理标准协议,用于监视网络设备。

它们都提供系统或标准规格的监控能力。Exporter作用是将各自监控系统采集的指标输出到Prometheus。

总体来说,这些Exporter为Prometheus提供监控对象多样性,实现对基础设施到应用的全面监控。


Blockbox Exporter, JIRA Exporter, Jenkins Exporter, Confluence Exporter有何作用?都是哪家公司开发的?有何特点


这些Exporter主要用来监控以下系统:

  • Blockbox Exporter:监控应用程序错误和告警管理软件Blockbox。

  • JIRA Exporter:监控软件缺陷和项目管理工具JIRA,采集项目指标。

  • Jenkins Exporter:监控持续集成和部署服务器Jenkins,监控构建任务。

  • Confluence Exporter:监控wiki知识管理软件Confluence,获取 wiki 使用和编辑量指标。

这些软件都来自 Atlassian 公司:

  • JIRA、Confluence、Crowd 是 Atlassian 公司主打的项目管理、内容协作和用户管理软件。

  • Jenkins 是开源自动化服务器,Atlassian也提供增强版本。

  • Blockbox 是 Atlassian 推出的 Web 应用监控和报警软件。

这些Exporter的作用都是:

根据各自监控对象的特性,从中采集关键运行指标,以满足 Prometheus 的监控需求。

实现对 Atlassian 系列软件及相关第三方系统的监控。例如项目效率、系统运行状况等。

从而进一步提升 DevOps 内部监控管理能力。


Jenkins Exporter具体如何使用?有什么效果


Jenkins Exporter主要用于监控Jenkins系统的运行状态和性能指标,使用方法和流程如下:

  1. 下载并安装Jenkins Exporter程序。它采用Go语言开发,可以直接下载二进制版使用。

  2. 在Jenkins系统中启用Jenkins API和相关插件,以提供数据查询接口。

  3. 配置Jenkins Exporter,设置Jenkins API访问URL和后台任务URL。

  4. 运行Jenkins Exporter,它将不断从Jenkins拉取相关数据。

  5. 配置Prometheus Server,让它从Jenkins Exporter端口获取Metric数据。

  6. 在Prometheus管理界面和Grafana中即可查看指标,比如:

  • 待处理/运行/成功任务数量
  • 每个任务的平均 Duration
  • 构建成功/失败率
  • 指定job的最近构建记录
  • 每个节点的负载情况
  1. 定期抓取数据绘制趋势图,可以实时查看Jenkins性能是否下降。

  2. 配合Alertmanager可以设置警告阈值,比如最近5次构建失败提示。

通过Jenkins Exporter,可以实现Jenkins的主动监控,了解作业状态是否正常,各节点负载是否均衡,及时发现和处理问题,提升CI服务质量。


Jenkins Exporter 如何使用


Jenkins Exporter 是用于将 Jenkins CI 服务器的指标导出为 Prometheus 可用格式的工具。以下是使用 Jenkins Exporter 的基本步骤:

  1. 安装 Jenkins Exporter: 首先,您需要下载并安装 Jenkins Exporter。您可以在 GitHub 上的 Jenkins Exporter 仓库 中找到最新版本的发布。根据您的系统和偏好,选择适当的二进制文件或构建源代码。

  2. 启动 Jenkins Exporter: 在安装完成后,运行 Jenkins Exporter。例如,如果您使用二进制文件,可以通过命令行执行:

    1
    ./jenkins_exporter --jenkins.url=http://your-jenkins-instance

    这将启动 Jenkins Exporter 并连接到您的 Jenkins 实例。

  3. 配置 Prometheus: 在您的 Prometheus 配置文件中添加以下内容,以定期拉取 Jenkins Exporter 的指标:

    1
    2
    3
    4
    scrape_configs:
    - job_name: 'jenkins'
    static_configs:
    - targets: ['localhost:8080'] # Jenkins Exporter 地址

    请确保替换 'localhost:8080' 为您运行 Jenkins Exporter 的实际地址。

  4. 重启 Prometheus 和 Jenkins Exporter: 保存 Prometheus 配置文件并重新启动 Prometheus,以及 Jenkins Exporter。

  5. 查看指标: 打开 Prometheus 的 Web 界面(默认为 http://localhost:9090),然后您应该能够查询 Jenkins Exporter 暴露的指标。

请注意,确保 Jenkins Exporter 和 Prometheus 之间的网络连接正常,以及 Jenkins 实例的 URL 正确配置。详细的配置选项和使用说明可以在 Jenkins Exporter 的文档或 GitHub 仓库中找到。



用户自定义的Exporter(自己手写实现)


除了直接使用社区提供的Exporter程序以外,用户还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。同时还有第三方实现的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。


自己动手编写一个Exporter: https://blog.csdn.net/wanger5354/article/details/120211773