美文网首页
Prometheus快速入门(三):Springboot集成展示

Prometheus快速入门(三):Springboot集成展示

作者: 水饺鲜生 | 来源:发表于2020-07-22 10:27 被阅读0次

micrometer

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已完成成功采集。

相关文章

网友评论

      本文标题:Prometheus快速入门(三):Springboot集成展示

      本文链接:https://www.haomeiwen.com/subject/vqhzkktx.html