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