Prometheus Springboot集成展示JVM

icrometer

Micrometer为最流行的监控系统提供了一个简单的仪表客户端外观,允许仪表化JVM应用,而无需关心是哪个供应商提供的指标。它的作用和SLF4J类似,只不过它关注的不是Logging(日志),而是application metrics(应用指标)。简而言之,它就是应用监控界的SLF4J。
官网:http://micrometer.io/

 

 

 

集成prometheus

springboot配置

在SpringBoot中使用Prometheus其实很简单,不需要配置太多的东西,在pom文件中加入依赖,完整内容如下所示。

  • 步骤
  1. 添加pom依赖
<!--保证web引入-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
<!--prometheus-->
 <dependency>
   <groupId>io.micrometer</groupId>
   <artifactId>micrometer-registry-prometheus</artifactId>
   <version>1.2.0</version>
 </dependency>
  1. 添加yml文件配置
#监控相关
management:
  metrics:
    tags:
      application: ${spring.application.name}
    export:
      simple:
        enabled: false
  endpoints:
    web:
      exposure:
        include: "*"
        exclude: env, beans
  endpoint:
    shutdown:
      enabled: true
  1. 修改启动类,添加micrometer ,MeterRegistry configurer
@EnableCaching
public class CmsBootApp {
    private static Logger logger = LogManager.getLogger(CmsBootApp.class);
    public static void main(String[] args) {
        SpringApplication.run(CmsBootApp.class, args);
        logger.info("CmsBootApp 启动成功!");
    }

    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(
            @Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }
}
  1. 如果系统存在拦截器,修改拦截器,允许prometheus接口采集
@Configuration
public class SecurityConfig {

    /**
     * 先走 filter ,然后 filter 如果检测到请求头存在 token,则用 token 去 login,走 Realm 去验证
     */
    @Bean
    public ShiroFilterFactoryBean factory(SecurityManager securityManager) {
        ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean();

        // 添加自己的过滤器并且取名为jwt
        Map<String, Filter> filterMap = new LinkedHashMap<>();
        //设置我们自定义的JWT过滤器
        filterMap.put("jwt", new JWTFilter());
        factoryBean.setFilters(filterMap);
        factoryBean.setSecurityManager(securityManager);
        // 设置无权限时跳转的 url;
        factoryBean.setUnauthorizedUrl("/auth/unauthorized/");
        Map<String, String> filterRuleMap = new HashMap<>();
        // 所有请求通过我们自己的JWT Filter
        filterRuleMap.put("/**", "jwt");
        // 访问 /unauthorized/** 不通过JWTFilter
        filterRuleMap.put("/auth/**", "anon");
        filterRuleMap.put("/actuator/**", "anon"); //保证不拦截接口,才能被prometheus采集数据
        filterRuleMap.put("/api/**", "anon");//保证不拦截接口,才能被prometheus采集数据
        factoryBean.setFilterChainDefinitionMap(filterRuleMap);
        return factoryBean;
    }
  1. 新增prometheus.yml增加节点配置
 - job_name: 'CMS-BOOT'
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['192.168.1.128:8091']

至此,prometheus结合springboot已完成成功采集。

 

0人点赞

 

技术分享

 



作者:水饺鲜生
链接:https://www.jianshu.com/p/62e701eff59b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值