本文将介绍如何在云日志服务控制台配置云容器引擎的日志接入与采集规则配置。
使用场景
云容器引擎业务日志采集功能是为用户提供的天翼云云容器引擎集群内的业务日志采集工具,可以将集群内的业务日志采集至云日志服务中进行统一存储。
日志采集功能需要为云容器引擎集群安装日志采集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,请填写.*。