AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁(yè) > 科技  > 軟件

在SpringBoot中自定義指標(biāo)并使用Prometheus監(jiān)控報(bào)警

來源: 責(zé)編: 時(shí)間:2024-01-02 09:31:54 251觀看
導(dǎo)讀在10 分鐘教你使用Prometheus監(jiān)控Spring Boot工程中介紹了如何使用Prometheus監(jiān)控Spring Boot提供的默認(rèn)指標(biāo),這篇介紹如何自定義業(yè)務(wù)指標(biāo),并使用Prometheus進(jìn)行監(jiān)控并報(bào)警,同時(shí)在 Grafana 進(jìn)行展現(xiàn)示例介紹我們模擬一個(gè)

在10 分鐘教你使用Prometheus監(jiān)控Spring Boot工程中介紹了如何使用Prometheus監(jiān)控Spring Boot提供的默認(rèn)指標(biāo),這篇介紹如何自定義業(yè)務(wù)指標(biāo),并使用Prometheus進(jìn)行監(jiān)控并報(bào)警,同時(shí)在 Grafana 進(jìn)行展現(xiàn)7TS28資訊網(wǎng)——每日最新資訊28at.com

示例介紹

我們模擬一個(gè)賬務(wù)系統(tǒng),主要功能有:充值與提現(xiàn),其中會(huì)定義5 個(gè)業(yè)務(wù)指標(biāo),如下7TS28資訊網(wǎng)——每日最新資訊28at.com

  • 充值次數(shù)
  • 充值金額
  • 提現(xiàn)次數(shù)
  • 提現(xiàn)金額
  • 余額

針對(duì)以上5 業(yè)務(wù)指標(biāo),會(huì)使用prometheus的三種Metrics類型,如下7TS28資訊網(wǎng)——每日最新資訊28at.com

  1. Counter:只增不減的計(jì)數(shù)器,用作定義充值次數(shù)、提現(xiàn)次數(shù)
  2. Gauge:可增可減的儀表盤,側(cè)重于反應(yīng)系統(tǒng)的當(dāng)前狀態(tài),用作定義余額
  3. Summary:用于記錄某些東西的平均大小,也可以計(jì)算總和,用作定義充值金額、提現(xiàn)金額

最終我們對(duì)以上指標(biāo)進(jìn)行 grafana 進(jìn)行展現(xiàn),同時(shí)對(duì)余額小于500 進(jìn)行告警通知,效果如下7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

監(jiān)控與驗(yàn)證

Spring Boot 工程配置

  1. 添加 maven 依賴
<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. 在application.properties,開啟監(jiān)控的端點(diǎn)
#監(jiān)控的端點(diǎn)management.endpoints.web.exposure.include=*#應(yīng)用程序名稱,在prometheus 上會(huì)顯示management.metrics.tags.applicatinotallow=${spring.application.name}#tomcat 指標(biāo)需要開啟server.tomcat.mbeanregistry.enabled=true
  1. 編寫業(yè)務(wù)代碼,提供體現(xiàn)和充值方法,并在init方法中定義五個(gè)業(yè)務(wù)指標(biāo),使用了三種Metrics類型
