1 安装grafana
docker pull grafana/grafana
docker run -d --name grafana -p 3000:3000 grafana/grafana
2 安装Prometheus
https://github.com/prometheus/prometheus/releases/download/v2.15.1/prometheus-2.15.1.linux-amd64.tar.gz
#解压
vim prometheus.yml
#启动应用
./prometheus
3 应用程序端
SpringBoot Actuator
1 引入依赖
<!-- 这个依赖的作用就是会开启一个endpoint,输出兼容Prometheus exporter的结果,方便Prometheus来采集。 -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2 开启配置
server:
port: 9012
management:
endpoints:
web:
exposure:
include: prometheus
metrics:
tags:
application: ${spring.application.name}
spring:
application:
name: jvm-watch
3 访问
http://127.0.0.1:8888/actuator
提供的信息如下表
路径 | 描述 | 默认开启 |
---|---|---|
/beans | 显示容器的全部的Bean,以及它们的关系 | Y |
/env | 获取全部环境属性 | Y |
/env/{name} | 根据名称获取特定的环境属性值 | Y |
/health | 显示健康检查信息 | Y |
/info | 显示设置好的应用信息 | Y |
/mappings | 显示所有的@RequestMapping信息 | Y |
/metrics | 显示应用的度量信息 | Y |
/scheduledtasks | 显示任务调度信息 | Y |
/httptrace | 显示Http Trace信息 | Y |
/caches | 显示应用中的缓存 | Y |
/conditions | 显示配置条件的匹配情况 | Y |
/configprops | 显示@ConfigurationProperties的信息 | Y |
/loggers | 显示并更新日志配置 | Y |
/shutdown | 关闭应用程序 | N |
/threaddump | 执行ThreadDump | Y |
/headdump | 返回HeadDump文件,格式为HPROF | Y |
/prometheus | 返回可供Prometheus抓取的信息 | Y |
4 访问
可以看到我们已经有了prometheus的数据
http://127.0.0.1:8888/actuator/prometheus
4 整合Grafana
我们将上面准备好的应用部署到服务上然后对prometheus做如下配置:
在prometheus.yml中进行配置
- job_name: 'jvm_demo'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['10.0.4.5:8888']
然后访问地址:http://ip:9090/targets (prometheus的地址默认就是9090)看到up状态说明我们刚刚jvm这个节点可以用了。
然后我们在Grafana新建一个数据源:
填prometheus地址:ip:9090
然后我们加载一个模板:
12856
下面你就可以得到一个有点炫酷的界面,来实时的监控服务堆内存的情况。