Ignite与Prometheus的集成方案

原创
02/28 10:19
阅读数 6.4K

概述

Prometheus是一个流行的监控工具,由维护Kubernetes的云原生计算基金会提供支持。很多开发者希望将Ignite集群与Prometheus集成在一起,本文会给出相关的建议。

Prometheus的配置

本文不关注如何使Prometheus的配置最优化,因此将尽可能地使用默认值,配置如下:

首先,使抓取间隔更频繁一些,虽然没必要非常频繁地抓取,但是在本示例中希望更快地进行指标的更新。

其次,为了将Prometheus与Ignite对接,添加了几个抓取配置,它们引用本地主机上运行的2个Ignite节点。

global:
  scrape_interval:     15s
  evaluation_interval: 15s

alerting:
  alertmanagers:
  - static_configs:
    - targets:

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

scrape_configs:
  - job_name: 'ignite node 1'
    static_configs:
    - targets: ['localhost:9000']
  - job_name: 'ignite node 2'
    static_configs:
    - targets: ['localhost:9001']
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']

通过JMX查看Ignite指标

Prometheus启动之后,如果要做到数据可视化,需要使用一个导出器来发送指标数据。因为Prometheus是一个Java应用,所以开发者通常首先关注的是Ignite的JMX Beans,JMX是Java标准API,可用于在运行时查看JVM的指标。

Prometheus有一个JMX导出器,可将其作为Ignite与Prometheus之间的桥梁。

然后需要这个导出器以Java代理的形式运行:

$ bin/ignite.sh -v $PROJECT/config/myconfig.xml -J-javaagent:$MYLIBS/jmx_prometheus_javaagent-0.14.0.jar=9000:$PROJECT/config/prometheus.yml

或者也可以使用jmx_prometheus_httpserver这个服务端,如果使用该服务端,需要在JMX导出器配置中添加hostPort参数,以将JMX导出器指向Ignite的JMX端口。

最后,该方案仅适用于Ignite2.8之前的版本,在2.8及之后的版本中,指标系统发生了很大的变化,该更新导致了Prometheus不兼容新的格式,该问题后续会解决。

通过OpenCensus查看Ignite指标

OpenCensus是Prometheus原生支持的跨平台指标收集和追踪格式,Ignite在新版本中也实现了对OpenCensus的支持。

在使用OpenCensus之前,需要先启用它,做法是将$IGNTE_HOME/libs/optional/ignite-opencensus文件夹上移一层(至$IGNITE_HOME/libs)。

除此之外,还需要注册统计指标收集器,和为指标启动一个传输器(一个Web服务器)。

最简单的方法是在Ignite配置文件中添加一些额外的bean:

<bean id="opencensusWrapper" class="org.springframework.beans.factory.config.MethodInvokingBean">
    <property name="staticMethod" value="io.opencensus.exporter.stats.prometheus.PrometheusStatsCollector.createAndRegister"/>
</bean>

<bean id="httpServer" class="io.prometheus.client.exporter.HTTPServer">
    <constructor-arg type="java.lang.String" value="localhost"/>
    <constructor-arg type="int" value="9000"/>
    <constructor-arg type="boolean" value="true"/>
</bean>

第一个bean告诉OpenCensus开始收集和导出指标,第二个在端口9000上启动Web服务器,Web服务器在Ignite和Prometheus之间建立连接。

在启动节点之前,还需要将Prometheus的JAR文件添加到USER_LIBS环境变量中。

可以通过在浏览器中打开http://localhost:9000来确认指标已正确导出。如果看到一长串指标,则说明导出器工作正常。可能需要等待一两分钟,才能看到完整的列表。显示列表后,就可以打开Prometheus(http://localhost:9090/)并创建基于指标的图形和警报。

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部