做者 | 元乙 阿里雲日誌服務數據採集客戶端負責人,目前採集客戶端 logtail 在集團百萬規模部署,天天採集上萬應用數 PB 數據,經歷屢次雙 十一、雙 12 考驗。web
導讀:隨着 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 定位到問題模塊,根據模塊具體的日誌定位問題緣由。在日誌中包括了錯誤、關鍵變量、代碼運行路徑等信息,這些是問題排查的核心,所以日誌永遠是線上問題排查的必經路徑。
less
在阿里的十多年中,日誌系統伴隨着計算形態的發展在不斷演進,大體分爲 3 個主要階段:分佈式
在 CNCF 中,可觀察性的主要做用是問題的診斷,上升到公司總體層面,可觀察性(Observability)不只僅包括 DevOps 領域,還包括業務、運營、BI、審計、安全等領域,可觀察性的最終的目標是實現公司各個方面的數字化、智能化。
微服務
在阿里,幾乎全部的業務角色都會涉及到各式各樣的日誌數據,爲了支撐各種應用場景,咱們開發了很是多的工具和功能:日誌實時分析、鏈路追蹤、監控、數據加工、流計算、離線計算、BI 系統、審計系統等等。日誌系統主要專一於數據的實時採集、清洗、智能分析與監控以及對接各種各樣的流計算、離線系統。
工具
單純日誌系統的解決方案很是多,相對也比較成熟,這裏就再也不去贅述,咱們這次只針對 Kubernetes 上的日誌系統建設而論。Kubernetes 上的日誌方案相比咱們以前基於物理機、虛擬機場景的日誌方案有很大不一樣,例如:測試
相信在搞 K8s 日誌系統建設的同窗看到上面的難點分析都會深有感觸,後面咱們會從落地角度出發,詳細介紹在阿里咱們如何去搭建 K8s 的日誌系統,敬請關注。阿里雲
本文爲雲棲社區原創內容,未經容許不得轉載。