Kubernetes Ingress 日誌分析與監控的最佳實踐

前言

目前Kubernetes(K8s)已經真正地佔領了容器編排市場,是默認的雲無關計算抽象,愈來愈多的企業開始將服務構建在K8s集羣上。在K8s中,組件經過Service對外暴露服務,常見的包括NodePort、LoadBalancer、Ingress等。其中Ingress主要提供HTTP層(7層)路由功能,相比TCP(4層)的負載均衡具有很是多的優點(路由規則更加靈活、支持金絲雀、藍綠、A/B Test發佈模式、SSL支持、日誌、監控、支持自定義擴展等),是目前K8s中HTTP/HTTPS服務的主流暴露方式。html

Ingress簡介

K8s中Ingress只是一種API資源的聲明,具體的實現須要安裝對應的Ingress Controller,由Ingress Controller接管Ingress定義,將流量轉發到對應的Service。目前Ingress Controller的實現有很是多種(具體能夠參考Ingress Controller官方文檔),比較流行的有Nginx、Traefik、Istio、Kong等,在國內接受度最高的是Nginx Ingress Controller。算法

日誌與監控

日誌和監控是全部Ingress Controller都會提供的基礎功能,日誌通常包括訪問日誌(Access Log)、控制日誌(Controller Log)和錯誤日誌(Error Log),監控主要從日誌以及Controller中提取部分Metric信息。這些數據中訪問日誌的量級最大、信息最多、價值也最高,通常7層的訪問日誌包括:URL、源IP、UserAgent、狀態碼、入流量、出流量、響應時間等,對於Ingress Controller這種轉發型的日誌,還包括轉發的Service名、Service響應時間等額外信息。從這些信息中,咱們可以分析出很是多的信息,例如:後端

  1. 網站訪問的PV、UV;
  2. 訪問的地域分佈、設備端分佈;
  3. 網站訪問的錯誤比例;
  4. 後端服務的響應延遲;
  5. 不一樣URL訪問分佈。

咱們的開發、運維、運營、安全等人員能夠基於這些信息完成各自的需求,例如:瀏覽器

  1. 新老版本發佈先後的數據指標對比;
  2. 網站質量監控、集羣狀態監控;
  3. 惡意攻擊檢測、反做弊;
  4. 網站訪問量統計、廣告轉化率統計。

然而手動搭建、運維一整套的Ingress日誌分析與監控系統很是複雜,系統所須要的模塊有:安全

  1. 部署日誌採集Agent並配置採集、解析規則;
  2. 因爲K8s集羣中,訪問量相對較大,所以須要搭建一個緩衝隊列,例如Redis、Kafka等;
  3. 部署實時數據分析引擎,例如Elastic Search、clickhouse等;
  4. 部署可視化組件並搭建報表,例如grafana、kibana等;
  5. 部署告警模塊並配置告警規則,例如ElastAlert、alertmanager等。

阿里雲日誌服務Ingress解決方案

爲簡化廣大用戶對於Ingress日誌分析與監控的門檻,阿里雲容器服務和日誌服務將Ingress日誌打通(官方文檔),只須要應用一個yaml資源便可完成日誌採集、分析、可視化等一整套Ingress日誌方案的部署。架構

Ingress可視化分析

日誌服務默認爲Ingress建立5個報表,分別是:Ingress概覽、Ingress訪問中心、Ingress監控中心、Ingress藍綠髮布監控中心、Ingress異常檢測中心。不一樣角色的人員可根據需求使用不一樣的報表,同時每一個報表均提供篩選框用於篩選特定的Service、URL、狀態碼等。全部的報表均基於日誌服務提供的基礎可視化組件實現,可根據公司實際場景進行定製化調整。負載均衡

Ingress概覽

