Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 構建監控平臺
完成一套精準,漂亮圖形化監控系統從這裏開始第一步
Telegraf是收集和報告指標和數據的代理
它是TICK堆棧的一部分,是一個用於收集和報告指標的插件驅動的服務器代理。Telegraf擁有插件或集成功能,可直接從運行的系統獲取各種指標,從第三方API獲取指標,甚至通過StatsD和Kafka消費者服務來收聽指標。它還具有輸出插件,可將指標發送到各種其他數據存儲,服務和消息隊列,包括InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ等等。
Spring Boot Actuator
Spring Boot Actuator包含一個帶“metrics”和“gauge”支持的度量服務。PublicMetrics
可以實現的 界面,用於公開您無法通過這兩種機制之一記錄的指標。看SystemPublicMetrics
一個例子。
將你的springboot項目中依賴Spring Boot Actuator 的包,啟動之後會發現控制臺打出的mapped變得很多了,例如/env、/health、/info等等的信息,恭喜你已經成功使用了metric對程序進行了簡單的監控了,在瀏覽器中輸入本地的ip項目訪問地址如:http://localhost:8080/metrics,就會出現如下的數據
{ "counter.status.200.root": 20, "counter.status.200.metrics": 3, "counter.status.200.star-star": 5, "counter.status.401.root": 4, "gauge.response.star-star": 6, "gauge.response.root": 2, "gauge.response.metrics": 3, "classes": 5808, "classes.loaded": 5808, "classes.unloaded": 0, "heap": 3728384, "heap.committed": 986624, "heap.init": 262144, "heap.used": 52765, "nonheap": 0, "nonheap.committed": 77568, "nonheap.init": 2496, "nonheap.used": 75826, "mem": 986624, "mem.free": 933858, "processors": 8, "threads": 15, "threads.daemon": 11, "threads.peak": 15, "threads.totalStarted": 42, "uptime": 494836, "instance.uptime": 489782, "datasource.primary.active": 5, "datasource.primary.usage": 0.25 }
管理員功能
通過指定spring.application.admin.enabled
屬性可以為應用程序啟用與管理相關的功能 。這暴露 SpringApplicationAdminMXBean
了平臺上MBeanServer
。您可以使用此功能遠程管理您的Spring Boot應用程序。這對於任何服務包裝器實現也是有用的。
引入spring-boot-admin依賴
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-server-ui</artifactId>
<version>1.4.0</version>
</dependency>
如果您想知道應用程序在哪個HTTP端口上運行,請使用密鑰獲取該屬性local.server.port
。
當啟用此功能時要小心,因為MBean公開了關閉應用程序的方法。
使用Jolokia進行JMX over HTTP
Jolokia是一個JMX-HTTP橋梁,它提供了訪問JMX bean的另一種方法。要使用Jolokia,只需添加依賴項即可org.jolokia:jolokia-core
。例如,使用Maven你可以添加以下內容:
<dependency> <groupId> org.jolokia </ groupId> <artifactId> jolokia-core </ artifactId> </ dependency>
在application.yaml後者application.properties中配置響應的配置
jolokia.config.debug=true endpoints.jolokia.enabled=true #endpoints.jolokia.sensitive=true endpoints.jolokia.path=/jolokia
環境搭建
下載Telegraf、influxdb 、grafana,我個人建議先搭建一個windows版本的環境自己配置玩一玩
https://portal.influxdata.com/downloads#influxdb
https://grafana.com/grafana/download?platform=windows
1 Influxdb配置
修改influxdb.conf,設置日誌文件目錄:
#cd 到安裝解壓的修改influxdb.conf
[admin]
# Determines whether the admin service is enabled.
enabled = true
# The default bind address used by the admin service.
bind-address = ":8083"
其他配置都是默認好的,不用修改,如果版本下載不一樣可能需要修改,不妨給我留言,我會及時回復的
2啟動
通過cmd命令窗口,切換到influxdb安裝目錄,執行如下命令:
influxd -config influxdb.conf
通過cmd命令窗口,切換到Telegraf安裝目錄,執行如下命令:
telegraf -config telegraf.conf
切換到Grafana安裝目錄中的bin目錄下,雙擊grafana-server.exe啟動程序
訪問http://locahost:8090,這是可以配置的端口號,可以訪問了:
使用:
訪問http://localhost:8086,使用admin/admin登錄本機Grafana,新建influxdb數據源:
【註意】Telegraf啟動後,向InfluxDb中上報數據時,會默認創建一個telegraf數據庫,所以上面我們配置DataBase是telegraf
點擊new創建一個Dashboards
配置編輯會出來可配置頁面:
點擊General:配置基本的圖表信息
點擊metrics,配置收集到的收據信息,實際就是寫sql查詢,不同數據庫數據sql書寫方式不同
查看http://localhost:8083,可以發現telegraf庫中,默認有4個Measurements(表):
配置Grafana中的面板完成後,這樣一個簡易的本機監控系統就搭建完了:
Spring Boot Actutaur + Telegraf + InFluxDB + Grafana 構建監控平臺