SpringBoot 應(yīng)用監(jiān)控踩坑集錦

一、Spring Boot 應(yīng)用暴露監(jiān)控指標(biāo)【版本 1.5.7.RELEASE】

首先,添加以下依賴:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_spring_boot</artifactId>
            <version>0.0.26</version>
        </dependency>

然后,在啟動類 Application.java 添加如下注解:

@SpringBootApplication
@EnablePrometheusEndpoint
@EnableSpringBootMetricsCollector
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

啟動應(yīng)用程序后,會看到如下一系列的 Mappings:

image.png

上面這張圖需要 idea2017.2版本以上才能看到哦~~
這時很開心以為這樣就成功了,接下來看遇到的第一個坑。。。

坑一、訪問監(jiān)控地址報錯

打開瀏覽器訪問 http://localhost:8080/metrics ,不好意思報錯了哦,請看報錯原因:

image.png

相信使用過 springboot 的人看到這個頁面一定很熟悉,竟然沒有權(quán)限,那咋辦呢,當(dāng)然是打開官方文檔瞄一眼咯~~~

image.png

敏感的訪問節(jié)點(diǎn)需要用戶名密碼才能訪問。

坑一、解決方法

(1)放棄安全性,臨時暴露出來看一下的方法。(不建議使用)
在application.properties配置文件增加如下選項

management.security.enabled=false
endpoints.health.sensitive=false

(2)設(shè)權(quán)限,安全查看:
第一步,添加依賴:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

第二步,配置用戶名密碼

security.user.name=admin
security.user.password=123456
management.security.roles=SUPERUSER

這樣在瀏覽器訪問時會要求先輸入密碼才能訪問。
這里給出一個完整的 application.properties配置:

# 啟用基礎(chǔ)認(rèn)證
security.basic.enabled = true

# 安全路徑列表,逗號分隔,此處只針對/admin路徑進(jìn)行認(rèn)證
security.basic.path = /admin

# 認(rèn)證使用的用戶名
security.user.name = admin

# 認(rèn)證使用的密碼。 默認(rèn)情況下,啟動時會記錄隨機(jī)密碼。
security.user.password = 123456

# 可以訪問管理端點(diǎn)的用戶角色列表,逗號分隔
management.security.roles = SUPERUSER

# actuator暴露接口使用的端口,為了和api接口使用的端口進(jìn)行分離
management.port = 8099

# actuator暴露接口的前綴
management.context-path = /admin

# actuator是否需要安全保證
management.security.enabled = true

# actuator的metrics接口是否需要安全保證
endpoints.metrics.sensitive = false

# actuator的metrics接口是否開啟
endpoints.metrics.enabled=true

# actuator的health接口是否需要安全保證
endpoints.health.sensitive=false

# actuator的health接口是否開啟
endpoints.health.enabled=true

打開瀏覽器訪問http://localhost:8099/admin/prometheus ,輸入用戶名密碼;可以看到以下信息,是不是很完美。

image.png

二、Prometheus 采集 Spring Boot 指標(biāo)數(shù)據(jù)

首先,下載 Prometheus 的安裝軟件,下載可能比較慢,有需要的可以給我留言,我可以提供prometheus-1.8.0.linux-amd64.tar.gz版本,官網(wǎng)下載地址:https://github.com/prometheus/prometheus/releases
其次,編寫配置文件 prometheus.yml :

global:
  scrape_interval: 10s
  scrape_timeout: 10s
  evaluation_interval: 10m
scrape_configs:
  - job_name: spring-boot
    scrape_interval: 5s
    scrape_timeout: 5s
    metrics_path: /admin/prometheus
    scheme: http
    basic_auth:
      username: admin
      password: 123456
    static_configs:
      - targets:
        - 192.168.8.244:8099  #此處填寫 Spring Boot 應(yīng)用的 IP + 端口號

有關(guān)配置選項的完整規(guī)范,請查看配置文檔。
然后,啟動 Prometheus :

./prometheus -config.file=prometheus.yml &

最后,訪問 http://localhost:9090/targets , 檢查 Spring Boot 采集狀態(tài)是否正常。

prometheus采集狀態(tài).png

三、Grafana 可視化監(jiān)控數(shù)據(jù)

首先,獲取 Grafana 的安裝包,有需要的可以給我留言,我可以提供grafana-4.5.2-1.x86_64.rpm,官方下載地址:https://grafana.com/grafana/download
其次,啟動 Grafana:

sudo /bin/systemctl start grafana-server.service

然后,訪問 http://localhost:3000/ 查看Grafana是否安裝成功。開始登陸時需要用戶名密碼,Grafana 登錄賬號 admin 密碼 admin

Grafana登錄頁.png

能夠打開上面的頁面表示安裝成功。
最后,就是配置Grafana。

1、Grafana配置

1、登陸成功后顯示的頁面如下:

Grafana首頁.png

2、配置數(shù)據(jù)源,點(diǎn)擊Add data source,進(jìn)入以下頁面:

Add data source.png

配置結(jié)果如下:

配置結(jié)果.png

3、配置單個指標(biāo)的可視化監(jiān)控面板,點(diǎn)擊Create your first dashboard,進(jìn)入如下頁面:

Create your first dashboard.png
選擇 Graph.png
編輯 Graph.png
配置需要監(jiān)控的指標(biāo).png

注意:此處不能任意填寫,只能填已有的指標(biāo)點(diǎn),具體的可以在 Prometheus 的首頁看到,即 http://localhost:9090/graph

指標(biāo).png

多配置幾個指標(biāo)之后,即可有如下效果:

Grafana 監(jiān)控界面.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評論 19 139
  • 重要說明:本方是翻譯自https://docs.spring.io/spring-cloud-dataflow/d...
    靜悟2020閱讀 10,814評論 1 12
  • spring-boot-admin為我們基于spring-boot的基礎(chǔ)數(shù)據(jù)安全端口提供了基礎(chǔ)的可視化監(jiān)控功能。還...
    Comcen閱讀 10,595評論 8 22
  • 一、準(zhǔn)備搭建環(huán)境 1.系統(tǒng):CentOS 7.3 2.軟件:Zabbix 3.2 二、安裝前的準(zhǔn)備 最小化安裝Ce...
    塵世不擾閱讀 4,398評論 8 31
  • √學(xué)員情況: 校區(qū):科學(xué)創(chuàng)想機(jī)器人科學(xué)宮校區(qū) 時間:周日上午10點(diǎn)30-11點(diǎn)30 學(xué)員:小石頭,陽陽,小白,二寶...
    樂搭閱讀 4,432評論 0 0

友情鏈接更多精彩內(nèi)容