Java微服务监控及与普罗⽶修斯集成
⼀、背景说明
Java服务级监控⽤于对每个应⽤占⽤的内存、线程池的线程数量、restful调⽤数量和响应时间、JVM状态、GC信息等进⾏监控,并可将指标信息同步⾄普罗⽶修斯中集中展⽰和报警。⽹上类似的⽂章较多,内容长且时间较旧,本⽂所写内容已经过实践验证,可快速帮助你实现集成。
⼆、监控⽅案说明
本监控⽅案仅⽤于SpringBoot 2项⽬。通过在服务中引⼊actuator组件实现与普罗⽶修斯的集成。由于actuator有⼀定的安全隐患,本⽂也着重介绍了如何实现授权访问。
三、⽅案详情
1、引⼊spring actuator及spring security
Actuator⽤于收集微服务的监控指标包括内存使⽤、GC、restful接⼝调⽤时长等信息。为避免敏感信息泄露的风险,还需要同时使⽤spring security框架以实现访问actuator端点时的授权控制。“micrometer-registry-prometheus”⽤于将您的微服务暴露为“exportor”,可直接对接普罗⽶修斯。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.8.1</version>
</dependency>
2、配置⽂件(l)增加应⽤名称
spring:
application:
name: your service name
“name”节点的值需要根据当前服务的名称填写,建议规则如下:⼩于32字符长度;全⼩写;单词间使⽤“-”分隔。
3、配置⽂件中增加actuator配置
建议将下⾯配置放在⼆级配置⽂件(application-x,例:线上配置⽂件“application-prod”)中。配置信息的“include”节点建议仅暴露“prometheus”节点。
#name和password为您⾃定义的信息
spring:
security:
user:
name: ***
password: ***
management:
server:
port: 1234 #给actuator⼀个⾃定义端⼝,建议与服务的端⼝进⾏区分
metrics:
tags:
application: ${spring.application.name}
endpoints:
web:
base-path: /${spring.application.name}/application-monitor #安全起见,此处使⽤⾃定义地址
exposure:
include: prometheus #安全起见,仅暴露prometheus⼀个端点
4、配置spring security
为实现actuator端点访问授权,需要在启动⽂件(即包含“static void main”⽅法的⽂件)的同级任意⽬录中建⽴⼀个名为“SecurityConfig .java”的java⽂件,并将下列代码复制到类中
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.formLogin()
.and()
.httpBasic()
.and()
.authorizeRequests()
          //application-monitor为3⼩节本配置⽂件中⾃定义的actuator端点url,此处代码表⽰当访问actuator端点时,需要进⾏登录。⽤户名和密码参看3⼩节配置
.antMatchers("/**/application-monitor/**").authenticated()
.anyRequest().permitAll(); //其它业务接⼝不⽤登录
}
}
5、验证结果
配置完成后启动服务。访问服务中的查询类和命令类业务接⼝,应与引⼊“actuator”和“spring security”前⼀致。访问“ip:1234/{your service name}/application-monitor/prometheus”,应显⽰登录界⾯,如下图所⽰。
输⼊3⼩节中“spring.security.user”节点中的⽤户名与密码,显⽰如下界⾯表⽰配置成功。需要注意:务必保证测试结果与上述说明⼀致,以避免服务正常的restful接⼝⽆法被访问。
配置成功后,您的服务就变成了⼀个标准的“exportor”,可以实现与普罗⽶修斯的对接。
spring framework组件6、附录
如果出现POST、PUT和DELETE⽅法⽆法访问,请增加如下代码配置。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。