全方位的開源監控工具鏈介紹

       說到監控現在最火的是全鏈路監控(服務調用+HTTP調用+數據源訪問+MQ鏈路的監控),但我認爲這是狹義的全鏈路監控,廣義的概念應該不僅僅指APM(Appliation Perfance  Manager & Monitor),還包括Loggong(系統日誌、業務日誌、框架日誌)、Mertic(指標或者度量)、Trancing(追蹤:覆蓋微服務,存儲,中間件)。而我今天要介紹的是全方位的開源監控工具鏈,爲什麼是全方位,就是比廣義的全鏈路監控還要多,包括前端監控(用戶行爲監控)、壓測監控、DevOps監控等等。

一、前端監控

       開源的前端監控產品很少,我今天推薦的是zanePerfor,我們一直在用,確實挺好用的(在這裏給開發者打打廣告,使用的人多了開源項目才能成長),具有如下功能:

1、瀏覽器端(WEB)

  • 頁面級的性能上報(多頁面 || 單頁面應用程序通用)
  • 頁面AJAX性能上報
  • 頁面所有加載資源性能上報(圖片,js,css)
  • 頁面所有錯誤信息上報(js,css,ajax)

2、微信小程序端

  • path路徑對應的AJAX性能上報
  • 小程序錯誤信息上報(js,ajax,img)
  • 用戶設備信息及其網絡信息上報

3、後端界面展示功能(web,小程序通用)

  • 統計每分鐘應用的PV,UV,IP信息,統計每天的PV,UV,IP,跳出率,用戶訪問平均深度
  • 統計實時和每天的應用top最高訪問排行,跳出率最高排行
  • 統計實時和每天的全國省份流量熱力圖
  • 統計每個用戶每次訪問的行爲軌跡

源碼地址:https://github.com/wangweianger/zanePerfor

二、 APM監控

       我要推薦的是SkyWalking(國人開發的,得支持),這是一款開源的應用性能監控系統,包括指標監控,分佈式追蹤,分佈式系統性能診斷。專爲微服務、雲本機架構和基於容器(Docker、K8s、Mesos)架構而設計。

其架構如下: 

 

 以下是監控效果圖:

項目官網:https://skywalking.apache.org/zh/

源碼地址:https://github.com/apache/skywalking

三、JMX監控

       一般我們運行Java項目都會涉及到JMX的監控,本身JDK自帶有的工具jconsole.exe就能完成,很多開源監控平臺如Zabbix、open-falcon都有相關的監控插件,除此之外還有一些很流行的JMX監控組件如Jolokia、Jmxtrans,這些組件與其他工具組合就能構建出Java監控平臺,我這裏推薦的是Jmxtrans + Influxdb + Grafana組合,因爲我自己用的比較多,相對比較順手。

       這種方式獲取的監控指標是錄活的,界面展現也是自由配置的,最主要是免費輕量級的,監控效果如下:

具體使用方式,參見我的另一篇文章:

 https://smooth.blog.csdn.net/article/details/90399528

源碼地址:https://github.com/jmxtrans/jmxtrans

四、服務器監控

       關於服務器監控,主要指的是OS(操作系統)、Docker等環境監控,主要應用於運維監控方面(包括CPU、內存、進程、磁盤、網絡的監控),這方面的開源平臺也挺多,比如Zabbix、open-falcon。但這裏我還是推薦用輕量級的數據採集組件Telegraf,可以組合搭配的方式爲 Telegraf + Influxdb + Grafana,由於Telegraf有Linux、Windows、Docker的運行模式,所以可以廣泛的採集多種服務器中的指標數據。

Linux監控效果圖

 

Windows監控效果圖

 

Docker監控效果圖

Telegraf可以採集的數據是非常多樣的,可以見 https://github.com/influxdata/telegraf/tree/master/plugins/inputs

另外如果覺得要配置以上漂亮的面板很麻煩,那你可以到grafana的官網去下載面板模板,自己再進行修改調整也是可以的:https://grafana.com/grafana/dashboards?collector=Telegraf

