溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

系列文章:云原生Kubernetes日志落地方案

發(fā)布時(shí)間:2020-08-13 22:11:31 來源:ITPUB博客 閱讀:221 作者:大濤學(xué)長 欄目:數(shù)據(jù)庫

在Logging這塊做了幾年,最近1年來越來越多的同學(xué)來咨詢?nèi)绾螢镵ubernetes構(gòu)建一個(gè)日志系統(tǒng)或者是來求助在這過程中遇到一系列問題如何解決,授人以魚不如授人以漁,于是想把我們這些年積累的經(jīng)驗(yàn)以文章的形式發(fā)出來,讓看到這篇文章的同學(xué)能少走彎路。這個(gè)系列文章定位為長篇連載,內(nèi)容偏向落地實(shí)操以及經(jīng)驗(yàn)分享,且內(nèi)容會隨著技術(shù)的迭代而不定期更新。

前言

第一次聽到Kubernetes的名字是在16年,那個(gè)時(shí)候Kubernetes還處于和Docker Swarm、Mesos方案的“三國鼎立時(shí)代”,Kubernetes由于一系列優(yōu)勢(可擴(kuò)展、聲明式接口、云友好)在這一競爭中嶄露頭角,最終獲得統(tǒng)治地位。Kubernetes作為CNCF最核心的項(xiàng)目(沒有之一),是Cloud Native(云原生)落地的底座,目前阿里已經(jīng)全面基于Kubernetes在開展全站的云原生改造,在1-2年內(nèi),阿里巴巴100%的業(yè)務(wù)都將跑在公有云上。

CloudNative在 CNCF的定義的核心是:在公有云、私有云、混合云等環(huán)境中,通過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),包括集群級別的日志、Metric和Trace。

為何我們需要日志系統(tǒng)

通常一個(gè)線上問題的定位流程是:通過Metric發(fā)現(xiàn)問題,根據(jù)Trace定位到問題模塊,根據(jù)模塊具體的日志定位問題原因。在日志中包括了錯(cuò)誤、關(guān)鍵變量、代碼運(yùn)行路徑等信息,這些是問題排查的核心,因此日志永遠(yuǎn)是線上問題排查的必經(jīng)路徑。
系列文章:云原生Kubernetes日志落地方案cdn.nlark.com/yuque/0/2019/png/347081/1567957254811-b4ac58ed-1e1b-4886-87dc-436154b57cb5.png">
在阿里的十多年中,日志系統(tǒng)伴隨著計(jì)算形態(tài)的發(fā)展在不斷演進(jìn),大致分為3個(gè)主要階段:

  1. 在單機(jī)時(shí)代,幾乎所有的應(yīng)用都是單機(jī)部署,當(dāng)服務(wù)壓力增大時(shí),只能切換更高規(guī)格的IBM小型機(jī)。日志作為應(yīng)用系統(tǒng)的一部分,主要用作程序Debug,通常結(jié)合grep等Linux常見的文本命令進(jìn)行分析。
  2. 隨著單機(jī)系統(tǒng)成為制約阿里業(yè)務(wù)發(fā)展的瓶頸,為了真正的Scale out,飛天項(xiàng)目啟動:2013年飛天5K項(xiàng)目正式上線。在這個(gè)階段各個(gè)業(yè)務(wù)開始了分布式改造,服務(wù)之間的調(diào)用也從本地變?yōu)榉植际?,為了更好的管理、調(diào)試、分析分布式應(yīng)用,我們開發(fā)了Trace(分布式鏈路追蹤)系統(tǒng)、各式各樣的監(jiān)控系統(tǒng),這些系統(tǒng)的統(tǒng)一特點(diǎn)是將所有的日志(包括Metric等)進(jìn)行集中化的存儲。
  3. 為了支持更快的開發(fā)、迭代效率,近年來我們開始了容器化改造,并開始了擁抱Kubernetes生態(tài)、業(yè)務(wù)全量上云、Serverless等工作。在這階段,日志無論從規(guī)模、種類都呈現(xiàn)爆炸式的增長,對日志進(jìn)行數(shù)字化、智能化分析的需求也越來越高,因此統(tǒng)一的日志平臺應(yīng)運(yùn)而生。

可觀察性的終極解讀

