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

Ingress 主要提供 HTTP 層(7 層)路由功能,是目前 K8s 中 HTTP/HTTPS 服務的主流暴露方式。爲簡化廣大用戶對於 Ingress 日誌分析與監控的門檻,阿里雲容器服務和日誌服務將 Ingress 日誌打通,只須要應用一個 yaml 資源便可完成日誌採集、分析、可視化等一整套 Ingress 日誌方案的部署。html

前言

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

Ingress 簡介

K8s 中 Ingress 只是一種 API 資源的聲明,具體的實現須要安裝對應的 Ingress Controller,由 Ingress Controller 接管 Ingress 定義,將流量轉發到對應的 Service。目前 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 日誌打通(官方文檔https://help.aliyun.com/document_detail/86532.html[](https://help.aliyun.com/document_detail/86532.html)),只須要應用一個 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相關的報表。


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索