2020年非常值得推薦的7種 Kubernetes 日志管理工具
你可能會奇怪,為什么要為 Kubernetes 的日志管理工具而煩惱?
Kubernetes 是容器編排市場的主導(dǎo)者,經(jīng)常被用來托管微服務(wù)。微服務(wù)的每個實(shí)例都會生成大量的日志事件,并且這些事件很快就會變得難以管理。但是,更糟糕的是,當(dāng)問題發(fā)生時,由于服務(wù)之間的復(fù)雜的交互以及幾乎無窮無盡的可能故障模式,很難找到問題根源。這種潛在的問題推動了 Kubernetes 日志管理工具的流行。
但是為什么我們有如此多的工具呢?是否存在一種完美的工具,能夠滿足每一種需求,并盡可能高效、快速地進(jìn)行監(jiān)控、日志記錄和根源分析?你可能已經(jīng)猜到了,答案是否定的。
大多數(shù) Kubernetes 日志管理工具都是 ELK 的變體,具有相似的功能并且具有相似的局限性。這些工具可以幫助你訪問日志并搜索信息,但問題是,你需要知道要查找的內(nèi)容。這些工具中的大多數(shù)還需要解析規(guī)則和警報規(guī)則才能正常工作。但我遇到了一個例外,它不需要手動創(chuàng)建規(guī)則就可以自動檢測問題。
下面是我列出的 2020 年 Kubernetes 最佳日志管理工具清單。
1. Zebrium
你認(rèn)為會先出現(xiàn)其他工具嗎?還是 Prometheus 或者 ELK?沒有,我將 Zebrium 放在第一位,是因?yàn)槲铱吹竭@個東西有潛力成為 Kubernetes 日志管理的下一個大殺器。
最近,這家新成立的初創(chuàng)公司被評為“Gartner 2020 年最值得關(guān)注的 25 家企業(yè)軟件初創(chuàng)公司”,并被評為“Forbes 人工智能 50 強(qiáng):美國最有前途的人工智能公司”。
談到成功,Zebrium 最近還幫助 Sweetwater 將事件跟蹤時間 從 3 小時縮短到僅僅幾分鐘。Zebrium 甚至能發(fā)現(xiàn)以前沒有注意到的隱藏問題。這個功能非常棒,因?yàn)樗軌蛟趩栴}影響客戶之前就發(fā)現(xiàn)問題。
那又是什么讓 Zebrium 的方法在競爭中脫穎而出呢?嗯,他們利用人工智能來發(fā)現(xiàn)問題,并自動找出問題根源,而所有其他的工具都依靠用戶手動添加規(guī)則。Zebrium 還可以用作一個獨(dú)立的日志管理平臺,也可以與 ELK Stack(他們稱之為 ZELK 棧)或其他日志管理器集成。
這聽起來像是夢想成真,所以我在一個非常簡單的項(xiàng)目上對它進(jìn)行了測試。在這個測試中,Zebrium 自動檢測到網(wǎng)絡(luò)調(diào)用超時的問題。而我并沒有為此建立任何規(guī)則,也沒有手動監(jiān)視系統(tǒng)。Zebrium 剛剛通過其基于機(jī)器學(xué)習(xí)算法就發(fā)現(xiàn)了這個問題,并立即通知了我。
還需要指出的是,我并非專業(yè)的 DevOps 工程師,況且我也沒有在更大的項(xiàng)目中測試過 Zebrium。
優(yōu)點(diǎn)
易于上手;只需復(fù)制 / 粘貼自定義的 helm 或 kubectl 命令即可。
自動檢測問題和問題根源,無需手動添加規(guī)則。
可以用作獨(dú)立的日志管理工具,也可以作為現(xiàn)有日志管理工具(如 ELK 棧)的機(jī)器學(xué)習(xí)附加組件。
缺點(diǎn)
沒有競爭對手那么出名。
免費(fèi)套餐每天限 500MB,有效期 3 天。
支持 Kubernetes、Docker 和大多數(shù)常用平臺,但對 Windows 尚未提供原生支持。
官網(wǎng):https://www.zebrium.com/
2. Sematext
這是一個用于日志管理和應(yīng)用程序性能監(jiān)視的解決方案。Sematext 提供了系統(tǒng)狀態(tài)的全??梢娦?。
Sematext 并不僅限于 Kubernetes 日志,它還根據(jù)度量標(biāo)準(zhǔn)和日志對 Kubernetes 進(jìn)行監(jiān)控和報警。收集的日志針對幾種不同的已知日志格式自動解析 / 結(jié)構(gòu)化,并且用戶還可以提供自定義日志的模式。它還公開了 Elasticesarch API,因此,你可以使用任何支持 Elasticsearch 的工具,比如 FileBeat 以及帶有 Sematext 的 Logstash。你可以將它用作 ELK 的變體,也可以與原生 Sematext 生態(tài)系統(tǒng)一起使用。該工具有助于創(chuàng)建特定的規(guī)則來監(jiān)視特定的案例并捕獲異常情況。客戶端可以控制和監(jiān)控所有服務(wù),這要?dú)w功于 Sematext 全面實(shí)時儀表板。
優(yōu)點(diǎn)
與其他 Sematext Cloud 工具集成(如 Experience 和 Infrastructure Monitoring)集成。
可配置的超時控制通過組織日志被接收來控制成本。
ELK 的靈活性。
缺點(diǎn)
Sematext 小工具和 Kibana 無法在一個儀表板上混合使用。
需要在日志傳遞程序中進(jìn)行自定義解析,Sematext 僅在服務(wù)器端解析 Syslog 和 JSON。
盡管他們計劃改進(jìn)跟蹤功能,但跟蹤功能較弱。
官網(wǎng):https://sematext.com/
3. Grafana Loki
Kubernetes 日志監(jiān)視工具列表的第三位并不是 ELK,而是 Loki。受 Prometheus 的啟發(fā),Loki 是一個多租戶、高可用的日志聚合工具。該工具可以幫助收集日志,但用戶需要為其構(gòu)建手動規(guī)則。Loki 和 Grafana、Prometheus 和 Kubernetes 一起使用。Loki 可以讓你的內(nèi)部流程更加高效。舉例來說,它為 Paytm Insider 節(jié)省了 75% 的記錄和監(jiān)控成本。由于沒有對日志內(nèi)容進(jìn)行索引,而只是為每個事件流索引一組標(biāo)簽,因此 Loki 實(shí)現(xiàn)了很高的效率。
優(yōu)點(diǎn)
大型生態(tài)系統(tǒng)。
豐富的格式化功能。
由于日志內(nèi)容沒有被索引,所以效率很高。
缺點(diǎn)
沒有針對 Kubernetes 日志管理進(jìn)行優(yōu)化。
構(gòu)建規(guī)則需要大量的手工工作。
缺少內(nèi)容索引可能會限制搜索性能。
官網(wǎng):https://grafana.com/oss/loki/
4. Elastic Stack
ELK 最終名列第四??偟膩碚f,ELK 可能是最為著名的開源日志管理工具。ELK 是 Elasticsearch、Logstash 和 Kibana 的首字母縮寫。每個組件負(fù)責(zé)日志記錄過程的不同部分。Elasticsearch 是一個功能強(qiáng)大的、且可擴(kuò)展的搜索系統(tǒng),Logstash 聚合和處理日志,Kibana 提供分析和可視化界面,幫助用戶理解數(shù)據(jù)。它們共同為 Kubernetes 提供了全面的日志記錄解決方案。請注意,ELK 棧還有許多其他變體(如 EFK 棧:Elasticsearch、Flunentd 和 Kibana)。
許多大公司都在使用 ELK,比如 Adobe、T-Mobile 和 Walmart 等等,因此你可以確定它的健壯性??偟恼f來,這是一個可靠且經(jīng)過充分驗(yàn)證的工具。我之所以將它放在第四位,是因?yàn)樗膹?fù)雜性和工作所需的大量資源。
優(yōu)點(diǎn)
該工具廣為人知,并擁有一個龐大的社區(qū)。
非常廣泛的平臺支持。
在 Kibana 中具有豐富的分析和可視化功能。
需要對日志進(jìn)行復(fù)雜的分析,并手動定義警報規(guī)則。
缺點(diǎn)
難以維持規(guī)模。
需要進(jìn)行大量調(diào)優(yōu),特別是對于大型環(huán)境。
需要大量的資源請求。
有些功能需要付費(fèi)許可。
官網(wǎng):https://www.elastic.co/what-is/elk-stack
5. Google Operations(前身為 Stackdriver)
Google Operations,也就是你可能知道的 StackDriver,是用于在科技巨擘 Google 的環(huán)境中監(jiān)控、故障排除和提高應(yīng)用程序性能的原生工具。它收集 Google Cloud 和你的應(yīng)用程序上的度量指標(biāo)、日志和跟蹤。Google Operations 相當(dāng)于 AWS 的 CloudWatch,而且和 CloudWatch 一樣,它也有日志記錄和監(jiān)控解決方案。
Cloud Logging 與 GKE 深度集成,并將默認(rèn)情況下添加到你創(chuàng)建的每個 GKE 集群中。你的日志存儲在 Logging 的數(shù)據(jù)存儲中,并被索引用于搜索和可視化。Cloud Logging 支持靈活的查詢(可保存)、簡單的字段探索和直方圖可視化,并能與 Google 基礎(chǔ)設(shè)施的其他工具無縫集成。
優(yōu)點(diǎn)
實(shí)時日志管理和分析。
度量指標(biāo)本身就具有可觀測性。
大量的集成。
缺點(diǎn)
由于請求需經(jīng)過不同級別的 Google Cloud Platform(GCP),因此很難跟蹤真正的延遲。
僅適用于 GCP 環(huán)境。
價格體系復(fù)雜,很難預(yù)估出某些東西的成本。
官網(wǎng):https://cloud.google.com/products/operations
6. CloudWatch
CloudWatch 是 Amazon Web Service 提供的 AWS 原生產(chǎn)品。它從 AWS 收集監(jiān)控和運(yùn)營數(shù)據(jù),并在一個自動化儀表板上將其進(jìn)行可視化。這使你能夠查看并關(guān)聯(lián)日志和指標(biāo),以了解問題的根本原因。日志可以使用 CloudWatch 自己專門構(gòu)建的查詢語言來分析,該語言支持聚合、過濾器和正則表達(dá)式。你也可以通過 Lambda 將日志發(fā)送到 Elasticsearch。
總的來說,如果你已經(jīng)在使用 Amazon 服務(wù),那么 CloudWatch 就是一個很不錯的選擇。它還可以在混合云架構(gòu)中使用,并使用代理或 API 來監(jiān)控內(nèi)部資源。很多知名公司,如 Airbnb、Deliveroo、9GAG 等,都在使用 CloudWatch。由于 DynamoDB TTL 的存在,它每年還可以為公司節(jié)省數(shù)百萬美元的開支。
優(yōu)點(diǎn)
專門為監(jiān)視 AWS 資源而構(gòu)建。
具有最高容許實(shí)例度量指標(biāo)(t2 CPU 積分余額)。
詳細(xì)的監(jiān)視和自動伸縮組。
缺點(diǎn)
它只能用于 AWS 服務(wù)。
儀表板的自定義選項(xiàng)并不多。
不支持事務(wù)跟蹤。
官網(wǎng):https://aws.amazon.com/cloudwatch/
7. Fluentd
Fluentd 是一個跨平臺的開源數(shù)據(jù)收集器,提供了統(tǒng)一的日志記錄層(但它并不是獨(dú)立的日志管理器)。這是一個非常流行的工具,擁有超過 5000 名用戶,包括 Atlassian、Microso 和 Amazon。從客戶端來看,我們可以得出高水平的可靠性和性能。此外,F(xiàn)luentd 還創(chuàng)建了一個統(tǒng)一的日志記錄層,幫助你更有效地使用數(shù)據(jù),并在軟件上對數(shù)據(jù)進(jìn)行快速的迭代。這個工具可以幫助你每秒處理 120000 條記錄,就像處理 LINE 一樣。
優(yōu)點(diǎn)
大型社區(qū)和插件生態(tài)系統(tǒng)。
統(tǒng)一的日志記錄層。
經(jīng)驗(yàn)證的可靠性和性能。
啟動簡單,可以在十分鐘內(nèi)完成安裝。
缺點(diǎn)
配置困難。
對轉(zhuǎn)換數(shù)據(jù)的支持有限。
不是完整的日志解決方案。
官網(wǎng):https://www.fluentd.org/
8. 結(jié)論:如何選擇合格的工具
首先,我應(yīng)該解釋一下我為何沒有將 Prometheus 列入名單,因?yàn)槲铱隙銜吹降?。這是因?yàn)楸疚闹饕懻撊罩颈O(jiān)視工具,而 Prometheus 處理的是度量指標(biāo),并不支持日志管理。
因此,如果你厭倦了手動查找日志以查找問題根源,或厭倦了構(gòu)建和管理警報規(guī)則,那么你應(yīng)該嘗試使用 Zebrium 及其基于人工智能和機(jī)器學(xué)習(xí)的算法。這可能會為你節(jié)省大量時間,讓你從制定大量規(guī)則的艱巨任務(wù)中解脫出來。這看起來是一種非常有趣的日志記錄方法。
不過,如果你正在尋找一些更主流的工具,并且知道要創(chuàng)建哪些警報規(guī)則,或者你不信任人工智能,那么可以試試 Loki 或 Sematext,如果你以前沒有使用過日志監(jiān)視工具的話,它們都是非常有效的工具。如果你已經(jīng)使用 Grafana 或者 Sematext Cloud/Enterprise 產(chǎn)品,它們將會特別有用。
如果你的項(xiàng)目使用 Google 的 GCP 產(chǎn)品,那么,一個很好的、并且相當(dāng)明顯的變體可能就是 Google Operations。
如果你有多個或外來的日志源,可以嘗試 Fluentd 的統(tǒng)一日志記錄層,但你仍然需要日志記錄工具。當(dāng)然,如果你是 AWS 用戶的話,CloudWatch 將是你的自然選擇。