Springboot+actuator+prometheus+Grafana集成

这篇具有很好参考价值的文章主要介绍了Springboot+actuator+prometheus+Grafana集成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本次示例以Windows示例

推荐到官网去下载:Windows版的应用程序

下载最新版 prometheus-2.37.8.windows-amd64 压缩包:解压就行

Springboot+actuator+prometheus+Grafana集成

下载最新版 grafana-9.5.2 压缩包:解压就行

Springboot+actuator+prometheus+Grafana集成

准备一个Springboot的项目:

导入相关的监控依赖


        <!--监控站点开启-->
        <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.10.5</version>
        </dependency>


        <!--SpringSecurity 安全访问-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

springSecurity的配置

#springSecurity 配置
spring.security.user.name=root
spring.security.user.password=root
spring.security.user.roles=ADMIN

spring-actuator配置

#增加开启springboot actuator监控的配置
management:
  endpoint:
    shutdown:
      enabled: true # 开启端点
    health:
      show-details: always # 是否展示健康检查详情
  endpoints:
    web:
      exposure:
        include:
          - prometheus
          - health
  metrics:
    tags:
      application: ${spring.application.name}

springSecurity的白名单接口配置-SecurityConfig

package com.gton.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

/**
 * @description:
 * @author: GuoTong
 * @createTime: 2023-06-01 21:44:49
 * @since JDK 1.8 OR 11
 **/

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.formLogin().and().authorizeRequests()
                .antMatchers("/actuator/**", "/favicon.ico", "/doc.html").permitAll()
                .antMatchers("/static/**").permitAll()
                .antMatchers("/favicon.ico").permitAll()
                // swagger
                .antMatchers("/swagger**/**").permitAll()
                .antMatchers("/webjars/**").permitAll()
                .antMatchers("/v2/**").permitAll()
                .anyRequest().authenticated().and().csrf().disable();    //关闭csrf保护
    }

    /**
     * Description: 忽略一些借口
     *
     * @author: GuoTong
     * @date: 2023-06-01 21:44:49
     * @return:
     */
    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring()
                .antMatchers(
                        "/doc.html",
                        "/swagger-resources/configuration/ui",
                        "/swagger*",
                        "/swagger**/**",
                        "/webjars/**",
                        "/favicon.ico",
                        "/**/*.css",
                        "/**/*.js",
                        "/**/*.png",
                        "/**/*.gif",
                        "/v2/**",
                        "/**/*.ttf",
                        "/actuator/**"
                );
    }
}