在CNCF中,可觀察性的主要作用是問題的診斷,上升到公司整體層面,可觀察性(Observability)不僅僅包括DevOps領(lǐng)域,還包括業(yè)務(wù)、運(yùn)營、BI、審計(jì)、安全等領(lǐng)域,可觀察性的最終的目標(biāo)是實(shí)現(xiàn)公司各個(gè)方面的數(shù)字化、智能化。
系列文章:云原生Kubernetes日志落地方案
在阿里,幾乎所有的業(yè)務(wù)角色都會涉及到各式各樣的日志數(shù)據(jù),為了支撐各類應(yīng)用場景,我們開發(fā)了非常多的工具和功能:日志實(shí)時(shí)分析、鏈路追蹤、監(jiān)控、數(shù)據(jù)加工、流計(jì)算、離線計(jì)算、BI系統(tǒng)、審計(jì)系統(tǒng)等等。日志系統(tǒng)主要專注于數(shù)據(jù)的實(shí)時(shí)采集、清洗、智能分析與監(jiān)控以及對接各類各樣的流計(jì)算、離線系統(tǒng)。

Kubernetes日志系統(tǒng)建設(shè)難點(diǎn)

系列文章:云原生Kubernetes日志落地方案
單純?nèi)罩鞠到y(tǒng)的解決方案非常多,相對也比較成熟,這里就不再去贅述,我們此次只針對Kubernetes上的日志系統(tǒng)建設(shè)而論。Kubernetes上的日志方案相比我們之前基于物理機(jī)、虛擬機(jī)場景的日志方案有很大不同,例如:

  1. 日志的形式變的更加復(fù)雜,不僅有物理機(jī)/虛擬機(jī)上的日志,還有容器的標(biāo)準(zhǔn)輸出、容器內(nèi)的文件、容器事件、Kubernetes事件等等信息需要采集。
  2. 環(huán)境的動態(tài)性變強(qiáng),在Kubernetes中,機(jī)器的宕機(jī)、下線、上線、Pod銷毀、擴(kuò)容/縮容等都是常態(tài),這種情況下日志的存在是瞬時(shí)的(例如如果Pod銷毀后該P(yáng)od日志就不可見了),所以日志數(shù)據(jù)必須實(shí)時(shí)采集到服務(wù)端。同時(shí)還需要保證日志的采集能夠適應(yīng)這種動態(tài)性極強(qiáng)的場景。
  3. 日志的種類變多,上圖是一個(gè)典型的Kubernetes架構(gòu),一個(gè)請求從客戶端需要經(jīng)過CDN、Ingress、Service Mesh、Pod等多個(gè)組件,涉及多種基礎(chǔ)設(shè)施,其中的日志種類增加了很多,例如K8s各種系統(tǒng)組件日志、審計(jì)日志、ServiceMesh日志、Ingress等。
  4. 業(yè)務(wù)架構(gòu)變化,現(xiàn)在越來越多的公司開始在Kubernetes上落地微服務(wù)架構(gòu),在微服務(wù)體系中,服務(wù)的開發(fā)更加復(fù)雜,服務(wù)之間的依賴以及服務(wù)底層產(chǎn)品的依賴越來越多,這時(shí)的問題排查將更加復(fù)雜,如果關(guān)聯(lián)各個(gè)維度的日志將是一個(gè)困難的問題。
  5. 日志方案集成困難,通常我們都會在Kubernetes上搭建一套CICD系統(tǒng),這套CICD系統(tǒng)需要盡可能的自動化的完成業(yè)務(wù)的集成和部署,其中日志的采集、存儲、清洗等也需要集成到這套系統(tǒng)中,并和K8s的聲明式部署方式盡可能一致。而現(xiàn)有的日志系統(tǒng)通常都是較獨(dú)立的系統(tǒng),集成到CICD中代價(jià)極大。
  6. 日志規(guī)模問題,通常在系統(tǒng)初期的時(shí)候我們會選擇自建開源的日志系統(tǒng),這種方式在測試驗(yàn)證階段或公司發(fā)展初期是沒有什么問題的,但當(dāng)業(yè)務(wù)逐漸增長,日志量增長到一定規(guī)模時(shí),自建的開源系統(tǒng)很多時(shí)候都會遇到各種各樣的問題,例如租戶隔離、查詢延遲、數(shù)據(jù)可靠性、系統(tǒng)可用性等。日志系統(tǒng)雖不是IT中最核心的路徑,但一旦關(guān)鍵時(shí)刻出現(xiàn)這些問題都將是非??膳碌挠绊?,例如大促的時(shí)候出現(xiàn)緊急問題,排查時(shí)多個(gè)工程師并發(fā)查詢把日志系統(tǒng)打爆,導(dǎo)致故障恢復(fù)時(shí)間變長,大促收到影響。

總結(jié)

相信在搞K8s日志系統(tǒng)建設(shè)的同學(xué)看到上面的難點(diǎn)分析都會深有感觸,后面我們會從落地角度出發(fā),詳細(xì)介紹在阿里我們?nèi)绾稳ゴ罱↘8s的日志系統(tǒng),敬請關(guān)注。

本文作者:元乙
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI