將日志服務(wù)接入注冊集群
注冊集群接入日志服務(wù)可以為分布在各處的Kubernetes集群提供統(tǒng)一的管理方式。本文介紹如何通過阿里云容器服務(wù)Kubernetes版中的應(yīng)用將日志服務(wù)接入注冊集群。
前提條件
通過容器服務(wù)Kubernetes版接入一個(gè)注冊的Kubernetes集群。具體操作,請參見創(chuàng)建注冊集群。
通過kubectl連接注冊集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。
步驟一:為日志服務(wù)組件配置RAM權(quán)限
通過onectl配置
在本地安裝配置onectl。具體操作,請參見通過onectl管理注冊集群。
執(zhí)行以下命令,為日志服務(wù)組件配置RAM權(quán)限。
onectl ram-user grant --addon logtail-ds
預(yù)期輸出:
Ram policy ack-one-registered-cluster-policy-logtail-ds granted to ram user ack-one-user-ce313528c3 successfully.
通過控制臺配置
在注冊集群中安裝組件之前,您需要在接入集群中設(shè)置AccessKey用來訪問云服務(wù)的權(quán)限。設(shè)置AccessKey之前,您需要?jiǎng)?chuàng)建RAM用戶并為其添加訪問相關(guān)云資源的權(quán)限。
創(chuàng)建RAM用戶。具體操作,請參見創(chuàng)建RAM用戶。
創(chuàng)建權(quán)限策略,限策略內(nèi)容如下。具體操作,請參見創(chuàng)建自定義權(quán)限策略。
{ "Version": "1", "Statement": [ { "Action": [ "log:CreateProject", "log:GetProject", "log:DeleteProject", "log:CreateLogStore", "log:GetLogStore", "log:UpdateLogStore", "log:DeleteLogStore", "log:CreateConfig", "log:UpdateConfig", "log:GetConfig", "log:DeleteConfig", "log:CreateMachineGroup", "log:UpdateMachineGroup", "log:GetMachineGroup", "log:DeleteMachineGroup", "log:ApplyConfigToGroup", "log:GetAppliedMachineGroups", "log:GetAppliedConfigs", "log:RemoveConfigFromMachineGroup", "log:CreateIndex", "log:GetIndex", "log:UpdateIndex", "log:DeleteIndex", "log:CreateSavedSearch", "log:GetSavedSearch", "log:UpdateSavedSearch", "log:DeleteSavedSearch", "log:CreateDashboard", "log:GetDashboard", "log:UpdateDashboard", "log:DeleteDashboard", "log:CreateJob", "log:GetJob", "log:DeleteJob", "log:UpdateJob", "log:PostLogStoreLogs", "log:CreateSortedSubStore", "log:GetSortedSubStore", "log:ListSortedSubStore", "log:UpdateSortedSubStore", "log:DeleteSortedSubStore", "log:CreateApp", "log:UpdateApp", "log:GetApp", "log:DeleteApp", "cs:DescribeTemplates", "cs:DescribeTemplateAttribute" ], "Resource": [ "*" ], "Effect": "Allow" } ]
為RAM用戶添加權(quán)限。具體操作,請參見為RAM用戶授權(quán)。
為RAM用戶創(chuàng)建AccessKey。具體操作,請參見獲取AccessKey。
使用AccessKey在注冊集群中創(chuàng)建名為
alibaba-addon-secret
的Secret資源。執(zhí)行以下命令創(chuàng)建Logtail組件使用的Secret。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'
說明<your AccessKey ID>
及<your AccessKey Secret>
為上一步獲取的AccessKey信息。
步驟二:安裝logtail-ds組件
通過onectl安裝
執(zhí)行以下命令,安裝logtail-ds組件。
onectl addon install logtail-ds
預(yù)期輸出:
Addon logtail-ds, version **** installed.
通過控制臺安裝
登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在組件管理頁面,單擊日志與監(jiān)控頁簽,找到logtail-ds組件,在卡片右下方單擊安裝。
在提示對話框單擊確定。
(可選)步驟三:配置采集全局所有Pod的日志輸出
文本日志
如需配置全局Pod的文本日志,您需要通過kubectl連接注冊集群后,部署如下配置內(nèi)容,采集全局所有Pod的文本日志。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
name: test-file # 資源名,在當(dāng)前Kubernetes集群內(nèi)唯一。
spec:
project: k8s-log-c326bc86**** # 可選配置,Project名稱,可自定義,推薦使用[k8s-log-集群ID]命名。
logstore: test-file # 必選配置,Logstore名稱,如果不存在,日志服務(wù)會(huì)自動(dòng)創(chuàng)建。
logtailConfig: # Logtail配置。
inputType: file # 采集的數(shù)據(jù)源類型,file表示文本日志,plugin表示標(biāo)準(zhǔn)輸出。
configName: test-file # Logtail配置的名稱,必須與資源名(metadata.name)相同 。
inputDetail: # Logtail配置的詳細(xì)信息。
logType: common_reg_log # 通過極簡模式采集文本日志。
logPath: /log/ # 日志文件所在路徑。
filePattern: "*.log" # 日志文件的名稱,支持通配符星號(*)和半角問號(?),例如log_*.log。
dockerFile: true # 采集容器內(nèi)的文件,dockerFile設(shè)置為true。
advanced: # 設(shè)置容器過濾條件。
k8s:
K8sNamespaceRegex: ^(default)$
K8sPodRegex: '^(nginx-log-demo.*)$'
K8sContainerRegex: ^(nginx-log-demo-0)$
IncludeK8sLabel:
job-name: "^(nginx-log-demo.*)$"
更多詳細(xì)的參數(shù)說明,請參見Logtail配置。
標(biāo)準(zhǔn)輸出
如需配置全局Pod的標(biāo)準(zhǔn)輸出,您需要通過kubectl連接注冊集群后,部署如下配置內(nèi)容,采集全局所有Pod的標(biāo)準(zhǔn)輸出。成功部署后,將會(huì)自動(dòng)生成名為stdout-logstore
的Logstore并將日志采集進(jìn)去。
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
# your config name, must be unique in you k8s cluster.
name: stdout-collector
spec:
# logstore name to upload log.
logstore: stdout-logstore
# logtail config detail
logtailConfig:
# docker stdout's input type is 'plugin'.
inputType: plugin
# logtail config name, should be same with [metadata.name].
configName: stdout-collector
inputDetail:
plugin:
inputs:
-
type: service_docker_stdout
detail:
# collect stdout and stderr
Stdout: true
Stderr: true
# collect all container's stdout except containers with "COLLECT_STDOUT_FLAG:false" in docker env config.
步驟四:配置日志服務(wù)
關(guān)于創(chuàng)建應(yīng)用時(shí)配置日志服務(wù)的具體操作,請參見創(chuàng)建應(yīng)用時(shí)配置日志服務(wù)。
關(guān)于收集Ingress日志的具體操作,請參見Nginx Ingress訪問日志分析與監(jiān)控。