Log Service(Log Service,簡稱 LOG)是針對日誌類資料的一站式服務。您無需開發就能快捷完成日誌資料擷取、消費、投遞以及查詢分析等功能。在Knative中結合Log Service,能有效提升對Serverless應用的營運能力。本文介紹如何在Knative中使用Log Service收集Serverless應用程式容器日誌,採用Log Service收集、分析業務日誌,滿足生產層級的Serverless應用營運的訴求。
前提條件
已開通Log Service。具體操作,請參見通過Log Service採集Kubernetes容器日誌。
已為叢集部署Knative。具體操作,請參見在ACK叢集中部署Knative。
步驟一:部署服務
本文部署一個名稱為helloworld-go
的Knative服務。具體操作,請參見快速部署Serverless應用。
步驟二:為服務接入日誌採集
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在叢集資訊頁面,單擊叢集資源頁簽,然後單擊Log Service Project右側的連結。
在helloworld-go專案頁面的左下角,單擊接入資料,為helloworld-go服務接入日誌採集。
在快速資料接入頁面的Docker標準輸出 - 容器的卡片上,單擊立即接入,然後根據頁面提示進入Docker標準輸出配置頁面。
在選擇日誌空間配置中,確認日誌空間資訊並單擊下一步。
設定建立機器組。
已在前提條件中安裝ogtail-ds日誌組件,因此請單擊使用現有機器組。
您可以選擇Kubernetes或者標準Docker採集進行日誌採集。具體操作,請參見通過Log Service採集Kubernetes容器日誌和採集標準Docker容器日誌。
設定機器組配置,完成後單擊下一步。
在資料來源設定嚮導頁面,單擊切換為編輯器配置,然後設定外掛程式配置。
本文針對helloworld-go服務,設定採集的環境變數為:
"K_SERVICE": "helloworld-go"
。並且通過processors分割日誌資訊,如這裡"Keys": [ "time","level", "msg" ]
。外掛程式配置樣本如下。{ "inputs": [ { "detail": { "IncludeEnv": { "K_SERVICE": "helloworld-go" }, "IncludeLabel": {}, "ExcludeLabel": {} }, "type": "service_docker_stdout" } ], "processors": [ { "detail": { "KeepSource": false, "NoMatchError": true, "Keys": [ "time", "level", "msg" ], "NoKeyError": true, "Regex": "(\\d+-\\d+-\\d+\\s+\\d+:\\d+:\\d+)\\s+(\\w+)\\s+(.*)", "SourceKey": "content" }, "type": "processor_regex" } ] }
資料來源設定完成後,單擊下一步。
在查詢分析配置頁面,開啟全文索引,設定查詢欄位索引屬性。
單擊下一步進入結束頁面。
執行以下命令,訪問helloworld-go樣本服務。
此時會產生日誌資訊。
curl -H "Host: helloworld-go.default.example.com" http:<網關IP> # 網關IP和網域名稱請以您的實際資料為準。
預期輸出:
Hello Knative!
在日誌庫的目標日誌右側懸浮滑鼠至表徵圖上,選擇 ,可以看該logstore的日誌資訊。
設定查詢分析。
關於如何查詢和分析日誌,請參見查詢和分析日誌。