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”,可以实现与普罗米修斯的对接。
Java微服务监控及与普罗米集成的更多相关文章
- 普罗米修斯!Ubuntu下prometheus监控软件安装使用
*Prometheus* 是一个开源的服务监控系统和时间序列数据库 官方网站:prometheus.io 一.安装prometheus cd /usr/local/ #进入安装目录 wg ...
- 第七模块 :微服务监控告警Prometheus架构和实践
119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...
- 一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起
上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本 ...
- 监控神器-普罗米修斯Prometheus的安装
搬砖党的福音:普罗米修斯-监控神器 功能: 在业务层用作埋点系统 Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端).我们可以通过客户 ...
- 现如今,最热门的13个Java微服务框架
曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...
- Java微服务 vs Go微服务,究竟谁更强!?
前言 Java微服务能像Go微服务一样快吗? 这是我最近一直在思索地一个问题. 去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nels ...
- 普罗米修斯+grafana监控k8s
其实现原理有点类似ELK.node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统
业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件. spring-b ...
- 从成本角度看Java微服务
近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务.IBM也于近日开源了轻量级Java微服务应用服务器 Open Liberty .但是采用 ...
随机推荐
- Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples
目录 概 主要内容 Obfuscated Gradients BPDA 特例 一般情形 EOT Reparameterization 具体的案例 Thermometer encoding Input ...
- [opencv]drawContours 示例
vector<vector<Point>> contours; vector<Vec4i> hierarchy; findContours(img_canny,co ...
- Java初学者作业——学生成绩等级流程图练习
返回本章节 返回作业目录 在Word 中编写算法实现学生成绩等级的输出,并绘制对应算法的流程图. 功能要求:输入学生成绩,输出对应成绩等级,输出规则如下: 学生成绩区间 对应成绩等级 [90,100] ...
- 编写Java程序,在电脑硬盘里,查看 f:\text4\name 目录是否存在。
查看本章节 查看作业目录 需求说明: 在电脑硬盘里,查看 f:\text4\name 目录是否存在.如果不存在,则创建该目录:如果存在,则查找 readme.txt文件是否存在.如果 readme.t ...
- Vulnhub实战-rtemis靶机👻
Vulnhub实战-rtemis靶机 下载地址:http://www.vulnhub.com/entry/r-temis-1,649/ 描述 通过描述我们知道这个靶机有两个flag 主机发现 通过nm ...
- vue3获取当前路由
正解 使用useRouter: // router的 path: "/user/:uid" <template> <div>user</div> ...
- gRPC创建Java RPC服务
1.说明 本文介绍使用gRPC创建Java版本的RPC服务, 包括通过.proto文件生成Java代码的方法, 以及服务端和客户端代码使用示例. 2.创建生成代码工程 创建Maven工程,grpc-c ...
- Swoole 中使用 Atomic 实现进程间无锁计数器
使用示例: $atomic = new Swoole\Atomic(); $serv = new Swoole\Server('127.0.0.1', '9501'); $serv->set([ ...
- Python + Selenium 定位非selected型下拉框的方法
最近在尝试给自己负责的模块写UI自动化的Demo 登录及切换页面比较顺利 但是遇到下拉框的选择时,遇到了一点困难 我负责的模块页面的下拉框并非Select类型,无法使用select_by_index ...
- 初识python: 装饰器
定义: 本质是函数,功能是"装饰"其它函数,即为其他函数添加附加功能原则: 1.不能修改被装饰函数的源代码: 2.不能修改被装饰函数的调用方式实现装饰器知识储备: 1.函数即&qu ...