源碼地址https://github.com/influxdata/telegraf

五、數據庫監控

       開源的數據庫監控工具或平臺其實也不多,因爲數據庫產品太多太複雜了,涉及到不同的數據庫(包括Nosql)用不同的採集組件就已經讓人崩潰了。不過幸運的是上面的Telegraf組件就很強大,它可以監控除Oracle以外的大部分常用數據庫,如Mysql、SQL Server、Postgresql、Mongodb、Redis、CouchDB等。以下就舉例Postgresql和Redis的監控效果圖:

       前面說了Telegraf無法採集Oracle的監控數據,那麼對於Oracle的監控難道就沒有好的工具了(這裏指的是開源的,不包括大量成熟的Oracle監控工具如Spotlight On Oracle,另外像不開源但卻是免費的TreeSoft也能實現簡單的監控) 嗎?答案是否定的,既然是開源,只要你願意去探索就無所不能。這裏可以嘗試用 Telegraf + InfluxDB + Grafana + Python 的方式來實現,效果圖如下:

具體如何實現,可以參考網上的一篇文章: https://blog.csdn.net/zuozewei/article/details/89042921

六、CI/CD監控

       現在最流行的話題是DevOps,這個方面的話題太高大上,涉及到監控也是很難定義,但是對於CI/CD過程涉及的Jenkins我們是可以監控的,比如採用 Jenkins_InfluxDB_Plugin + Influxdb + Grafana 組合方式來採集Jenkins的構建數據,並進行視圖分析:

 

Jenkins_Influxdb插件介紹:https://wiki.jenkins.io/display/JENKINS/InfluxDB+Plugin

Jenkins_Influxdb插件源碼https://github.com/jenkinsci/influxdb-plugin

關於Jenkins結合influxdb插件收集數據交Grafana的具體介紹,可以參見我的另一篇文章:

https://smooth.blog.csdn.net/article/details/88551268

七、測試監控

        到這裏我們已經瞭解到 Influxdb + Grafana 組合的強大了,其實和Jmeter結合,我們就可以監視性能測試的壓測請求,比起Jmeter本身所生成的html報告,這種方式實時性更好,輕量級的不佔用過高資源,可以滿足長時間的壓測監控。

        我們通過Jmeter的Backend Listener組件,就可以將Jmeter的數據發送到Influxdb,交由Grafana分析展示:

 這種方式網上隨處能搜索到,也可以關注我的另一篇文章:https://blog.csdn.net/smooth00/article/details/79926294

八、日誌監控

       如今最流行的日誌監控分析框架是ELK(Elasticsearch + Logstash + Kibana),或者是搭配輕量級的日誌採集分析框架Elasticsearch + Filebeat + Kibana。說下kibana作爲日誌展現方面的問題,Kibana往往在展現一條數據的時候效果是完美的,尤其是kibana4那種清淡的綠色讓人心曠神怡。 但很多時候我們要做多維度數據圖表展現,這地方Kibana貌似沒有做圖表樣式的優化。當很多條數據擁擠在一起時,很難區分出每個點的數值,換句話說很不直觀。另外Kibana更加適合日誌類型的展現, 雖然他也可以kv結構,但配置起來有些麻煩。所以現在還有一種搭配方式是 Elasticsearch + Logstash + Grafana 或 Elasticsearch  + Filebeat + Logstash + Granfa,比起來Grafana比Kibana部署還要輕量化。以下是ELK監控Nginx日誌,並通過Grafana展現的效果圖:

nginx log的grafana模板:https://grafana.com/grafana/dashboards/2292

ELK:https://www.elastic.co/cn/what-is/elk-stack

      寫到這,我也差不多把我所瞭解的開源監控產品梳理了一通,其中有一些在我的推薦下,已經在公司內部得到了應用,另外Skywalking和Telegraf、Jmxtrans也集成到我自己的監控平臺中,而Influxdb、Grafana也往Jmeter壓測平臺中做了集成。當然,我還會繼續探索一些新的開源監控技術,爭取做一個受歡迎的搬運工。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章