@Service@Slf4jpublic class AccountServiceImpl implements IAccountService {    @Autowired    private MeterRegistry registry;    //入金筆數(shù)    private Counter depositCounter;     // 出金筆數(shù)    private Counter withdrawCounter;    //入金金額    private DistributionSummary depositAmountSummary;   // 出金金額    private DistributionSummary withdrawAmountSummary;    //余額    private BigDecimal balance = new BigDecimal(1000);    @PostConstruct    private void init() {        depositCounter = registry.counter("deposit_counter", "currency", "btc");        withdrawCounter = registry.counter("withdraw_counter", "currency", "btc");        depositAmountSummary = registry.summary("deposit_amount", "currency", "btc");        withdrawAmountSummary = registry.summary("withdraw_amount", "currency", "btc");        Gauge.builder("balanceGauge", () -> balance)                .tags("currency", "btc")                .description("余額")                .register(registry);    }    @Override    // 充值操作    public void depositOrder(BigDecimal amount) {        log.info("depositOrder amount:{}", amount);        try {            //余額增加            balance = balance.add(amount);            //充值筆數(shù)埋點(diǎn)            depositCounter.increment();            //充值金額埋點(diǎn)            depositAmountSummary.record(amount.doubleValue());        } catch (Exception e) {            log.info("depositOrder error", e);        } finally {            log.info("depositOrder result:{}", amount);        }    }    @Override    //提現(xiàn)操作    public void withdrawOrder(BigDecimal amount) {        log.info(" withdrawOrder amount:{}", amount);        try {            if (balance.subtract(amount).compareTo(BigDecimal.ZERO) < 0) {                throw new Exception("提現(xiàn)金額不足,提現(xiàn)失敗");            }            //余額減少            balance = balance.subtract(amount);            // 提現(xiàn)筆數(shù)埋點(diǎn)數(shù)據(jù)            withdrawCounter.increment();            // 提現(xiàn)金額埋點(diǎn)            withdrawAmountSummary.record(amount.doubleValue());        } catch (Exception e) {            log.info("withdrawOrder error", e);        } finally {            log.info("withdrawOrder result:{}", amount);        }    }}
  1. Controller 方法,定義了充值和提現(xiàn)接口
@RestController@RequestMapping(ControllerConstants.PATH_PREFIX + "/account")public class AccountController {    @Autowired    IAccountService accountService;    /**     * 充值     */    @RequestMapping(value = "/deposit", method = RequestMethod.GET)    public void deposit(@RequestParam("amount") BigDecimal amount) {        accountService.depositOrder(amount);    }    /**     * 提現(xiàn)     */    @RequestMapping(value = "/withdraw", method = RequestMethod.GET)    public void withdraw(@RequestParam("amount") BigDecimal amount) {        accountService.withdrawOrder(amount);    }}
  1. 啟動(dòng)服務(wù)查看,訪問actuator/prometheus接口,如果能查詢以下指標(biāo)則配置成功
##充值筆數(shù)deposit_counter_total## 充值總金額deposit_amount_sum##提現(xiàn)筆數(shù)withdraw_counter_total##提現(xiàn)總金額withdraw_amount_sum## 余額balanceGauge

Promethues 配置

在prometheus.yml文件中進(jìn)行配置業(yè)務(wù)系統(tǒng)采集點(diǎn),5s 拉取一次指標(biāo),由于prometheus server 部署在docker 中,所以訪問主機(jī)IP 用host.docker.internal7TS28資訊網(wǎng)——每日最新資訊28at.com

#業(yè)務(wù)系統(tǒng)監(jiān)控            - job_name: 'SpringBoot'    # Override the global default and    scrape_interval: 5s    metrics_path: '/actuator/prometheus'    static_configs:      - targets: ['host.docker.internal:8080']

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

告警規(guī)則配置,在容器啟動(dòng)時(shí)用主機(jī)的/data/prometheus目錄映射到容器的/prometheus目錄,因此在主機(jī)/data/prometheus/目錄創(chuàng)建rules文件夾,并創(chuàng)建告警文件business-alert.rules,這里告警對(duì)余額小于 500 則進(jìn)行告警7TS28資訊網(wǎng)——每日最新資訊28at.com

groups:- name: businessAlert  rules:  - alert: balanceAlert    expr: balanceGauge{applicatinotallow="backend"} < 500    for: 20s    labels:      severity: page      team: g2park    annotations:      summary: "{{ $labels.currency }} balance is insufficient "      description: "{{ $labels.currency }} balance : {{ $value }}"

啟動(dòng)Prometheus,進(jìn)行驗(yàn)證,查詢采集目標(biāo),已生效7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

查詢充值次數(shù),已采集點(diǎn)擊Alters,可以看到業(yè)務(wù)告警已經(jīng)生效7TS28資訊網(wǎng)——每日最新資訊28at.com

AlterManager配置

在/data/prometheus/alertmanager目錄下,新增告警模板notify-template.tmpl,此目錄映射到altermanager 的/etc/alertmanager目錄,模板包含告警和自愈兩部分,2006-01-02 15:04:05是go語言的日志格式,固定值,加28800e9表示轉(zhuǎn)換為東八區(qū)時(shí)間,即北京時(shí)間7TS28資訊網(wǎng)——每日最新資訊28at.com

{{ define "test.html" }} {{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts }}<h1 align="left" style="color:red;">告警</h1><pre>告警級(jí)別: {{ .Labels.severity }} 級(jí) <br>告警類型: {{ .Labels.alertname }} <br>故障主機(jī): {{ .Labels.instance }} <br>告警主題: {{ .Annotations.summary }} <br>告警詳情: {{ .Annotations.description }} <br>告警時(shí)間:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br>  </pre>{{ end }}{{ end }}{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts }}<h1 align="left" style="color:green;">恢復(fù)</h1><pre>告警名稱:{{ .Labels.alertname }}<br>告警級(jí)別:{{ .Labels.severity }}<br>告警機(jī)器:{{ .Labels.instance }}<br>告警主題:{{ .Annotations.summary }}<br>告警主題:{{ .Annotations.description }}<br>告警時(shí)間:{{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br> 恢復(fù)時(shí)間:{{ (.EndsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}<br> </pre>{{- end }}{{- end }}{{- end }}

修改alertmanager.yml為以下內(nèi)容,替換對(duì)應(yīng)賬號(hào)即可7TS28資訊網(wǎng)——每日最新資訊28at.com

global:  smtp_smarthost: smtp.qq.com:465  smtp_from: 9238223@qq.com  smtp_auth_username: 9238223@qq.com  smtp_auth_identity: 9238223@qq.com  smtp_auth_password: 123  smtp_require_tls: falsetemplates: #添加模板  - '/etc/alertmanager/notify-template.tmpl'   #指定路徑    route:  group_by: ['alertname']  receiver: 'default-receiver'  group_wait: 30s  group_interval: 5m  repeat_interval: 1hreceivers:  - name: default-receiver    email_configs:      - to: abc123@foxmail.com        html: '{{ template "test.html" . }}'        send_resolved: true        headers: { Subject: "系統(tǒng)監(jiān)控告警{{- if gt (len .Alerts.Resolved) 0 -}}恢復(fù){{ end }}" }

global: 這是一個(gè)全局配置部分,用于配置全局的Alertmanager設(shè)置。7TS28資訊網(wǎng)——每日最新資訊28at.com

route: 用于配置警報(bào)的路由規(guī)則。7TS28資訊網(wǎng)——每日最新資訊28at.com

receivers: 接收者部分,用于配置接收告警通知的收件人。7TS28資訊網(wǎng)——每日最新資訊28at.com

  • to: abc123@foxmail.com: 這是收件人的郵件地址,即接收警報(bào)通知的郵箱地址。
  • send_resolved: true: 這是一個(gè)布爾值,指示是否發(fā)送已解決的警報(bào)通知。在這個(gè)例子中,設(shè)置為true,表示發(fā)送已解決的警報(bào)通知。
  • name: default-receiver: 這是默認(rèn)接收者的名稱。
  • email_configs: 用于指定接收郵件通知的收件人和其他相關(guān)設(shè)置。
  • group_by: ['alertname']: 這是一個(gè)標(biāo)簽列表,用于按照警報(bào)名稱(alertname)進(jìn)行分組。
  • receiver: 'default-receiver': 這是指定默認(rèn)接收者的名稱,即接收警報(bào)通知的收件人。
  • group_wait: 30s: 在發(fā)送警報(bào)通知前等待的時(shí)間,以便將相同的警報(bào)分組在一起。
  • group_interval: 5m: 這是發(fā)送同一組警報(bào)通知之間的最小時(shí)間間隔。
  • repeat_interval: 1h: 這是在重復(fù)發(fā)送未解決的警報(bào)通知之前等待的時(shí)間間隔。
  • smtp_smarthost: 這是SMTP服務(wù)器的地址和端口,用于發(fā)送郵件通知。
  • smtp_from: 這是郵件發(fā)送方的郵件地址,即發(fā)送郵件的地址。

啟動(dòng)Altermanager,進(jìn)行驗(yàn)證7TS28資訊網(wǎng)——每日最新資訊28at.com

docker start alertmanager

訪問stauts,如果出現(xiàn)以下結(jié)果則成功7TS28資訊網(wǎng)——每日最新資訊28at.com

告警驗(yàn)證,系統(tǒng)默認(rèn)余額為1000,調(diào)用backend/account/withdraw提現(xiàn)接口,使余額降至500,進(jìn)行報(bào)警7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

等待20s 左右,prometheus 收到報(bào)警會(huì)推送至Altermanager7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

Altermanager則會(huì)根據(jù)我們配置時(shí)間等待 30s,進(jìn)行通知告警7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

自愈驗(yàn)證,調(diào)用充值backend/account/deposit接口,使余額大于500,等待6m 左右會(huì)收到自愈告警,如果嫌時(shí)間比較長(zhǎng),修改alertmanager.yml中  group_wait、group_interval參數(shù)值即可7TS28資訊網(wǎng)——每日最新資訊28at.com

Grafana配置

啟動(dòng) Grafana,點(diǎn)擊新增面板,創(chuàng)建三種圖表,分別為余額走勢(shì)、提現(xiàn)與充值金額占比、提現(xiàn)與充值筆數(shù)走勢(shì)圖,如下7TS28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

余額走勢(shì),報(bào)表類型為Stat7TS28資訊網(wǎng)——每日最新資訊28at.com

sum(balanceGauge{applicatinotallow="backend"})

圖片圖片7TS28資訊網(wǎng)——每日最新資訊28at.com

提現(xiàn)與充值金額占比,報(bào)表類型為Pie chart7TS28資訊網(wǎng)——每日最新資訊28at.com

withdraw_amount_sum{applicatinotallow="backend"}deposit_amount_sum{applicatinotallow="backend"}

提現(xiàn)與充值筆數(shù)走勢(shì)圖,報(bào)表類型為Time series7TS28資訊網(wǎng)——每日最新資訊28at.com

increase(deposit_counter_total{applicatinotallow="backend"}[5m])increase(withdraw_counter_total{applicatinotallow="backend"}[5m])

總結(jié)

以上介紹了如何在Spring Boot中自定義業(yè)務(wù)指標(biāo)以及對(duì)指標(biāo)進(jìn)行監(jiān)控和告警,希望對(duì)你所幫助,注意以上示例只是為了簡(jiǎn)單便于理解才是這樣寫,真實(shí)使用中,指標(biāo)可以與數(shù)據(jù)庫(kù)或者緩存進(jìn)行結(jié)合,比如余額報(bào)警,調(diào)用查詢余額接口即可。7TS28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-55323-0.html在SpringBoot中自定義指標(biāo)并使用Prometheus監(jiān)控報(bào)警

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 開源軟件導(dǎo)航項(xiàng)目, 輕松實(shí)現(xiàn)自己的網(wǎng)站導(dǎo)航

下一篇: 在SpringBoot中自定義指標(biāo)并使用Prometheus監(jiān)控報(bào)警

標(biāo)簽:
  • 熱門焦點(diǎn)
  • CSS單標(biāo)簽實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)logo

    轉(zhuǎn)轉(zhuǎn)品牌升級(jí)后更新了全新的Logo,今天我們用純CSS來實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)的新Logo,為了有一定的挑戰(zhàn)性,這里我們只使用一個(gè)標(biāo)簽實(shí)現(xiàn),將最大化的使用CSS能力完成Logo的繪制與動(dòng)畫效果。新logo
  • JVM優(yōu)化:實(shí)戰(zhàn)OutOfMemoryError異常

    一、Java堆溢出堆內(nèi)存中主要存放對(duì)象、數(shù)組等,只要不斷地創(chuàng)建這些對(duì)象,并且保證 GC Roots 到對(duì)象之間有可達(dá)路徑來避免垃 圾收集回收機(jī)制清除這些對(duì)象,當(dāng)這些對(duì)象所占空間超過
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會(huì)涉及各種各樣的安全任務(wù),包括但不限于:開發(fā)某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • Temu起訴SHEIN,跨境電商戰(zhàn)事升級(jí)

    來源 | 伯虎財(cái)經(jīng)(bohuFN)作者 | 陳平安日前據(jù)外媒報(bào)道,拼多多旗下跨境電商平臺(tái)Temu正對(duì)競(jìng)爭(zhēng)對(duì)手SHEIN提起新訴訟,訴狀稱Shein&ldquo;利用市場(chǎng)支配力量強(qiáng)迫服裝廠商與之簽訂獨(dú)家
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預(yù)警不絕,但處于厄爾尼諾大&ldquo;烤&rdquo;之下的除了眾生,還有各大企業(yè)發(fā)布的ESG報(bào)告。ESG是&ldquo;環(huán)境保
  • 網(wǎng)紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業(yè)評(píng)論6月26日高調(diào)宣布入市,網(wǎng)絡(luò)名嘴大v胡錫進(jìn)居然進(jìn)軍了股市。在一次財(cái)經(jīng)媒體峰會(huì)上,幾個(gè)財(cái)經(jīng)圈媒體大佬就&ldquo;胡錫進(jìn)炒股是否知道認(rèn)真報(bào)道&rdquo;展開討論。有
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • 英特爾Xe-HP項(xiàng)目終止,將專注Xe-HPC/HPG系列顯卡

    據(jù)10 月 31 日消息報(bào)道,英特爾高級(jí)副總裁兼加速計(jì)算系統(tǒng)和圖形事業(yè)部總經(jīng)理 表示,Xe-HP“ Arctic Sound” 系列服務(wù)器 GPU 已經(jīng)應(yīng)用于 oneAPI devcloud 云服
  • SN570 NVMe SSD固態(tài)硬盤 價(jià)格與性能兼具

    SN570 NVMe SSD固態(tài)硬盤是西部數(shù)據(jù)發(fā)布的最新一代WD Blue系列的固態(tài)硬盤,不僅閃存技術(shù)更為精進(jìn),性能也得到了進(jìn)一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top