云生態下的開源應用程序監控工具
Linux容器已經被業界廣泛用于開發甚至生產系統。Docker和Kubernetes已經被開發運營人員廣泛了解和熟悉。但是容器云架構下系統監控確實一個常常被忽略的問題。盡管容器部署主要涉及在每個容器內運行單個應用程序或服務,但是隨著部署規模的擴大,對環境狀態和運行狀況的可見性變得越來越重要,而不僅僅是在操作系統或應用程序級別,而且在容器級別也是如此。
云生態監控和日志處理領域分為實時數據庫,度量標準收集器,可視化工具,輪詢器,記錄器等。過去幾年中,開源產品和商業監控應用程序不斷涌現,本文我介紹幾個最受歡迎的開源云應用監控工具。
Prometheus
Prometheus(普羅米修斯)是領先的開源云監視解決方案,除其他事項外,其數據以時間序列數據庫存儲,天然適合監控數據庫存儲。普羅米修斯是CNCF(Cloud Native Computing Foundation,原生云計算基金會)支持的九大項目之一,也是CNCF中,除了也是Kubernetes后第二大托管項目。普羅米修斯獲得了包括谷歌,紅帽,IBM等公司在內的眾多云供應商的支持,是云應用首選監控程序。
普羅米修斯最初源于音樂托管網站SoundCloud,接著成為了Docker生態系統的重要組成部分。CoreOS團隊還積極地使用Prometheus來改善Kubernetes的性能。
普羅米修斯已發展成為高級系統監控和告警工具箱,能夠監視各種資源,包括容器,Hadoop集群,各語言運行時以及Python、Golang、JVM之類的應用程序堆棧。
簡而言之,普羅米修斯是一個開源監控系統,時間序列數據庫以及用于實現代碼的框架。但是,普羅米修斯不能生成度量標準,需要要以HTTP可以解析的語言將度量標準提供給它。關于普羅米修斯參看蟲蟲之前文章,有詳細介紹。
Graphite
Graphite是一種流行的開源工具,用于構建基于Web的儀表板以進行監視和分析。Graphite最初是由Orbitz的Chris Davis于2006年用python創建的一個輔助項目。用于監控和繪制計算機系統的性能,最終形成了一個基本監控系統,并于2008年以Apache 2.0 license的授權開源發布。目前已經獲得了GitHub,Salesforce和Reddit等眾多大公司提供和支持。
Graphite由三部分組成:
- Carbon 時間序列數據的守護程序,用于接收數據;
- Whisper(類似于RRDtool)數據庫和存儲;
- Graphite-web的Web應用程序,可按需呈現圖形。
Graphite在企業中仍然很流行,原因是由于其自動化程度很高,其中所有新數據點都能在數據庫中自動創建。
Graphite本質上是三個相互耦合的獨立工具,也可以單獨使用并與其他工具集成。
Riemann
上面我們說了Graphite所有組件都耦合可以單獨使用。Riemann就是用于替代Graphite中Carbon守護程序的。盡管Carbon會監聽指標并將其寫入whisper存儲數據庫,但由于Carbon是基于Python開發的,容易在性能上遇到瓶頸,這時候我們可以用Riemann代替它。Riemann使用 Clojure 語言實現以 "事件流(event streams)方式處理數據和匯總。但是,Riemann不是度量收集器。
Riemann的工作方式是從事件流(例如指標,日志,事件,主機和服務)收集數據,然后根據需要存儲,圖形或警報?;谑录鞯囊粭-h境下一旦事件流停止流動,就能馬上發現系統故障或網絡斷開。Riemann還能收集和處理各種形式的事件,事先監控。
Riemann具有超快速度和性能。其官方網站宣傳的,Riemann可以在商用 x86 硬件條件下,Riemann 每秒就可以處理數百萬次事件,延遲時間卻只有亞毫秒,5 毫秒可以完成 99 次。
在云環境條件下,Riemann也可以容器化方式運行和組合:
- Riemann 服務器進程,由 Clojure 語言編寫,是主流處理引擎;
- Riemann-health 程序,實現Riemann 集群的健康/使用指標報告;
- Riemann-dash 程序,一個小型 Sinatra 應用,為 Riemann 提供網頁控制臺界面。
- 作為云部件,Riemann也可將事件供應給Prometheus系統。
Riemann在Clojure開發人員中特別受歡迎,因為配置文件實際上是一些可執行的Clojure代碼,可以高度定制和構建。
Grafana
Grafana是用Golang 開發的開源的度量分析與可視化套件,主要用于大規模指標數據的可視化展現方式,是網絡架構和應用分析中最流行的時序數據展示工具??梢灾С謱abbix,Graphite,ElasticSearch,OpenTSDB,Prometheus和InfluxDB數據匯總、指標儀表板和圖形編輯器。
Grafana可以讓用戶輕松創建和編輯儀表板。Grafana非常適合分布式數據存儲環境下的數據匯總、查詢和可視化,也能對接指標閾值設置和告警。特別適用于實現高質量的交互式可視化和圖形。
Weave Scope
Weave Scope是容器生態中,可以自動進行容器APP映射,直觀地理解、監視和控制基于容器化微服務的應用程序。Weave Scope涵蓋監視,可視化,管理和故障排除。我們可以用Weave Scope可以在容器級別上監視和控制堆棧,并確切地了解容器在做什么以及原因,零配置并自動檢測所有進程,容器和主機,該工具可以檢查速度框,對于任何開發人員來說都是節省時間的工具。
Weave Scope可以監控kubernetes集群中的一系列資源的狀態、資源使用情況、應用拓撲、scale、還可以直接通過瀏覽器進入容器內部調試等。
隨著越來越多的工具針對更特定的工作流程進行開發,沒有一種工具在堆棧中占據永久的位置,并且可以隨時替換其中的任何一種以獲得更好,更高效或更具自定義性的東西。但是就目前而言,這些開源監視工具在每個DevOps團隊的監視工具中占據著至關重要的位置。
ELK Stack
Elasticsearch是ELK棧的一部分,全棧套件還有有Kibana,Beats和Logstash。盡管ELK棧被設計為集成解決方案,其中Elasticsearch通常用作支持工具。Elasticsearch是基于Luncene的java全文搜索引擎,也是最常用最強大的分布式可收縮日志存儲和檢索集群。Elasticsearch提供了RESTful廣泛而且精巧的API供訪問,該API可以支持近實時性的搜索用以支持數據發現。它幾乎與所有內容兼容,并與其他工具一起廣泛用于查詢數據庫。
Kibana是一個基于Elasticsearch的分析和可視化平臺,可直觀地瀏覽Elasticsearch集群中的數據。由于Kibana只是ELK棧中的可視化部分,因此也可以被替換為Grafana,Graphite或其他可視化工具。
Logstash是類似于Riemann的另一種流處理系統,可以從日志,指標,Web應用程序,數據存儲和各種AWS服務中提取流數據。Logstash還具有一個輸出插件,可以通過該插件將特定事件發送到Riemann,例如可警報的事件或需要Riemann采取措施的事件。
ELK棧已經被廣泛地應用于運維實時日志處理架構中,通常用于日志系統的存儲、處理和分析匯總。但是由于其實時性質,在云生態中,可以用于云集群的監控和故障排查分析。