Kubernetes 可觀測性:利用四個開源工具
2021 年的研究發現,驚人的 96% 的受訪者正在使用 Kubernetes 或計劃在不久的將來使用它——而 69% 的受訪者目前正在生產中使用 Kubernetes。Kubernetes 為大型組織和小型組織提供了許多好處:它提高了開發人員的生產力、降低了成本、提高了效率,并最終為最終用戶帶來了更好的體驗。
但是,雖然Kubernetes 有很多優勢,但它也帶來了一些挑戰。對于在 K8s 上運行工作負載的團隊來說,實施全面的監控堆棧是一個重要的早期步驟。在這篇文章中,我們將探討四種開源工具和技術,你可以使用它們來減少停機時間、更有效地進行故障排除,并全面了解集群內發生的一切。
開源工具和技術
云原生計算基金會 (CNCF) 已經孵化和畢業了許多用于監控和可觀察性的驚人技術和工具。其中四種工具和技術特別有用,可以被各種規模的組織利用。讓我們跳進去。
指標和警報
Prometheus于 2016 年 5 月 9 日被 CNCF 接受,是一個功能強大且 100% 開源的工具和時間序列數據庫。借助 Prometheus,工程團隊能夠大規模收集指標并配置警報。Prometheus 被新生的初創公司以及世界上一些最大的公司使用,例如 Digital Ocean、Ericsson 和 Docker。借助 Prometheus,團隊能夠使用PromQL編寫查詢并創建臨時表、圖表和警報。借助 Alertmanager,團隊能夠使用預配置和可自定義的警報來識別發生的重要問題。使用警報規則,用戶可以使用 Prometheus 表達式語言定義警報條件,然后將通知發送到外部服務。
Prometheus 有一個內置的可視化工具集,但通常與另一個可視化工具配對,例如Grafana或ContainIQ。將 Prometheus 連接到可視化工具很容易;Grafana 中有大量可用的預構建儀表板。由于 Prometheus 有許多集成和現有的導出器,因此使用官方導出器以及外部維護的選項將第三方指標橋接到 Prometheus 非常容易。
Prometheus 是 CNCF 的畢業項目。在GitHub 上,Prometheus 擁有超過 42,000 顆星和來自 700 多名貢獻者的貢獻。
鏈路追蹤
Jaeger于 2017 年 9 月 13 日被 CNCF 接受,是一個分布式追蹤的開源平臺。使用 Jaeger,工程師可以通過分布式事務監控或跟蹤進行監控和故障排除。與 Prometheus 一樣,Jaeger 被大大小小的團隊使用,并且被設計為大規模使用。像 Uber 這樣的公司使用 Jaeger 每天處理數十億個 span。
Jaeger 對于分析性能和延遲以及進行優化特別有用。使用 Jaeger,執行根本原因分析和研究服務依賴關系要容易得多。例如,Jaeger 可用于識別特定微服務的延遲峰值,包括影響最終用戶體驗的那些。Prometheus 和 Jaeger經常一起使用:Prometheus 提供了一個工具集來檢測你的基礎設施中的問題,而 Jaeger 通過深入研究各個請求來幫助你解決這些問題。
Jaeger 有一個名為 Jaeger Web UI 的原生 UI,它是用 Javascript 實現的。Jaeger 和 Kubernetes入門是一個簡單的過程。Jaeger Operator 可以安裝在 Kubernetes 集群上,并且可以為特定命名空間或整個集群啟用。Jaeger 是 CNCF 的畢業項目。在 GitHub 上,Jaeger 擁有超過 15,000 顆星和來自 200 多名貢獻者的貢獻。
標準化指標、日志、跟蹤
OpenTelemetry于 2019 年 5 月 17 日被 CNCF 接受,是一組工具、API 和 SDK,用于檢測、生成、收集和導出遙測數據。通過使用 OpenTelemetry,工程師能夠收集指標、日志和跟蹤,因此他們可以更深入地挖掘其基礎設施和應用程序的性能。
OpenTelemetry 是開源的、供應商中立的,并且在可觀察性方面受到許多大公司以及云提供商本身的支持。微服務架構有很多好處,但是當它們被大規模部署時,工程團隊可能會更難以查看服務的執行情況以及它們如何影響其他服務。指標、日志和跟蹤可以讓團隊全面了解正在發生的事情,但收集這些數據需要運行、操作和維護多個代理/收集器,這可能是一個挑戰。
OpenTelemetry 通過標準化將數據發送到可觀察性后端的格式來解決這個問題,無論它是開源工具還是付費解決方案。它消除了供應商鎖定的風險,因為團隊現在能夠使用標準格式輕松地在后端之間切換。
OpenTelemetry 是一個 CNCF 畢業項目,位于GitHub 上。
指標的多集群和長期存儲
Thanos于 2019 年 7 月 20 日被 CNCF 接受,它是一個開源項目,使工程師能夠通過高度可用的長期存儲選項擴展其 Prometheus 設置。Thanos 可以使用與 Prometheus 服務器在同一主機或同一 pod 上運行的sidecar輕松與 Prometheus 集成。與 Prometheus 一樣,Thanos 并沒有特別依賴于 Kubernetes,但這是流行的用例。Thanos 旨在以多種重要方式改進 Prometheus。首先,借助 Thanos,工程師可以通過允許跨多個服務和集群進行查詢來擴展他們的 Prometheus 設置。對于跨多個集群運行 Kubernetes 工作負載的公司來說,這是一種改進的方法,可以通過集中視圖幫助節省時間。其次,借助 Thanos,團隊能夠利用許多長期存儲選項,例如 S3。與 Prometheus 一樣,Thanos 可以與 Grafana 等可視化工具一起使用,并且它原生支持 Prometheus 查詢 API。Thanos 是一個 CNCF 孵化項目。在GitHub 上,Thanos 擁有超過 10,000 顆星和來自 400 多名貢獻者的貢獻。
其他注意事項
以下是一些需要考慮的其他最佳實踐。
- 緩慢擴展:雖然這些工具有很多好處,但團隊在實施過程中應該深思熟慮。在某些情況下,在整個基礎架構中使用這些工具之前,在有限的集合中或在單個集群中或在暫存環境中測試這些工具中的每一個可能是有意義的。
- 考慮使用托管產品:今天,許多云提供商都提供托管解決方案。例如,亞馬遜和谷歌云都管理過 Prometheus 產品。
- 鼓勵團隊合作:整個團隊都可以了解如何使用這些工具。擁抱學習,并為你的工程團隊提供他們需要的時間和資源,以便他們熟悉開源工具的世界。
- 警惕告警疲勞:告警疲勞是組織規模擴大時的真正挑戰。努力設置可操作的警報,并考慮定期重新調整警報,以確保它們創造價值而不是浪費時間。
總結
在本文中,我們介紹了四個工具集,它們可以增強和改進對在 Kubernetes 上運行工作負載的工程師的監控。
Prometheus 是許多組織的首選時間序列數據庫,當與 Thanos 一起使用時,它是一個長期的解決方案。
Jaeger 提供了修復你在基礎架構中檢測到的問題所需的額外上下文。OpenTelemetry 已經標準化了指標、日志和跟蹤的格式和收集,讓團隊高枕無憂并保持動態。
這些工具共同提供了有效排除故障所需的指標、日志和跟蹤,并確保你的最終用戶擁有出色的體驗。