本文將介紹如何在云日志服務控制臺配置云容器引擎的日志接入與采集規則配置。
使用場景
云容器引擎業務日志采集功能是為用戶提供的天翼云云容器引擎集群內的業務日志采集工具,可以將集群內的業務日志采集至云日志服務中進行統一存儲。
日志采集功能需要為云容器引擎集群安裝日志采集ctg-log-operator插件并配置采集規則。采集插件安裝后,日志采集器將會在集群內以 DaemonSet 的形式運行,并根據用戶在云日志服務控制臺配置的采集規則(包括采集源、日志單元和日志切割方式等),從采集源進行日志采集。
前提條件
- 已創建日志項目與日志單元,詳情請參考創建日志項目與日志單元。
- 已創建天翼云云容器引擎。
應用日志接入步驟
-
登錄。
-
左側點擊【日志接入】菜單,進入日志接入頁面。選擇“云容器引擎-應用日志”進行容器接入配置。
-
選擇日志單元。
- 點擊“所屬日志項目”后的目標框,在下拉列表中選擇具體的日志項目,若沒有所需的日志項目,點擊“所屬日志項目”目標框后的“新建”,在彈出的創建日志項目頁面創建新的日志項目。
- 點擊“所屬日志單元”后的目標框,在下拉列表中選擇具體的日志單元,若沒有所需的日志單元,點擊“所屬日志單元”目標框后的“新建”,在彈出的創建日志單元頁面創建新的日志單元。
- 單擊“云容器引擎集群”后的目標框,在下拉列表中選擇具體的集群。
- 點擊下一步。
-
檢查依賴項。
系統將自動檢查以下檢查項是否符合要求,若檢測不通過,請根據頁面指引進行修復。- 云容器引擎需要處于正常運行狀態。
- 云容器引擎已安裝ctg-log-operator插件且插件版本滿足要求。
- 存在名為“ccse-group-集群ID”的主機組。
- 云容器引擎所在的VPC已創建云日志服務終端節點。
-
配置采集規則。
對日志采集設置具體的采集規則。具體請參考采集配置。 -
索引配置。(可選項)
具體查看索引配置。 -
點擊下一步后,接入成功后,可以點擊【返回接入配置列表】查看日志接入,也可單擊【查詢日志】查看該日志單元下的日志數據。
采集配置
您需要在日志接入流程中配置采集規則,采集器將按照該規則采集目標云容器引擎集群的日志。
采集配置的具體配置參數說明如下:
基本配置
采集規則名稱:自定義采集規則名稱,字符長度64以內,僅支持字母、數字、下劃線(_)和連字符(-),且必須以字母和數字開頭結尾。
數據源配置
選擇數據源類型,進行對應的數據源配置,包括以下參數:
-
日志類型。
- 容器標準輸出:采集集群內指定容器的標準輸出,僅支持Stderr和Stdout的日志。
- 文件日志:采集集群內指定容器的文件日志。
-
采集路徑配置:當選擇日志類型為文件日志時,您需要配置采集的日志路徑與日志文件名,采集器將監聽這些目錄(包含子層目錄)下所有匹配文件名規則的日志文件,并采集日志數據至云日志服務中。您可通過以下多種方式配置采集路徑:
-
采集單一目錄下的單一日志文件。示例:
/var/logs/a.log此例中,采集器將會監聽/var/log/目錄下以a.log命名的日志文件。
-
支持通配符模式進行目錄與文件名的模糊匹配,通配符(* )表示匹配多個任意字符,通配符(?) 表示匹配單個任意字符。示例如下:
采集路徑 示例說明 /var/logs/*/a.log 此例中,表示/var/logs/目錄下,任何一個目錄中存在a.log,都能進行日志匹配。 /var/logs/service-*/a.log 此例中,表示/var/logs/目錄下,任何一個以service-開頭的目錄中存在a.log,都能進行日志匹配。 /var/logs/service/a*.log 此例中,表示/var/logs/service目錄下,任何一個以a開頭的log類型日志文件,都能進行日志匹配。 /var/logs/*.log 此例中,表示/var/logs/目錄下,后綴名為.log的日志文件,都能進行日志匹配。 -
支持使用遞歸路徑,/**/表示當前目錄以及所有子目錄。示例:
/var/log/**/a.log此例中,采集器將會監聽/var/log/前綴路徑下子目錄中以a.log命名的日志文件,默認往里遞歸5個目錄層級,如:
/var/logs/1/a.log /var/logs/1/2/a.log /var/logs/1/2/3/a.log /var/logs/1/2/3/4/a.log /var/logs/1/2/3/4/5/a.log說明以上示例中的/1/2/3/4/5/,表示/var/logs目錄中,往里遞歸的5個目錄層級,在這5個目錄層級中只要存在a.log,都能進行日志匹配。若您需要遞歸更多的目錄層級,可修改當前頁面中的【最大目錄深度】字段。
采集路徑中只能出現一次**,不能出現兩個及以上。錯誤示例如:/var/logs/**/test/**/a.log。
采集路徑中第一個層級不允許為**,以避免誤采集系統文件,錯誤示例如:/**/logtest/a.log。
-
-
采集策略。
- 全量:采集新文件時,從文件的末尾開始讀;
- 增量:采集新文件時,從文件的開頭開始讀。(從增量改為全量,也僅從最后采集位置開始采集,若要全量采集日志請新建采集規則。全量最大采集10GB)
-
最大目錄深度:默認為5層,該配置控制日志采集的最大目錄深度,采集器不會采集所在目錄層級超過指定最大目錄深度的日志文件。當您的目標采集路徑包含模糊匹配時,建議配置合適的最大目錄深度,避免采集器性能浪費。
-
切割模式。
支持選擇切割模式以實現日志的結構化解析,目前采集器提供多種結構化解析方式,詳情如下:
| 解析方式 | 說明 |
|---|---|
| 單行全文 | 單行全文是指一條日志僅包含一行的內容,在采集的時候,將使用換行符來作為一條日志的結束符,即在日志文件中,以換行符分隔兩條日志。日志數據本身不再進行日志結構化處理,也不會提取日志字段。每條日志都會存在一個默認的字段__message__,采集器會將日志內容存放在__message__中。詳情請參考單行全文模式。 |
| 多行全文 | 多行全文日志是指一條完整的日志數據可能跨占多行,您需要指定首行正則以進行匹配,當某行日志匹配上預先設置的正則表達式,就認為是一條日志的開頭,而下一個行首出現則作為該條日志的結束標識符。日志內容同樣也會存放在__message__字段中。詳情請參考多行全文模式。 |
| 單行正則 | 單行正則模式用于處理結構化的日志,針對包含一行內容的日志,您需要指定一個正則表達式,采集器按照正則表達式將一條完整日志提取為多個 key-value 鍵值。詳情請參考單行正則模式。 |
| 多行正則 | 多行正則模式用于處理結構化的日志,針對包含多行內容的日志,您需要指定一個行首正則表達式用于匹配日志的開頭,并指定一個正則表達式用于提取多個值,采集器按照該正則表達式將一條完整日志提取為多個 key-value 鍵值。詳情請參考多行正則模式。 |
| 單行分隔符 | 單行分隔符模式支持通過配置的分隔符將一條日志分割成多個 key-value 鍵值,從而實現結構化處理,該模式僅適用于單行日志,每條完整的日志以換行符為結束標識符。詳情請參考單行分隔符模式。 |
| JSON | 支持解析Object類型的JSON日志,提取JSON日志內容作為Key-Value對,即Object首層的鍵作為Key,Object首層的值作為Value。詳情請參考JSON模式。 |
K8S匹配規則
當數據源類型選擇容器標準輸出和容器文件路徑時,您可設置K8s匹配規則。
注意
各匹配規則參數說明如下:
-
K8s Label白名單:可通過K8s Label白名單指定待采集的容器。若您要設置K8s Label白名單,則Label Key必填,Label Value選填。
說明若Label Value為空,則K8S Label中包含Label Key的容器都匹配。
若Label Value不為空,則K8S Label中包含Label Key=Label Value的容器才匹配。
Label Key需要全匹配,Label Value支持正則匹配。
多個白名單之間為或關系,即只要K8S Label滿足任一白名單即可被匹配。
-
K8s Label黑名單:可通過K8s Label黑名單排除不采集的容器。若您要設置K8s Label黑名單,則Label Key必填,Label Value選填。
說明若Label Value為空,則K8S Label中包含Label Key的容器都匹配。
若Label Value不為空,則K8S Label中包含Label Key=Label Value的容器才匹配。
Label Key需要全匹配,Label Value支持正則匹配。
多個黑名單之間為或關系,即只要K8S Label滿足任一白名單即可被匹配。
-
環境變量白名單:可通過環境變量指定待采集的容器。若您要設置環境變量白名單,則Label Key必填,Label Value選填。
說明若環境變量Label?Value為空,則容器環境變量中包含Label Key的容器都匹配。
若環境變量Label Value不為空,則容器環境變量中包含Label Key=Label Value的容器才匹配。
Label Key需要全匹配,Label Value支持正則匹配。
多個白名單之間為或關系,即只要容器的環境變量滿足任一鍵值對即可被匹配。
-
環境變量黑名單:可通過環境變量排除不采集的容器。若您要設置環境變量黑名單,則Label Key必填,Label Value選填。
說明若環境變量Label?Value為空,則容器環境變量中包含Label Key的容器都匹配。
若環境變量Label Value不為空,則容器環境變量中包含Label Key=Label Value的容器才匹配。
Label Key需要全匹配,Label Value支持正則匹配。
多個黑名單之間為或關系,即只要容器的環境變量滿足任一鍵值對即可被匹配。
-
容器名稱:通過容器名稱指定采集的容器,支持正則匹配。
-
K8s命名空間:通過K8s命名空間Namespace名稱指定采集的容器,支持正則匹配。
-
POD名稱:通過Pod名稱指定待采集的容器,支持正則匹配。
注意容器名稱、K8S命名空間、POD名稱至少填一個。
若不指定具體的容器、K8S命名空間或POD,請填寫.*。