6 个 K8s 日志系统建设中的典型问题,你遇到过几个?
作者 |? 元乙? 阿里云日志服務數據采集客戶端負責人,目前采集客戶端 logtail 在集團百萬規模部署,每天采集上萬應用數 PB 數據,經歷多次雙 11、雙 12 考驗。
導讀:隨著 K8s 不斷更新迭代,使用?K8s 日志系統建設的開發者,逐漸遇到了各種復雜的問題和挑戰。本篇文章中,作者結合自己多年經驗,分析 K8s 日志系統建設難點,期待為讀者提供有益參考。
在 Logging 這塊做了幾年,最近 1 年來越來越多的同學來咨詢如何為 Kubernetes 構建一個日志系統,或者是來求助在這過程中遇到一系列問題如何解決,授人以魚不如授人以漁,于是想把我們這些年積累的經驗以文章的形式發出來,讓看到這篇文章的同學能少走彎路。這個系列文章定位為長篇連載,內容偏向落地實操以及經驗分享,且內容會隨著技術的迭代而不定期更新。
前言
第一次聽到 Kubernetes 的名字是在 2016 年,那個時候 Kubernetes 還處于和 Docker Swarm、Mesos 方案的“三國鼎立時代”,Kubernetes 由于一系列優勢(可擴展、聲明式接口、云友好)在這一競爭中嶄露頭角,最終獲得統治地位。
Kubernetes 作為 CNCF 最核心的項目(沒有之一),是 Cloud Native(云原生)落地的底座,目前阿里已經全面基于 Kubernetes 在開展全站的云原生改造,在 1-2 年內,阿里巴巴 100% 的業務都將跑在公有云上。
CloudNative 在?CNCF 的定義的核心是:在公有云、私有云、混合云等環境中,通過 Containers、Service Meshes、 MicroServices、Immutable Infrastructure、Declarative APIs 構建和運行可彈性擴展的且具有高容錯性、易于管理、可觀察、松耦合的應用系統。可觀察性是應用系統必不可少的一個部分,云原生的設計理念中就有一條:面向診斷性設計(Diagnosability),包括集群級別的日志、Metric 和 Trace。
為何我們需要日志系統
通常一個線上問題的定位流程是:通過 Metric 發現問題,根據 Trace 定位到問題模塊,根據模塊具體的日志定位問題原因。在日志中包括了錯誤、關鍵變量、代碼運行路徑等信息,這些是問題排查的核心,因此日志永遠是線上問題排查的必經路徑。
在阿里的十多年中,日志系統伴隨著計算形態的發展在不斷演進,大致分為 3 個主要階段:
可觀察性的終極解讀
在 CNCF 中,可觀察性的主要作用是問題的診斷,上升到公司整體層面,可觀察性(Observability)不僅僅包括 DevOps 領域,還包括業務、運營、BI、審計、安全等領域,可觀察性的最終的目標是實現公司各個方面的數字化、智能化。
在阿里,幾乎所有的業務角色都會涉及到各式各樣的日志數據,為了支撐各類應用場景,我們開發了非常多的工具和功能:日志實時分析、鏈路追蹤、監控、數據加工、流計算、離線計算、BI 系統、審計系統等等。日志系統主要專注于數據的實時采集、清洗、智能分析與監控以及對接各類各樣的流計算、離線系統。
Kubernetes 日志系統建設難點
單純日志系統的解決方案非常多,相對也比較成熟,這里就不再去贅述,我們此次只針對 Kubernetes 上的日志系統建設而論。Kubernetes 上的日志方案相比我們之前基于物理機、虛擬機場景的日志方案有很大不同,例如:
相信在搞 K8s 日志系統建設的同學看到上面的難點分析都會深有感觸,后面我們會從落地角度出發,詳細介紹在阿里我們如何去搭建 K8s 的日志系統,敬請關注。
“ 阿里巴巴云原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術公眾號。”
總結
以上是生活随笔為你收集整理的6 个 K8s 日志系统建设中的典型问题,你遇到过几个?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CNCF 宣布成立应用交付领域小组,正式
- 下一篇: 云原生时代|分布式系统设计知识图谱(内含