一、    背景说明

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微服务监控及与普罗米集成的更多相关文章

  1. 普罗米修斯!Ubuntu下prometheus监控软件安装使用

    *Prometheus* 是一个开源的服务监控系统和时间序列数据库 官方网站:prometheus.io 一.安装prometheus cd /usr/local/        #进入安装目录 wg ...

  2. 第七模块 :微服务监控告警Prometheus架构和实践

    119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...

  3. 一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起

    上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本 ...

  4. 监控神器-普罗米修斯Prometheus的安装

    搬砖党的福音:普罗米修斯-监控神器 功能: 在业务层用作埋点系统 Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端).我们可以通过客户 ...

  5. 现如今,最热门的13个Java微服务框架

    曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...

  6. Java微服务 vs Go微服务,究竟谁更强!?

    前言 Java微服务能像Go微服务一样快吗? 这是我最近一直在思索地一个问题. 去年8月份的the Oracle Groundbreakers Tour 2020 LATAM大会上,Mark Nels ...

  7. 普罗米修斯+grafana监控k8s

    其实现原理有点类似ELK.node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过 ...

  8. SpringCloud微服务实战——搭建企业级开发框架(四十四):【微服务监控告警实现方式一】使用Actuator + Spring Boot Admin实现简单的微服务监控告警系统

      业务系统正常运行的稳定性十分重要,作为SpringBoot的四大核心之一,Actuator让你时刻探知SpringBoot服务运行状态信息,是保障系统正常运行必不可少的组件.   spring-b ...

  9. 从成本角度看Java微服务

    近年来,微服务因其良好的灵活性和伸缩性等特点备受追捧,很多公司开始采用微服务架构或将已有的单体系统改造成微服务.IBM也于近日开源了轻量级Java微服务应用服务器 Open Liberty .但是采用 ...

随机推荐

  1. BL8810|USB 2.0单芯片解决方案闪存读卡器|BL8810替代GL823K

    创惟GL823K是一款USB 2.0单LUN读卡器控制器,可支持SD/MMC/MSPRO闪存卡.它支持USB 2.0高速传输,将Digital TM(SD).SDHC.SDXC.Mini DTM.Mi ...

  2. Java初学者作业——输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和(实践2)

    返回本章节 返回作业目录 需求说明: 编写Java程序,输入一个五位数字,计算各位数字之和并输出,运行结果为五个数字之和. 实现思路: (1)声明变量num,用于存储用户输入的数字. (2)通过Sca ...

  3. Java初学者作业——完成对已定义类(Admin)的对象的创建。并完成属性的赋值和方法的调用。

    返回本章节 返回作业目录 需求说明: 完成对已定义类(Admin)的对象的创建.并完成属性的赋值和方法的调用. 实现思路: 创建 MyTest 类,并添加 main函数. 在 main函数中完成对 A ...

  4. Java初学者作业——定义英雄类(Hero),英雄类中的属性包括:姓名、攻击力、防御力、生命值和魔法值;方法包括:攻击、介绍。

    返回本章节 返回作业目录 需求说明: 定义英雄类(Hero),英雄类中的属性包括:姓名.攻击力.防御力.生命值和魔法值:方法包括:攻击.介绍. 实现思路: 分析类的属性及其变量类型. 分析类的方法及其 ...

  5. MySQL数据操作与查询笔记 • 【第7章 连接查询】

    全部章节   >>>> 本章目录 7.1 内连接查询 7.1.1 交叉连接(笛卡尔积) 7.1.2 内连接查询概要 7.1.3 内连接案例 7.1.4 自然连接 7.2 多表连 ...

  6. 编写Java程序,实现多线程操作同一个实例变量的操作会引发多线程并发的安全问题。

    查看本章节 查看作业目录 需求说明: 多线程操作同一个实例变量的操作会引发多线程并发的安全问题.现有 3 个线程代表 3 只猴子,对类中的一个整型变量 count(代表花的总数,共 20 朵花)进行操 ...

  7. Java高级程序设计笔记 • 【第2章 多线程(一)】

    全部章节   >>>> 本章目录 2.1 线程的概述 2.1.1 进程 2.1.2 多线程优势 2.1.3 Thread 类 2.1.4 实践练习 2.2 Runnable接口 ...

  8. JMeter_csv文件参数化

    CSV Data Set Config 可以从指定的文件中一行一行的提取文本内容,每行的数据通过分隔符拆解,并与变量名一一对应,就可以供取样器引用了. 所以在配置数据时,我们需要把参数化的数据进行分行 ...

  9. [ vue ] 监听v-model数据的变化,只要有变化就改变vuex的state值

    场景描述: 1. 注册弹出框是用 v-model 绑定数据  showRegisterModal  实现的,点击遮罩层框架会把  showRegisterModal=false 2.REGISTER按 ...

  10. java mapreduce二次排序

    原文链接: https://www.toutiao.com/i6765808056191156748/ 目的: 二次排序就是有下面的数据 a 3 a 1 a 100 c 1 b 2 如果只按照abc排 ...