在Logging這塊作了幾年,最近1年來愈來愈多的同窗來諮詢如何爲Kubernetes構建一個日誌系統或者是來求助在這過程當中遇到一系列問題如何解決,授人以魚不如授人以漁,因而想把咱們這些年積累的經驗以文章的形式發出來,讓看到這篇文章的同窗能少走彎路。這個系列文章定位爲長篇連載,內容偏向落地實操以及經驗分享,且內容會隨着技術的迭代而不按期更新。web
第一次聽到Kubernetes的名字是在16年,那個時候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個主要階段:less
在CNCF中,可觀察性的主要做用是問題的診斷,上升到公司總體層面,可觀察性(Observability)不只僅包括DevOps領域,還包括業務、運營、BI、審計、安全等領域,可觀察性的最終的目標是實現公司各個方面的數字化、智能化。分佈式
在阿里,幾乎全部的業務角色都會涉及到各式各樣的日誌數據,爲了支撐各種應用場景,咱們開發了很是多的工具和功能:日誌實時分析、鏈路追蹤、監控、數據加工、流計算、離線計算、BI系統、審計系統等等。日誌系統主要專一於數據的實時採集、清洗、智能分析與監控以及對接各種各樣的流計算、離線系統。微服務
單純日誌系統的解決方案很是多,相對也比較成熟,這裏就再也不去贅述,咱們這次只針對Kubernetes上的日誌系統建設而論。Kubernetes上的日誌方案相比咱們以前基於物理機、虛擬機場景的日誌方案有很大不一樣,例如:工具
相信在搞K8s日誌系統建設的同窗看到上面的難點分析都會深有感觸,後面咱們會從落地角度出發,詳細介紹在阿里咱們如何去搭建K8s的日誌系統,敬請關注。測試
原文連接url
本文爲雲棲社區原創內容,未經容許不得轉載。