1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        SpringBoot+Prometheus+Grafana 實現(xiàn)自定義監(jiān)控

        共 7644字,需瀏覽 16分鐘

         ·

        2022-12-18 09:56

        點擊關(guān)注公眾號,Java干貨及時送達(dá)

        • Spring Boot 工程集成 Micrometer
          • 引入依賴
          • 配置
          • 監(jiān)控jvm信息
          • 創(chuàng)建自定義監(jiān)控
          • 添加具體業(yè)務(wù)代碼監(jiān)控
        • 集成 Prometheus
          • 安裝
          • 集成配置
        • 使用 Grafana Dashboard 展示監(jiān)控項
          • 安裝grafana
          • 配置prometheus數(shù)據(jù)源
          • 增加jvm面板
          • 配置業(yè)務(wù)接口監(jiān)控面板

        1.Spring Boot 工程集成 Micrometer

        1.1引入依賴
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
          <groupId>io.micrometer</groupId>
          <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>
        1.2配置
        management.server.port=9003
        management.endpoints.web.exposure.include=*
        management.endpoint.metrics.enabled=true
        management.endpoint.health.show-details=always
        management.endpoint.health.probes.enabled=true
        management.endpoint.prometheus.enabled=true
        management.metrics.export.prometheus.enabled=true
        management.metrics.tags.application=voice-qc-backend

        這里management.endpoints.web.exposure.include=*配置為開啟 Actuator 服務(wù),因為Spring Boot Actuator 會自動配置一個 URL 為/actuator/Prometheus的 HTTP 服務(wù)來供 Prometheus 抓取數(shù)據(jù),不過默認(rèn)該服務(wù)是關(guān)閉的,該配置將打開所有的 Actuator 服務(wù)。

        management.metrics.tags.application配置會將該工程應(yīng)用名稱添加到計量器注冊表的 tag 中去,方便后邊 Prometheus 根據(jù)應(yīng)用名稱來區(qū)分不同的服務(wù)。

        1.3監(jiān)控jvm信息

        然后在工程啟動主類中添加 Bean 如下來監(jiān)控 JVM 性能指標(biāo)信息:

        @SpringBootApplication
        public class GatewayDatumApplication {

            public static void main(String[] args) {
                SpringApplication.run(GatewayDatumApplication.classargs);
            }

            @Bean
            MeterRegistryCustomizer<MeterRegistry> configurer(
                    @Value("${spring.application.name}")
         String applicationName) 
        {
                return (registry) -> registry.config().commonTags("application", applicationName);
            }

        }
        1.4創(chuàng)建自定義監(jiān)控

        監(jiān)控請求次數(shù)與響應(yīng)時間

        package com.lianxin.gobot.api.monitor;

        import io.micrometer.core.instrument.Counter;
        import io.micrometer.core.instrument.MeterRegistry;
        import io.micrometer.core.instrument.Timer;
        import lombok.Getter;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.beans.factory.annotation.Value;
        import org.springframework.stereotype.Component;

        import javax.annotation.PostConstruct;

        /**
         * @Author: GZ
         * @CreateTime: 2022-08-30  10:50
         * @Description: 自定義監(jiān)控服務(wù)
         * @Version: 1.0
         */

        @Component
        public class PrometheusCustomMonitor {
            /**
             * 上報撥打請求次數(shù)
             */

            @Getter
            private Counter reportDialRequestCount;
            /**
             * 上報撥打URL
             */

            @Value("${lx.call-result-report.url}")
            private String callReportUrl;

            /**
             * 上報撥打響應(yīng)時間
             */

            @Getter
            private Timer reportDialResponseTime;
            @Getter
            private final MeterRegistry registry;


            @Autowired
            public PrometheusCustomMonitor(MeterRegistry registry) {
                this.registry = registry;
            }

            @PostConstruct
            private void init() {
                reportDialRequestCount = registry.counter("go_api_report_dial_request_count""url",callReportUrl);
                reportDialResponseTime=  registry.timer("go_api_report_dial_response_time""url",callReportUrl);
            }
        }
        1.5添加具體業(yè)務(wù)代碼監(jiān)控
        //統(tǒng)計請求次數(shù)
        prometheusCustomMonitor.getReportDialRequestCount().increment();
        long startTime = System.currentTimeMillis();
        String company = HttpUtils.post(companyUrl,"");
        //統(tǒng)計響應(yīng)時間
        long endTime = System.currentTimeMillis();
        prometheusCustomMonitor.getReportDialResponseTime().record(endTime-startTime, TimeUnit.MILLISECONDS);

        在瀏覽器訪問http://127.0.0.1:9001/actuator/prometheus,就可以看到服務(wù)的一系列不同類型 metrics 信息,例如jvm_memory_used_bytes gauge、jvm_gc_memory_promoted_bytes_total counter,go_api_report_dial_request_count

        到此,Spring Boot 工程集成 Micrometer 就已經(jīng)完成,接下里就要與 Prometheus 進(jìn)行集成了。

        2.集成 Prometheus

        2.1安裝
        docker pull prom/prometheus
        mdkir /usr/local/prometheus
        vi prometheus.yml
        # 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:
          # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
          - job_name: 'prometheus'

            # metrics_path defaults to '/metrics'
            # scheme defaults to 'http'.

            static_configs:
            - targets: ['192.168.136.129:9090']
        docker run -d --name prometheus -p 9090:9090 -v/usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
        2.2集成配置
        global:
          scrape_interval: 15s

        scrape_configs:
          - job_name: "prometheus"
            static_configs:
            - targets: ["localhost:9090"]
          - job_name: "metricsLocalTest"
            metrics_path: "/actuator/prometheus"
            static_configs:
            - targets: ["localhost:9003"]

        這里localhost:9001就是上邊本地啟動的服務(wù)地址,也就是 Prometheus 要監(jiān)控的服務(wù)地址。同時可以添加一些與應(yīng)用相關(guān)的標(biāo)簽,方便后期執(zhí)行 PromSQL 查詢語句區(qū)分。最后重啟 Prometheus 服務(wù)

        3.使用 Grafana Dashboard 展示監(jiān)控項

        3.1安裝grafana
         docker pull grafana/grafana
        docker run -d --name grafana -p 3000:3000 -v /usr/local/grafana:/var/lib/grafana grafana/grafana

        默認(rèn)用戶名/密碼 admin/admin

        3.2配置prometheus數(shù)據(jù)源
        3.3增加jvm面板

        模板編號為4701

        3.4配置業(yè)務(wù)接口監(jiān)控面板

        來源:blog.csdn.net/GZ946/article/details/126619218

           

        1、千萬別第一個下班!還怪嚇人的...

        2、閏秒將死:閏秒是什么?為什么會導(dǎo)致系統(tǒng)崩潰?

        3、馬斯克用8美元把西方社會搞亂了

        4、騰訊43億QQ號碼用完后怎么辦?

        5、計算機(jī)科班出身的優(yōu)勢?

        點在看

        瀏覽 66
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产品自拍| 娇妻被交换粗又大又硬动图 | 不卡片| 国产日韩欧美一区二区深夜久久 | 国产18毛片 | 奇米伊人网| 日本中文字幕有码 | 久久久久久久久久免费 | 国产又黄视频 | 成人在线免费网站 |