作者:v神
導語:雲原生日志服務(Cloud Log Service,CLS)是騰訊雲提供的一站式日志資料解決平台,提供了從日志采集、日志存儲到日志檢索,圖表分析、監控告警、日志投遞等多項服務,協助使用者通過日志來解決業務運維、服務監控、日志審計等場景問題。
相信廣大k8s使用者在日志叢集運維中都曾經遇到過:
- 叢集中的某個應用被删除了,誰幹的?
- Apiserver的負載突然變高,大量通路失敗,叢集中到底發生了什麼?
- 叢集節點被封鎖了,是誰在什麼時候操作的?
以前,排查這些問題,對客戶來說并不容易。生産環境中的Kubernetes叢集通常是一個相當複雜的系統,底層是各種異構的主機、網絡、存儲等雲基礎設施,上層承載着大量的應用負載,中間運作着各種原生(例如:Scheduler、Kubelet)和第三方(例如:各種Operator)的元件,負責對基礎設施和應用進行管理和排程; 此外不同角色的人員頻繁地在叢集上進行部署應用、添加節點等各種操作。
現在,Kubernetes審計日志(Audit)正是幫助使用者快速解決這些問題的重要工具。
什麼是審計日志
在Kubernetes中,所有對叢集狀态的查詢和修改都是通過向Apiserver發送請求,而審計日志是Kube-apiserver産生的可配置政策的結構化日志,記錄了對Apiserver的通路事件。通過檢視、分析審計日志,可以追溯對叢集狀态的變更;了解叢集的運作狀況;排查異常;發現叢集潛在的安全、性能風險等等。
審計日志字段說明
每一條審計日志都是一個JSON格式的結構化記錄,包括中繼資料(metadata)、請求内容(requestObject)和響應内容(responseObject)3個部分。其中中繼資料一定會存在,請求和響應内容是否存在取決于審計級别。中繼資料包含了請求的上下文資訊,例如誰發起的請求,從哪裡發起的,通路的URI等等。

審計日志字段說明
如何使用審計日志去排查問題
日志服務CLS提供針對kubernetes審計日志的一站式服務,包含采集,存儲,檢索分析能力。使用者僅需一鍵開啟叢集審計日志功能,即可擷取開箱即用的審計日志可視化分析儀表盤。通過可視化的圖表,使用者可以輕松通過控制台解決大多數常見的運維問題,下面就讓我們一起看看如何使用。
前提條件:使用者購買TKE容器服務,開啟叢集審計日志,請參考操作指南
場景1:叢集中的某個應用被删除了,誰幹的?
進入TKE容器服務控制台,點選左側菜單中【叢集運維】>【審計檢索】。
在【審計檢索】頁面中單擊單擊【K8S對象操作概覽】标簽,指定操作類型為delete和資源對象。
K8S對象操作概覽
查詢結果如下圖所示:
K8S對象操作查詢結果
由圖可見,是
10001****7138
這個帳号,對應用「nginx」進行了删除。可根據帳号ID在【通路管理】>【使用者清單】中找到關于此賬号的詳細資訊。
場景2:Apiserver的負載突然變高,大量通路失敗,叢集中到底發生了什麼?
在【審計檢索】的【聚合檢索】标簽頁中,提供了從使用者、操作類型、傳回狀态碼等多個次元對于Apiserver通路聚合趨勢圖。
操作使用者分布趨勢統計
操作類型分布趨勢統計
狀态碼分布趨勢統計
通過以上圖表得知,使用者
tke-kube-state-metrics
的通路量遠高于其他使用者,并且在“操作類型分布趨勢”圖中可以看出大多數都是list操作,在“狀态碼分布趨勢”圖中可以看出,狀态碼大多數為403,根據
tke-kube-state-metrics
關鍵詞,檢索日志。
關鍵詞檢索結果頁面
結合業務日志可知,由于RBAC鑒權問題導緻
tke-kube-state-metrics
元件不停的請求Apiserver重試,導緻Apiserver通路劇增。
場景3:叢集節點被封鎖了,是誰在什麼時候操作的?
在【審計檢索】頁面中,單擊【節點操作概覽】标簽,填寫被封鎖的節點名。
節點操作概覽
查詢結果如下圖所示:
封鎖操作查詢結果頁面
由圖可見,是
10001****7138
這個帳号在
2020-1-30T06:22:18
時對
172.16.18.13
這台節點進行了封鎖操作。
以上就是本期TKE審計日志玩法分享,如果您有更多有意思的日志實踐,歡迎投稿分享!
一站式日志資料解決方案平台
往期文章:
【日志服務CLS】Nginx日志資料全方位大解析
對象存儲COS通路日志場景體驗
【日志服務CLS】騰訊雲日志服務CLS接入内容分發網絡CDN
【日志服務CLS】應用TKE事件日志排查異常場景體驗
CLB運維&營運最佳實踐 ---通路日志大洞察