概述
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/
)并创建基于指标的图形和警报。