文章目录
- JVM监控搭建
- 整体架构
- Jolokia
- Telegraf
- Influxdb
- Grafana
JVM监控搭建
整体架构
JVM 的各种内存信息,会通过 JMX 接口进行暴露。
Jolokia 组件负责把 JMX 信息翻译成容易读取的 HTTP 请求。Telegraf 组件作为一个通用的监控 agent,和 JVM 进程部署在同一台机器上,通过访问转化后的 HTTP 接口,以固定的频率拉取监控信息。然后把这些信息存放到 Influxdb 时序数据库中。最后,通过 Grafana 展示组件,设计 JVM 监控图表。
整个监控组件是可以热拔插的,并不会影响原有服务。监控部分也可以复用,比如 Telegraf 就可以很容易的进行操作系统监控。
Jolokia
Jolokia 就是一个将 JMX 转换成 HTTP 的适配器,方便了 JMX 的使用。
Jokokia 可以通过 jar 包和 agent 的方式启动,在一些框架中,比如 Spring Boot 中,很容易进行集成。直接在 pom 文件里加入 Jokokia 的依赖,在 application.yml 中简单地加入一点配置,就可以通过 HTTP 接口访问 JMX 的内容了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
management:
endpoints:
web:
exposure:
include: jolokia
Telegraf
Telegraf 是一个监控数据收集工具,支持非常丰富的监控类型,其中就包含内置的 Jolokia 收集器。
Influxdb
influxdb 是一个性能和压缩比非常高的时序数据库,在中小型公司非常流行。
在 CentOS 环境中,可以使用下面的命令下载。
wget -c https://dl.influxdata.com/influxdb/releases/influxdb-1.7.9_linux_amd64.tar.gz
tar xvfz influxdb-1.7.9_linux_amd64.tar.gz
解压后,然后使用 nohup 进行启动。
nohup ./influxd &
InfluxDB 将在 8086 端口进行监听。
Grafana
Grafana 是一个颜值非常高的监控展示组件,支持非常多的数据源类型,对 influxdb 的集成度也比较高。
Grafana 的安装
wget -c https://dl.grafana.com/oss/release/grafana-6.5.3.linux-amd64.tar.gz
tar -zxvf grafana-6.5.3.linux-amd64.tar.gz
在导入之前,还需要创建一个数据源,选择 influxdb,填入 db 的地址即可。