Ingress概覽報表主要展現當前Ingress的總體狀態,主要包括如下幾類信息:運維

  1. 總體架構狀態(1天),包括:PV、UV、流量、響應延遲、移動端佔比、錯誤比例等;
  2. 網站實時狀態(1分鐘),包括:PV、UV、成功率、5XX比例、平均延遲、P95/P99延遲等;
  3. 用戶請求類信息(1天),包括:1天/7天訪問PV對比、訪問地域分佈、TOP訪問省份/城市、移動端佔比、Android/IOS佔比等;
  4. TOPURL統計(1小時),包括:訪問TOP十、延遲TOP十、5XX錯誤TOP十、404錯誤TOP10。

Ingress訪問中心

Ingress訪問中心主要側重於用於訪問請求相關的統計信息,通常用於運營分析,包括:當日UV/PV、UV/PV分佈、UV/PV趨勢、TOP訪問省份/城市、TOP訪問瀏覽器、TOP訪問IP、移動端佔比、Android/IOS佔比等。機器學習

Ingress監控中心

Ingress監控中心主要側重於網站實時監控數據,通常用於實時監控與告警,包括:請求成功率、錯誤比例、5XX比例、請求未轉發比例、平均延遲、P95/P99/P9999延遲、狀態碼分佈、Ingress壓力分佈、Service訪問TOP十、Service錯誤TOP十、Service延遲TOP十、Service流量TOP10等。工具

Ingress藍綠髮布監控中心

Ingress藍綠髮布監控中心主要用於版本發佈時的實時監控與對比(版本先後對比以及藍綠版本當前對比),以便在服務發佈時快速檢測異常並進行回滾。在該報表中須要選擇進行對比的藍綠版本(ServiceA和ServiceB),報表將根據選擇動態顯示藍綠版本相關指標,包括:PV、5XX比例、成功率、平均延遲、P95/P99/P9999延遲、流量等。

Ingress異常檢測中心

Ingress異常檢測中心基於日誌服務提供的機器學習算法,經過多種時序分析算法從Ingress的指標中自動檢測異常點,提升問題發現的效率。

實時監控與告警

Ingress做爲K8s網站請求的主要入口,實時監控與告警是必不可少的Ops手段之一。在日誌服務上,基於上述的報表,只需3個簡單的步驟便可完成告警的建立。下述示例爲Ingress配置5XX比例的告警,告警每5分鐘執行一次,當5XX比例超過1%時觸發。

除了通用的告警功能外,日誌服務還額外支持:

  1. 多維度數據關聯,即經過多組SQL結果交叉判斷進行告警,增長告警準確度;
  2. 除支持短信、語音、通知中心、email外,還支持釘釘機器人通知、自定義WebHook擴展;
  3. 告警的記錄也以日誌的形式記錄,能夠實現對告警失敗進行告警的雙保險。

訂閱報告

日誌服務除支持經過告警方式通知外,還支持報表訂閱功能,可以使用該功能將報表按期渲染成圖片並經過郵件、釘釘羣等方式發送。例如天天早上10點向運營羣中發送昨日網站訪問狀況、每週發送報告到郵件組中存檔、新版本發佈時每5分鐘發送一次監控報表...

自定義分析

若是容器服務Kubernetes版提供的默認報表沒法知足你的分析需求,能夠直接使用日誌服務SQL、儀表盤等功能進行自定義的分析和可視化。

嚐鮮

爲了讓你們能夠體驗Kubernetes審計日誌功能,咱們特別開通了體驗中心,你們能夠經過 https://promotion.aliyun.com/ntms/act/logdoclist.html 進入,該頁面提供了很是多和Kubernetes相關的報表。

參考文檔

  1. 阿里雲日誌服務
  2. 阿里雲容器服務Kubernetes版
  3. Ingress日誌分析與監控
  4. 告警配置
  5. 訂閱報表
  6. Ingress官方文檔
  7. Ingress Controller官方文檔

 一站式開發者服務,海量學習資源0元起!
阿里熱門開源項目、機器學習乾貨、開發者課程/工具、小微項目、移動研發等海量資源;更有開發者福利Kindle、技術圖書幸運抽獎,100%中--》https://www.aliyun.com/acts/product-section-2019/developer?utm_content=g_1000047140

原文連接

相關文章
相關標籤/搜索