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、配置文件(application.yml)增加应用名称
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”,可以实现与普罗米修斯的对接。
6、附录
如果出现POST、PUT和DELETE方法无法访问,请增加如下代码配置。
- Vue项目集成前端异常监控工具Sentry(二)-内网部署Sentry服务
- [java]微服务架构连载No4 Hystrix+Dashboard+Turbine实现断路器(限流,超时,异常...)和服务监控
- docker持续集成部署、csphere监控平台【转:http://blog.csdn.net/java_dyq/article/details/51997024】
- spring集成Java性能监控调优工具-Javamelody
- 用python监控java服务脚本(1)
- springcloud集成hystrix-dashboard服务监控
- Java消息服务JMS 传输集群监控
- Java 手机与空间制图服务(WMS)应用集成
- Java 手机与空间制图服务(WMS)应用集成
- Java集成个推实现简单推送服务
- JAVA SPRING CXF集成创建WebService服务
- 如何将 MySQL 数据库集成到 Java Spring Boot GraphQL 服务中
- java+maven集成极光推送服务
- java 通过配制tomcat监控服务资源信息
- Spring最佳实践- 9.3 集成Java消息服务
- Java高级应用(一个)-文件夹监控服务
- 集成支付宝支付服务流程详解[面向 java c# php]
- 学习笔记:微服务-19 Hystrix-Turbine集成监控
- redislive监控redis服务的图文教程_动力节点Java 学院整理
- Spring/Spring Boot微服务项目 集成Druid 实现监控功能