本文介绍如何在Serverless集群中配置CRD并进行应用日志采集管理。
前提条件
确保您已经创建Serverless集群,具体操作请参阅创建Serverless集群。
确保kubectl工具已经连接目标集群。
注意事项
通过云日志服务CRD开启日志采集仅对后续创建的ECI Pod生效。如果想要采集存量Pod的日志,需要对存量Pod进行一次滚动发布。
操作步骤
您需要先在集群内安装ctg-log-operator插件,再通过日志采集配置CRD来配置应用日志采集。
步骤一:安装ctg-log-operator日志插件
登录云容器引擎管理控制台,在左侧导航栏选择“集群列表”。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择“插件”- > “插件市场”。
在插件市场页面,在插件列表中选择要安装的ctg-log-operator插件,点击“安装”按钮。
等待ctg-log-operator插件安装完成。
步骤二:创建日志采集配置
编写日志采集配置CRD的YAML配置文件。
说明
创建日志采集配置的 CRD 资源后,您可以在云日志服务控制台查看相应的日志项目和采集配置。请注意,直接在云日志服务控制台上修改这些通过 CRD 创建的配置,其更改不会同步回 CRD 资源本身。因此,若您后续需要更新配置,请直接编辑并应用 CRD 资源,避免在云日志服务控制台进行操作,以防止配置出现不一致的情况。
CtyunLogConfig CRD 配置文件,log-stdout.yaml示例如下:
apiVersion: sce.ctyun.cn/v1
kind: CtyunLogConfig
metadata:
name: simple-stdout-example # 采集配置的名称,集群内唯一
spec:
project: k8s-my-project # 可选,不填则默认为k8s-log-{ClusterId}
logunit: k8s-stdout # 必填,不存在会自动创建
ttlDays: 90 # 可选,日志单元中日志的保存时长
extractMode: "2" # 采集类型,2为容器标准输出,3为文件路径
logPath: "/var/log/*.log" #日志文件所在完整路径
ruleConfig: # 必填,参考云日志服务API配置:https://eop.ctyun.cn/ebp/ctapiDocument/search?sid=169&api=15050&data=216&isNormal=1&vid=295
containers:
excludeEnv: {}
excludeK8sLabel: {}
excludeLabel: {}
includeEnv: {}
includeK8sLabel: {}
includeLabel: {}
# 下面这三项必填其一,否则无法创建采集规则
k8sContainerRegex: ".*" # 容器过滤条件
k8sPodRegex: ".*" # Pod过滤条件
k8sNamespaceRegex: "^(default)$" # Namespace过滤条件
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
project | string | 否 | 日志项目名称。不填则默认为k8s-log-{ClusterId} 如果要新建Project,可自定义输入名称,如果不存在该Project,系统会自动新建 |
logunit | string | 是 | 日志单元名称。不存在会自动创建 |
ttlDays | int | 否 | 日志单元中日志的保存时长。默认值为15 |
extractMode | string | 是 | 采集类型,"2"为容器标准输出,"3"为文件路径 |
logPath | string | 是 | 日志文件所在完整路径。采集类型为3时必填 |
ruleConfig | object | 是 | 采集规则配置,包含containers参数,表示容器相关配置。
下面这三项必填其一,否则无法创建采集规则
详细的参数说明请参考云日志服务API。 |
创建日志采集配置CRD。
命令示例如下。日志采集配置生效后,日志采集开始采集各个容器上的标准输出或文本日志,并发送到日志服务中。
kubectl apply -f log-stdout.yaml
步骤三:测试日志采集
创建日志采集配置CRD后,日志服务会自动采集后续创建的Pod的日志。您可以创建应用来测试日志采集效果。
pod.yaml示例如下,示例中容器启动后会执行相关命令,不断打印标准输出和日志文件。
apiVersion: v1
kind: Pod
metadata:
name: busybox-crd
spec:
containers:
- name: busybox
image: 'registry-huadong1.crs-internal.ctyun.cn/open-source/busybox:1.36'
args:
- -c
- mkdir -p /var/log;while true; do echo hello world; date; echo hello als >> /var/log/test.log; sleep 1;done
command:
- /bin/sh
创建应用:
kubectl create -f pod.yaml
确认应用是否已经running。
kubetcl get pod
步骤四:查看日志
登录日志服务控制台。
在左侧导航栏中,选择“日志管理”。
在日志项目列表区域,单击对应的日志项目名称。
在左侧日志单元区域,单击目标日志单元查看对应应用的日志信息。