通过腾讯云日志服务收集TKE日志
在2年前的kubernetes1.12版本中,使用了EFK的方案來收集日志,那時候不管是程序還是nginx日志都沒有格式化,本次項目主要為游戲的官網項目,分為前端和后端,主要使用LNMP架構,所以本次要收集的日志就是nginx和php的日志,在kubernetes1.12實戰中,nginx日志沒有配置為json,導致寫了大量的日志采集規則,在今天的TKE1.18中,nginx將格式化為json,這樣更容易維護以及采集。
1.操作場景
日志采集功能是容器服務 TKE 為用戶提供的集群內日志采集工具,可以將集群內服務或集群節點特定路徑文件的日志發送至騰訊云日志服務(CLS)。日志采集功能適用于需要對 Kubernetes 集群內服務日志進行存儲和分析的用戶。
日志采集功能需要為每個集群手動開啟并配置采集規則。日志采集功能開啟后,日志采集 Agent 會在集群內以 DaemonSet 的形式運行,并根據用戶通過日志采集規則配置的采集源、CLS 日志主題和日志解析方式,從采集源進行日志采集,將日志內容發送到 CLS 并存儲。可根據以下操作開啟日志采集功能:
開啟日志采集
采集容器標準輸出日志
采集容器文件日志
采集節點文件日志
2.前提條件
請在開啟前保證集群節點上有足夠資源。開啟日志采集功能會占用您集群的部分資源。
占用 CPU 資源:0.11 - 1.1核,日志量過大時可根據情況自行調大。
占用內存資源:24 - 560MB,日志量過大時可根據情況自行調大。
日志長度限制:單條512K,如超過會截斷。
若使用日志采集功能,請確認 Kubernetes 集群內節點能夠訪問日志服務 CLS。且以下日志采集功能僅支持 Kubernetes 1.10 及以上版本集群。
3.概念
日志采集 Agent:TKE 用于采集日志信息的 Agent,采用 Loglistener,在集群內以 DaemonSet 的方式運行。
日志規則:用戶可以使用日志規則指定日志的采集源、日志主題、日志解析方式和配置過濾器。
日志采集 Agent 會監測日志采集規則的變化,變化的規則會在最多10s內生效。
多條日志采集規則不會創建多個 DaemonSet,但過多的日志采集規則會使得日志采集 Agent 占用的資源增加。
日志源:包含指定容器標準輸出、容器內文件以及節點文件。
在采集容器標準輸出日志時,用戶可選擇所有容器、或指定工作負載和指定 Pod Labels 內的容器服務日志作為日志的采集源。
在采集容器文件路徑日志時,用戶可指定工作負載或 Pod Labels 內容器的文件路徑日志作為采集源。
在采集節點文件路徑日志時,用戶可設定日志的采集源為節點文件路徑日志。
消費端:用戶選擇日志服務 CLS 的日志集和日志主題作為消費端。
提取模式:日志采集 Agent 支持將采集到的日志以單行文本、JSON、分隔符、多行文本和完全正則的形式發送至用戶指定的日志主題。
過濾器:開啟過濾器后可以根據用戶指定的規則采集部分日志,key 支持完全匹配,過濾規則支持正則匹配,如僅采集 ErrorCode = 404 的日志。
4.操作步驟
4.1 開啟日志采集
1.登錄容器服務控制臺,選擇左側導航欄中的集群運維>功能管理。
2.在“功能管理”頁面上方選擇地域,單擊需要開啟日志采集的集群右側的設置。如下圖所示:
3.在“設置功能”頁面,單擊日志采集編輯,開啟日志采集后確認。如下圖所示:
4.2 配置日志規則
1.登錄容器服務控制臺,選擇左側導航欄中的集群運維>日志規則。
2.在“日志采集”頁面上方選擇地域和需要配置日志采集規則的集群,單擊新建。如下圖所示:
3.在“新建日志采集規則”頁面中,選擇采集類型,并配置日志源。目前采集類型支持容器標準輸出、容器文件路徑和節點文件路徑。
說明:
對于容器的標準輸出及容器內文件(非 hostPath 掛載),除了原始的日志內容, 還會帶上容器或 kubernetes 相關的元數據(例如:產生日志的容器 ID)一起上報到 CLS,方便用戶查看日志時追溯來源或根據容器標識、特征(例如:容器名、labels)進行檢索。
容器或 kubernetes 相關的元數據請參考下方表格
| 字段名 | 含義 |
| container_id | 日志所屬的容器 ID。 |
| container_name | 日志所屬的容器名稱。 |
| image_name | 日志所屬容器的鏡像名稱 IP。 |
| namespace | 日志所屬 pod 的 namespace。 |
| pod_uid | 日志所屬 pod 的 UID。 |
| pod_name | 日志所屬 pod 的名字。 |
| pod_lable_{label name} |
日志所屬 pod 的 label(例如一個 pod 帶有兩個 label:app=nginx,env=prod, 則在上傳的日志會附帶兩個 metedata:pod_label_app:nginx,pod_label_env:prod)。 |
4.配置日志服務 CLS 為消費端。選擇日志集和相應的日志主題,可以選擇新建和已有日志主題。如下圖所示:
注意:
日志服務 CLS 目前只能支持同地域的容器集群進行日志采集上報。
若日志主題下已存在10個日志主題,則不能新建日志主題。
5.單擊下一步,選擇日志提取模式。如下圖所示:
注意:一個日志主題目前僅支持一個采集配置,請保證選用該日志主題的所有容器的日志都可以接受采用所選的日志解析方式。若在同一日志主題下新建了不同的采集配置,舊的采集配置會被覆蓋。
6.根據需求開啟過濾器并配置規則,并單擊完成,完成創建。如下圖所示:
(這里配置的是不符合日志采集格式的采集出來用什么標識)
參考文檔:https://cloud.tencent.com/document/product/457/36771
作者:小家電維修
相見有時,后會無期。
總結
以上是生活随笔為你收集整理的通过腾讯云日志服务收集TKE日志的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ2828 Buy Ticket
- 下一篇: C#事务提交