【IT168 調查】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團隊的監控工具中佔據著重要位置。