linux系統在企業中的應用程度已經非常廣泛,人們聽到過太多關于Docker和Kubernetes的消息,以至于忘記了監控和日志記錄也是同樣重要的任務。Docker持續發展,隨之而來的是圍繞它構建的服務生態系統的成長。雖然部署系統主要涉及在系統內運行單個應用程序或服務,但隨著部署規模越來越大,不僅僅是在操作系統或應用程序級別,了解環境狀態和運行狀況也變得越來越重要。
監控和測試工具分為實時數據庫、數據采集工具、可視化工具、意見反饋工具、日志記錄器等等。在過去的幾年里,開源產品和商業監控應用程序發生了爆炸式增長,下面是其中10個最受歡迎的開源云監控工具。
Prometheus
Prometheus是一個開源云監控解決方案,它可以處理時間序列監控等問題。它是CNCF支持的9個項目之一,也是繼Kubernetes之后由CNCF主辦的第二個項目。因為谷歌、CoreOS、RedHat、IBM等廠商的支持,使得Prometheus成為監控云應用程序的首選。Prometheus最初是由音樂網站SoundCloud開發的,現在已經成為Docker生態系統中不可或缺的方案CoreOS團隊也在積極使用Prometheus來改進Kubernetes的性能。
Prometheus已經發展成為一種先進的系統警報和監視工具包,能夠監視包括系統、Hadoop集群、語言運行,以及Python、Go等應用程序堆棧。很多人將它與Graphite(見下文)進行比較。簡而言之,Prometheus是一個開源監控系統、時間序列數據庫和實現代碼的框架。 但是Prometheus不會生成指標,企業必須讓它能夠通過http以一種能夠理解的語言使指標可用。
Graphite
Graphite是一種流行的開源工具,可以構建基于web的用于監視和分析的儀表板。它最初是由Orbitz的Chris Davis在十多年前創建和設計,用于監視和繪制計算機系統的性能。目前被許多大型企業如GitHub、Salesforce和Reddit等用于企業系統。雖然Graphite不能收集指標或與指標收集器捆綁在一起,但要找到一個通用指標收集器來將指標提供給Graphite并不難。Graphite由三部分組成:監聽時間序列數據的Carbon,簡單數據庫Whisper(類似于RRDtool)以及名為Graphite-web的webApp,它可根據需要呈現圖表。Graphite在企業中仍然非常流行,其中一個原因可能是自動化水平較高,Graphite中所有新數據點都在數據庫中自動創建。
由于圍繞生態系統開發了太多工具,開源工具的目前狀態并不明朗。因為像Graphite這樣的工具既可以獨立運行,也可以與其他工具集成。
應用監控工具
Riemann
您可以使用Graphite webapp來繪制圖表,但是如果您想使用另一個工具呢?盡管Carbon會監聽指標并將其寫入存儲數據庫,但它確實在規模方面有短板,許多用戶喜歡用Riemann代替它。 然而,Riemann并不是一個度量收集器,而是一個流處理器。 Riemann用于聚合和處理事件流,同時還添加了警報功能。作為流處理系統,它可用于將事件提供給Prometheus數據庫。 Riemann在Clojure開發人員中特別受歡迎,因為它的配置文件實際上是可以高度定制和構建的Clojure代碼。 Riemann主要通過從事件流(如度量標準、日志、事件、主機和服務)收集數據,然后根據需要存儲、圖表或警報來工作。
Elasticsearch
Elasticsearch是ELK堆棧的一部分,它還具有Kibana、Beats和Logstash功能。雖然ELK堆棧被設計成一個集成的解決方案,但是Elasticsearch經常被用作支持工具,并且其補充功能非常強大。Elasticsearch是能夠通過廣泛而復雜的API訪問的搜索引擎,該API支持快速搜索,以支持數據發現應用程序。它幾乎兼容所有數據,并與其他查詢數據庫的工具廣泛集成。
Kibana
Kibana是一個分析和可視化平臺,它建立在Elasticsearch的基礎上,讓人可以直觀地瀏覽彈性堆棧。由于Kibana只是堆棧的可視化部分,所以它經常被替換為Grafana、Graphite或其他可視化工具。
Logstash
Logstash是另一個與Riemann類似的流處理系統,可以從日志、指標、web應用程序、數據存儲和各種AWS服務中攝取流數據。Logstash還有一個輸出插件,企業可以通過它向Riemann發送特定的事件,比如可警報的事件或需要Riemann操作的事件。同時它也是受歡迎的獨立工具,經常與其他工具一起使用。
將這些工具結合起來使用看起來就像是晚間肥皂劇一樣復雜,表面上看他們好像是其他工具的替代品,但實際上這些工具都是交叉兼容的,可以協作處理很多問題。
Grafana
Grafana是一個開源的、功能豐富的度量儀表板和圖形編輯器,用于Graphite、ElasticSearch、OpenTSDB、Prometheus和流數據庫。Grafana允許用戶輕松創建和編輯儀表板,同時允許查詢和可視化指標,無論數據存儲在哪里。Grafana同時支持高質量的交互式和可視化圖表,這使它變得非常受歡迎。
Grafana
Kafka
Kafka是另一個有趣的流處理系統,它的流是無限制的、不斷更新的數據集。雖然它最初是由LinkedIn開發來作為一個可擴展的公共子消息傳遞系統,但是現在它已經發展成為實時數據管道、分布式和復制日志分析器以及統一的數據集成堆棧。Kafka通常安裝在每個需要在其他地方生成或轉發數據的主機上,這些主機的集合形成一個Kafka集群。
FluentD
FluentD這是CNCF主持的另一個項目,是用C語言編寫的。FluentD是一個開源的解決方案,旨在統一數據收集和使用。它聲稱“快速啟動”菜單可以使用戶實時擁有超過125種系統類型的“log-everything”體系結構。該聲明得到了CNCF的支持,而FluentD的最大用戶目前從50,000多臺服務器收集信息。
Weave Scope
Weave Scope的功能包括監視、可視化、管理和故障排除。它還可以自動創建應用程序的“地圖”,而不需要任何編碼或設置。這允許您在系統級別監視和控制堆棧,并實時查看系統正在執行的操作以及原因。通過零配置和對所有進程、系統和主機的自動檢測,Weave Scope可以檢查速度框,可以大幅度節省開發人員的時間。
隨著越來越多的開源監控工具被開發來用于更具體的工作,沒有一款工具的地位是完全穩固的。每一款都有可能被其他更高效、更安全的工具所替代。但就目前而言,以上這些開源監控工具在每個DevOps團隊的監控工具中占據著重要位置。