springboot的相关的配置


    @Value("${auth.global.enable:false}")
    private boolean enableGlobalAuth;

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }


    /**
     * Description:  添加全局跨域CORS处理
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 设置允许跨域的路径
        registry.addMapping("/**")
                //设置允许跨域请求的域名
                .allowedOrigins("http://127.0.0.1:8787")
                // 是否允许证书
                .allowCredentials(true)
                // 设置允许的方法
                .allowedMethods("GET", "POST", "DELETE", "PUT")
                // 设置允许的header属性
                .allowedHeaders("*")
                // 跨域允许时间
                .maxAge(3600);
    }


    /**
     * Description: 静态资源过滤
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //ClassPath:/Static/** 静态资源释放
        registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
        //释放swagger
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        //释放webjars
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    /**
     * 解决springboot升到2.6.x之后,knife4j报错
     *
     * @param webEndpointsSupplier        the web endpoints supplier
     * @param servletEndpointsSupplier    the servlet endpoints supplier
     * @param controllerEndpointsSupplier the controller endpoints supplier
     * @param endpointMediaTypes          the endpoint media types
     * @param corsEndpointProperties      the cors properties
     * @param webEndpointProperties       the web endpoints properties
     * @param environment                 the environment
     * @return the web mvc endpoint handler mapping
     */
    @Bean
    public WebMvcEndpointHandlerMapping webMvcEndpointHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier,
                                                                     ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsEndpointProperties, WebEndpointProperties webEndpointProperties,
                                                                     Environment environment) {
        List<ExposableEndpoint<?>> allEndpoints = new ArrayList<>();
        Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
        allEndpoints.addAll(webEndpoints);
        allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
        allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
        String basePath = webEndpointProperties.getBasePath();
        EndpointMapping endpointMapping = new EndpointMapping(basePath);
        boolean shouldRegisterLinksMapping = shouldRegisterLinksMapping(webEndpointProperties, environment, basePath);
        return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsEndpointProperties.toCorsConfiguration(), new EndpointLinksResolver(
                allEndpoints, basePath), shouldRegisterLinksMapping, null);
    }

    /**
     * shouldRegisterLinksMapping
     *
     * @param webEndpointProperties
     * @param environment
     * @param basePath
     * @return
     */
    private boolean shouldRegisterLinksMapping(WebEndpointProperties webEndpointProperties, Environment environment, String basePath) {
        return webEndpointProperties.getDiscovery().isEnabled() && (StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
    }

    /**
     * Description:  过滤器
     *
     * @param registry
     * @author: GuoTong
     * @date: 2023-06-03 12:32:39
     * @return:void
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(new MicrometerTPSInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/doc.html")
                .excludePathPatterns("/swagger-resources/**")
                .excludePathPatterns("/webjars/**")
                .excludePathPatterns("/v2/**")
                .excludePathPatterns("/favicon.ico")
                .excludePathPatterns("/sso/**")
                .excludePathPatterns("/swagger-ui.html/**");
    }


    /**
     * Description:  Bean 如下来监控 JVM 性能指标信息:
     * http://localhost:8889/actuator/prometheus 指标地址
     *
     * @param applicationName
     * @author: GuoTong
     * @date: 2023-06-03 12:34:36
     * @return:org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer<io.micrometer.core.instrument.MeterRegistry>
     */
    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {

        return registry -> registry.config().commonTags("application", applicationName);
    }

启动访问监控

-actuator的看板:http://localhost:port/actuator

Springboot+actuator+prometheus+Grafana集成

-prometheus的看板:http://localhost:port/actuator/prometheus

Springboot+actuator+prometheus+Grafana集成

配置Prometheus的对于本Springboot微服务站点的监控

Springboot+actuator+prometheus+Grafana集成

添加配置 以下内容为SpringBoot应用配置

# Prometheus  启动完成之后 http://localhost:9090/targets
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['127.0.0.1:9090']
  ###以下内容为SpringBoot应用配置
  - job_name: 'BackStageApp'
    scrape_interval: 5s
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['127.0.0.1:8889']
        labels:
          instance: "BackStageApp-prometheus"
          service: "BackStageApp-8889-prometheus"

点击这个执行:prometheus的应用

Springboot+actuator+prometheus+Grafana集成

启动成功如下

Springboot+actuator+prometheus+Grafana集成

访问prometheus的应用:http://localhost:9090/

Springboot+actuator+prometheus+Grafana集成

可以点击链接跳转

Springboot+actuator+prometheus+Grafana集成

显示的是:http://sky-20200720fyp:8889/actuator/prometheus
说明Prometheus配置完成

然后启动Grafana

Springboot+actuator+prometheus+Grafana集成

启动成功如下:初始化--启动有点久,耐性一点

Springboot+actuator+prometheus+Grafana集成

打开Grafana看板:http://localhost:3000/login

首次登录使用 admin:admin 然后可以设置自己的账号密码,也可以跳过Skip

Springboot+actuator+prometheus+Grafana集成

第一次进入如下

Springboot+actuator+prometheus+Grafana集成

配置Prometheus的数据源

第一步选这个管理配置菜单

Springboot+actuator+prometheus+Grafana集成

第二步选这个Datasorce

Springboot+actuator+prometheus+Grafana集成

第三步选这个添加新的Datasorce

Springboot+actuator+prometheus+Grafana集成

第四步选这个Prometheus数据源

Springboot+actuator+prometheus+Grafana集成

第五步配置Prometheus数据源的地址和名称,然后保存

Springboot+actuator+prometheus+Grafana集成

Springboot+actuator+prometheus+Grafana集成

第六步配置Prometheus的看板

Springboot+actuator+prometheus+Grafana集成

导入对应的监控 JVM 的 Dashboard 模板,模板编号为 4701。,点击load

Springboot+actuator+prometheus+Grafana集成
Springboot+actuator+prometheus+Grafana集成

填写这些必填项;导入自动加载后其他可以不用管,必须选择下面的刚刚配置的prometheus数据源,然后选择import

Springboot+actuator+prometheus+Grafana集成

第七步监控JVM

上一步点击然后选择import,会进入这个界面,什么都没有

Springboot+actuator+prometheus+Grafana集成

选择自己项目的站点配置的application和instance就行了,刷新左上角的时间

Springboot+actuator+prometheus+Grafana集成

很多看板自己研究把

Springboot+actuator+prometheus+Grafana集成

创建文件组

Springboot+actuator+prometheus+Grafana集成

可以把监控看板移加入分类分组

Springboot+actuator+prometheus+Grafana集成文章来源地址https://www.toymoban.com/news/detail-469648.html

到了这里,关于Springboot+actuator+prometheus+Grafana集成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Grafana集成prometheus(4.Grafana添加预警)

    上文已经完成了grafana对prometheus的集成及数据导入,本文主要记录grafana的预警功能(以内存为例) databorard面板点击edit,下方有个Alert的tab,创建Alert rules依赖contact points,可以先随便填写再修改 Alerting 上面入口创建后也会同步到此处 添加推送名称 选择DingDing, 钉钉URL获取参考

    2024年02月14日
    浏览(39)
  • Grafana集成prometheus(3.Grafana添加promethus数据)

    选择Connections - Datasources,点击Add New data source,填写Promitheus Server Url,点击 save test完成配置 选择prometheus数据库 选择code 填入对应的查询公式(监控公式参考Prometheus监控公式) 修改面板名称Title 点击save 百度可以获取常见用途的公式,mark备用。

    2024年02月14日
    浏览(55)
  • prometheus部署及钉钉告警集成Grafana

    安装包 📎alertmanager-0.23.0.linux-amd64.tar.gz 📎node_exporter-1.3.1.linux-amd64.tar.gz 📎prometheus-webhook-dingtalk-1.4.0.linux-amd64.tar.gz 服务端口 Prometheus 9090 node_exporter 9100 alertmanager 9093 prometheus-webhook-dingtalk 8060 #修改配置文件之前先备份 /usr/local /usr/local /usr/local/prometheus/prometheus.yml /usr/lib/syste

    2024年02月11日
    浏览(40)
  • Prometheus部署指南:安装、配置、启动及与Grafana集成详细说明

    了解如何部署Prometheus,包括安装、配置、启动以及与Grafana的集成方法。适合需要监控和可视化大规模指标数据的用户。

    2023年04月15日
    浏览(37)
  • 05. Springboot admin集成Actuator(一)

    目录 1、前言 2、Actuator监控端点 2.1、健康检查 2.2、信息端点 2.3、环境信息 2.4、度量指标 2.5、日志文件查看 2.6、追踪信息 2.7、Beans信息 2.8、Mappings信息 3、快速使用 2.1、添加依赖 2.2、添加配置文件 2.3、启动程序 4、自定义端点Endpoint 5、自定义health 6、附录 7、小结 Spring B

    2024年02月04日
    浏览(32)
  • 06. Springboot admin集成Actuator(二)

    目录 1、前言 2、快速使用 2.1、服务端集成 2.1.1、添加依赖 2.1.2、配置启动类 2.1.3、配置application.yml 2.1.4、定制security config 2.1.5、启动程序 2.2、客户端集成 2.2.1、添加依赖 2.2.2、配置application.yml 2.2.3、启动程序 2.3、告警通知 2.3.1、邮件通知 2.3.2、Notifier 接口 在《Springboot a

    2024年02月03日
    浏览(32)
  • SpringBoot3 整合Prometheus + Grafana

    通过Prometheus + Grafana对线上应用进行观测、监控、预警… 健康状况【组件状态、存活状态】Health 运行指标【cpu、内存、垃圾回收、吞吐量、响应成功率…】Metrics … 1. 基本使用 1. 场景引入 2. 暴露指标 3. 访问数据 访问 http://localhost:8080/actuator;展示出所有可以用的监控端点

    2024年02月14日
    浏览(40)
  • SpringBoot+Prometheus+Grafana搭建应用监控系统

    SpringBoot的应用监控方案比较多,SpringBoot+Prometheus+Grafana是比较常用的一种解决方案,主要的监控数据的处理逻辑如下: SpringBoot 的 actuator 提供了应用监控端点,可以对外暴露监控数据信息。 Prometheus 是监控系统,可以从 Springboot 采集监控数据,以时序数据的形式存储,并对外

    2024年01月22日
    浏览(55)
  • SpringBoot+Prometheus+Grafana 监控面板(项目配置方式【入侵】)

    提示:本文使用SpringBoot 简单样例,介绍基础配置和使用方法 包含内容:Docker、SpringBoot、Maven、 Prometheus、Grafana等 提示:本文包含官网内容介绍,具体更项目的学习,请参照各官网文档,谢谢 官网:https://prometheus.io/ 文档地址:https://prometheus.io/docs/introduction/overview/ 使用领先

    2024年02月16日
    浏览(48)
  • SpringBoot+Prometheus+Grafana实现系统可视化监控

    SpringBoot中集成Actuator实现监控系统运行状态: SpringBoot中集成Actuator实现监控系统运行状态_springboot actuator 获取系统运行时长_霸道流氓气质的博客-CSDN博客 基于以上Actuator实现系统监控,还可采用如下方案。 Prometheus,是一个开源的系统监控和告警的工具包,其采用Pull方式采集

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包