最近對devOps這個話題有點興趣,所以研究了一下monitor相關的開源項目,翻到medium上的一篇文章,而且實際項目中也曾看到devOps組的同事搭過類似的監控,就想過把癮,了解一下監控可視化。
被監控服務配置
本地正好有spring-boot的項目,并且也依賴了jolokia(主要就是為了把JMX的mbean通過HTTP暴露出去)
項目配置也少不了
endpoints: enabled: true jmx: enabled: true jolokia: enabled: truemanagement: security: enabled: false
訪問一下URL看看是不是ok
http://localhost:8080/jolokia/read/org.springframework.boot:name=metricsEndpoint,type=Endpoint/Data
搭建監控系統
如果能看到數據,說明server端配置沒問題了,下面我們怎么搭建Telegraf + InfluxDB + Grafana呢,這個三個組件是這么配合的,Telegraf實際就是收集信息的,比如每隔10s訪問一次上面那個URL得到metrics,收集到的數據存到InfluxDB,然后Grafana做數據可視化。
但是如果純手動安裝實在太麻煩,求助萬能的github,找到一個非常棒的項目(https://github.com/samuelebistoletti/docker-statsd-influxdb-grafana), 直接fork然后修改一些配置就可以為自己的項目服務了。如果你不了解相關配置可以先直接run起來,然后通過ssh進去一探究竟。
ssh root@localhost -p 22022
配置方面,主要是要修改Telegraf的,因為它是對接不同項目的,你需要收集什么樣的信息,比如cpu,disk,net等等都要在Telegraf里配。簡單起見,我只設置了三個輸入。
# /etc/telegraf/telegraf.conf[[inputs.jolokia]] context = "/jolokia"[[inputs.jolokia.servers]] name = "springbootapp" host = "{app ip address}" port = "8080"[[inputs.jolokia.metrics]] name = "metrics" mbean = "org.springframework.boot:name=metricsEndpoint,type=Endpoint" attribute = "Data"[[inputs.jolokia.metrics]] name = "tomcat_max_threads" mbean = "Tomcat:name=/"http-nio-8080/",type=ThreadPool" attribute = "maxThreads"[[inputs.jolokia.metrics]] name = "tomcat_current_threads_busy" mbean = "Tomcat:name=/"http-nio-8080/",type=ThreadPool" attribute = "currentThreadsBusy"
其實就是spring-boot標準的metrics以及tomcat的Threads。
完成之后重啟服務/etc/init.d/telegraf restart
查看監控數據
我們訪問InfluxDB看看有數據了沒有http://localhost:3004/,切換數據庫到Telegraf。輸入以下命令試試吧
SHOW MEASUREMENTSSELECT * FROM jolokiaSELECT * FROM cpuSELECT * FROM memSELECT * FROM diskio
比如輸入SELECT * FROM jolokia
就能看到spring-boot暴露了哪些數據,從time列也可以看出Telegraf是每隔10s收集一次,太頻繁了對server也是壓力。
上面基本涵蓋了cpu,內存和存儲的一些metrics。
其實也可以配置網絡相關的,感興趣的可以看官方的telegraf.conf,里面有配置[[inputs.net]]的例子。
數據可視化
數據有了,下一步就是可視化。
按照Github上面說的進入http://localhost:3003/,
Using the wizard click on Add data sourceChoose a name for the source and flag it as DefaultChoose InfluxDB as typeChoose direct as accessFill remaining fields as follows and click on Add without altering other fieldsUrl: http://localhost:8086Database: telegrafUser: telegrafPassword: telegraf
添加好InfluxDB后,新建一個Dashboard,然后快速的ADD幾個Graph來。
為了演示,我添加了三個,分別使用下面三組查詢語句來渲染出三張圖表
SELECT MEAN(usage_system) + MEAN(usage_user) AS cpu_total FROM cpu WHERE $timeFilter GROUP BY time($interval)SELECT mean("total") as "total" FROM "mem" WHERE $timeFilter GROUP BY time($interval) fill(null)SELECT mean("used") as "used" FROM "mem" WHERE $timeFilter GROUP BY time($interval) fill(null)SELECT mean("metrics_heap.used") as "heap_usage" FROM "jolokia" WHERE $timeFilter GROUP BY time($interval) fill(null)
第一張是CPU占用率;第二張是內存占用情況,綠線是Total,黃線是Used;第三張是jolokia提供的jvm heap的使用,可以到看到GC的情況。
剛才還配置了Tomcat的收集,想看Tomcat的Thread情況也是妥妥的。
SELECT mean("tomcat_max_threads") FROM "jolokia" WHERE $timeFilter GROUP BY time($interval) fill(null)SELECT mean("tomcat_current_threads_busy") FROM "jolokia" WHERE $timeFilter GROUP BY time($interval) fill(null)
小結
以上所述是小編給大家介紹的Spring boot監控,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!
新聞熱點
疑難解答
圖片精選