云容器引擎CCE应用日志接入LTS
云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群。借助云容器引擎,您可以轻松部署、管理和扩展容器化应用程序。
云容器引擎CCE应用日志接入LTS后,在LTS控制台可以对收集到的日志进行统一管理和分析,还可以将日志报表进行可视化展示,从而更好地监控和管理容器化应用的运行状态,帮助用户能够快速发现容器的问题,提高容器的性能和可靠性。
您可以按照如下步骤完成接入配置。
若需要采集多个场景的日志,您可以选择批量设置多个接入配置的方式,同时设置多个接入配置。
前提条件
- CCE集群已安装ICAgent并且已创建相关节点自定义标识的主机组(如果不满足,配置CCE接入LTS时会自动检查修复)。
- 已关闭采集容器标准输出到AOM的开关。
- 开启“ICAgent诊断开关”用于查看ICAgent异常监控、ICAgent整体状态和ICAgent采集监控,请参考设置ICAgent日志采集开关。
使用限制
- 支持容器引擎为Docker的CCE集群节点。详情请查看云容器引擎(CCE)。
- 支持使用Containerd作为容器引擎的CCE集群节点(ICAgent 5.12.130及以上版本)。
- 支持CCE Turbo集群(ICAgent 5.12.130及以上版本)。
- 容器内的日志目录如果已挂载到主机目录上,将无法通过配置容器文件路径方式采集到LTS,只能通过配置节点文件路径方式采集到LTS。
- Docker存储驱动限制:容器文件日志采集目前仅支持overlay2存储驱动,不支持devicemapper作为存储驱动的节点。查看存储驱动类型,请使用如下命令:
docker info | grep "Storage Driver"
- 如果选择日志流时,采集方式为采集到集中日志流时,则必须已创建CCE集群。
步骤1:选择日志流
- 登录云日志服务控制台。
- 在左侧导航栏中,选择“接入 > 接入中心”,单击“云容器引擎 CCE-应用日志”进行CCE接入配置。
或在左侧导航栏中,选择“接入 > 接入管理 > 接入日志”,单击“云容器引擎 CCE-应用日志”进行CCE接入配置。
或在左侧导航栏中,选择“日志管理”,单击目标日志流的名称进入日志详情页面。单击右上角,在弹出页面中,选择“日志接入”页签,单击“接入日志”,在弹出页面中,单击“云容器引擎 CCE-应用日志”进行CCE接入配置。
- 采集方式:采集到集中日志流和采集到自定义日志流,您可以根据实际情况选择采集方式,推荐您使用采集到集中日志流。
表1 采集方式 采集方式
说明
采集到集中日志流
采集到自定义日志流
- 若选择“采集到集中日志流”,请执行如下操作步骤:
集中采集日志到一个固定的日志流。CCE集群默认的采集日志流分别为标准输出/错误stdout-{ClusterID}、节点文件hostfile-{ClusterID}、K8S事件: event-{ClusterID}和容器文件containerfile-{ClusterID}。日志流名称会根据ClusterID自动命名,例如:集群ID为Cluster01,则标准输出/错误日志流为stdout-Cluster01。
在一个CCE集群下可以创建的采集日志流为标准输出/错误stdout-{ClusterID}、节点文件hostfile-{ClusterID}、容器文件containerfile-{ClusterID})和K8s事件event-{ClusterID},如果某个日志组下,已创建某种采集日志流,则不会在其他日志组或当前日志组下再创建该日志流。
- 单击“CCE集群”后的目标框,在下拉列表中选择具体的集群。
- 默认所属日志组为k8s-log-集群ID,例如集群ID为c7f3f4a5-bcb8-11ed-a4ec-0255ac100b07,默认所属日志组为k8s-log-c7f3f4a5-bcb8-11ed-a4ec-0255ac100b07。
当无该日志组时,系统会提示:暂无该日志组,后续操作中,系统将会为您自动创建,创建完成后日志会集中采集到该日志组中。
- 单击“下一步:检查依赖项”。
- 若选择“采集到自定义日志流”,请执行如下操作步骤:
- 单击“CCE集群”后的目标框,在下拉列表中选择具体的集群。
- 单击“所属日志组”后的目标框,在下拉列表中选择具体的日志组,若没有所需的日志组,单击“所属日志组”目标框后的“新建”,在弹出的创建日志组页面创建新的日志组。
- 单击“所属日志流”后的目标框,在下拉列表中选择具体的日志流,若没有所需的日志流,单击“所属日志流”目标框后的“新建”,在弹出的创建日志流页面创建新的日志流。
- 单击“下一步:检查依赖项”。
- 若选择“采集到集中日志流”,请执行如下操作步骤:
步骤2:检查依赖项
系统自动检查以下内容检查项是否符合要求:
- 已安装ICAgent,且版本 >= 5.12.130。
- 存在名称和自定义标识都是k8s-log-集群ID的主机组。
- 存在名为k8s-log-集群ID的日志组。
- 存在系统推荐的集中采集的日志流。当选择日志流为采集到集中日志流时,会进行该项内容检查。
- 自动修复:一键帮您完成以上内容检查项配置。
- 重新检查:重新检查依赖项。
- 当选择日志流为采集到自定义日志流时,“存在名为k8s-log-集群ID的日志组”的检查项为可选项。您可以通过开启或关闭开关进行控制,确定是否进行该项检查。
步骤3:选择主机组(可选)
- 在主机组列表中选择一个或多个需要采集日志的主机组。
- 默认选择集群所在的主机组,您可以根据需要选择其他已创建的主机组。
- 对于自定义CCE集群的主机组,自定义标识的格式需要是k8s-log-集群ID。
- 主机组可以为空,但是会导致采集配置不生效,建议第一次接入时选择主机组。若不选择,可以在接入配置设置完成后对主机组进行设置。
- 在“主机管理 > 主机组”页面对主机组和接入配置进行关联。
- 在接入规则页面,单击操作列的“编辑”,进入接入配置页面对主机组和接入配置进行关联。
- 单击“下一步:采集配置”。
步骤4:采集配置
在使用CCE接入完成日志接入时,在采集配置页面的具体配置如下:
- 采集配置名称:自定义采集配置名称,长度范围为1到64个字符,只支持输入英文、数字、中文、中划线、下划线以及小数点,且不能以小数点、下划线开头或以小数点结尾。
- 数据源配置:选择数据源类型,进行对应的数据源配置,详细请参考表2。
对挂载的网盘或者共享存储,配置多台机器同时采集,会导致日志重复。
表2 数据源配置参数 类型
参数配置
容器标准输出
采集集群内指定容器日志,仅支持Stderr和Stdout的日志。
说明:- 被匹配上的容器的标准输出会采集到指定的日志流,原先采集到的AOM的标准输出会停止采集。
- 容器标准输出不能重复配置,即使跨日志组和日志流,也只能配置一次。
- 采集容器标准输出到AOM:默认集群下的主机已安装了ICAgent 且采集日志到AOM,采集容器标准输出到AOM的开关处于开启状态。开启后标准输出只会采集到AOM,不会采集到LTS,建议您手动关闭该开关。
- 采集容器标准输出(stdout)和采集容器标准错误(stderr)两者必须得有一个是开启状态。
- 开启采集容器标准错误(stderr)后,选择采集目前路径:将标准输出和标准错误采集到不同的文件(stdout.log和stderr.log)、将标准输出和标准错误采集到同一个文件(stdout.log)。
容器文件路径
采集集群内指定容器内的文件日志。
- 添加采集路径:添加您需要收集的日志路径,LTS将按照配置的路径进行日志采集,更多示例请参考路径配置。
说明:
- 当CCE集群的工作负载中,已配置容器的挂载路径时,此时路径配置里添加的路径将无效。须将CCE集群页面中的挂载路径删除后,该配置才有效。
- 采集路径不能重复配置,即同一个主机下的同一路径,即使跨日志组和日志流,也只能配置一次。
- 添加自定义绕接规则,ICAgent目前是通过文件名规则来判断是否为绕接文件,如果您的绕接规则不符合内置类型时,可以通过单击“添加自定义绕接规则”来进行匹配,避免重复采集和绕接时的日志丢失。
内置类型为{basename}{连接符}{绕接标识}.后缀,{basename}.{后缀}{连接符}{绕接标识}。其中连接符为-._绕接标识为非字母符号,后缀为字母。
自定义绕接规则为{basename}+绕接文件的特征正则表达式组成匹配规则。例如您的日志文件名称为/opt/test.out.log,绕接后的文件名为test.2024-01-01.0.out.log,test.2024-01-01.1.out.log,因此在路径配置时,采集路径为/opt/*.log,绕接规则为{basename}\.[-0-9\.].out.log
- 允许文件多次采集。(暂不支持Windows场景)
开启“允许文件多次采集”后,同一主机下的同一日志文件支持被采集到多个日志流。该功能依赖ICAgent版本,详见查看ICAgent版本说明。
关闭“允许文件多次采集”后,采集路径不能重复配置,即同一主机下的同一日志文件,即使跨日志流,也只能配置一次。
- 设置采集黑名单:LTS支持对日志进行过滤采集,即通过设置黑名单,在采集时过滤指定的目录或文件。指定按目录过滤,可过滤掉该目录下的所有文件。
节点文件路径
采集集群内指定节点的文件。
- 添加采集路径:添加您需要收集的日志路径,LTS将按照配置的路径进行日志采集,更多示例请参考路径配置。
- 添加自定义绕接规则,ICAgent目前是通过文件名规则来判断是否为绕接文件,如果您的绕接规则不符合内置类型时,可以通过单击“添加自定义绕接规则”来进行匹配,避免重复采集和绕接时的日志丢失。
内置类型为{basename}{连接符}{绕接标识}.后缀,{basename}.{后缀}{连接符}{绕接标识}。其中连接符为-._绕接标识为非字母符号,后缀为字母。
自定义绕接规则为{basename}+绕接文件的特征正则表达式组成匹配规则。例如您的日志文件名称为/opt/test.out.log,绕接后的文件名为test.2024-01-01.0.out.log,test.2024-01-01.1.out.log,因此在路径配置时,采集路径为/opt/*.log,绕接规则为{basename}\.[-0-9\.].out.log
- 允许文件多次采集。(暂不支持Windows场景)
开启“允许文件多次采集”后,同一主机下的同一日志文件支持被采集到多个日志流。该功能依赖ICAgent版本,详见查看ICAgent版本说明。
关闭“允许文件多次采集”后,采集路径不能重复配置,即同一主机下的同一日志文件,即使跨日志流,也只能配置一次。
- 设置采集黑名单:LTS支持对日志进行过滤采集,即通过设置黑名单,在采集时过滤指定的目录或文件。指定按目录过滤,可过滤掉该目录下的所有文件。
K8S事件
采集K8S集群内的事件日志。仅支持icagent 5.12.150及以上版本。
K8S事件不能重复配置,即一个K8S集群的K8S事件,只能配置接入到一个日志流。
- (可选)K8s匹配规则:当数据源类型选择容器标准输出和容器文件路径时,需要设置K8s匹配规则。
填写正则匹配规则后,单击校验按钮,支持校验确保正则表达式的正确性。
表3 K8s匹配规则 参数名称
参数说明
K8s Namespace正则匹配
通过Namespace名称指定采集的容器,支持正则匹配。说明:采集名称符合正则规则的Namespace的日志,为空时采集所有Namespace的日志。
K8s Pod正则匹配
通过Pod名称指定待采集的容器,支持正则匹配。
说明:采集名称符合正则规则的Pod的日志,为空时采集所有Pod的日志。
K8s容器名称正则匹配
通过容器名称指定待采集的容器(Kubernetes容器名称是定义在spec.containers中),支持正则匹配。说明:采集名称符合正则规则的容器的日志,为空时采集所有容器的日志。
K8s Label白名单
通过K8s Label白名单指定待采集的容器。如果您要设置K8s Label白名单,那么LabelKey必填,LabelValue可选填。
新增多条白名单时,支持选择And或or的关系,即全部满足或满足任意白名单就可以被匹配。
说明:若LabelValue为空,则K8S Label中包含LabelKey的容器都匹配;若LabelValue不为空,则K8S Label中包含LabelKey=LabelValue的容器才匹配;LabelKey需要全匹配,LabelValue支持正则匹配。
K8s Label黑名单
通过K8s Label黑名单排除不采集的容器。如果您要设置K8s Label黑名单,那么LabelKey必填,LabelValue可选填。
新增多条黑名单时,支持选择And或or的关系,即全部满足或满足任意黑名单就可以被排除。
说明:若LabelValue为空,则K8S Label中包含LabelKey的容器都被排除;若LabelValue不为空,则K8S Label中包含LabelKey=LabelValue的容器才会被排除;LabelKey需要全匹配,LabelValue支持正则匹配。
K8s Label日志标签
设置K8s Label日志标签后,日志服务将在日志中新增K8s Label相关字段。
说明:设置K8s Label日志标签后,lts将在日志中新增相关字段。例如设置LabelKey为app,设置LabelValue为app_alias,当容器中包含app=lts时,将在日志中添加内容{app_alias:lts}。
容器Label白名单
通过容器Label白名单指定待采集的容器。如果您要设置容器Label白名单,那么LabelKey必填,LabelValue可选填。
新增多条白名单时,支持选择And或or的关系,即全部满足或满足任意白名单就可以被匹配。
说明:若LabelValue为空,则容器 Label中包含LabelKey的容器都匹配;若LabelValue不为空,则容器 Label中包含LabelKey=LabelValue的容器才匹配;LabelKey需要全匹配,LabelValue支持正则匹配。
容器Label黑名单
通过容器Label黑名单排除不采集的容器。如果您要设置容器Label黑名单,那么LabelKey必填,LabelValue可选填。
新增多条黑名单时,支持选择And或or的关系,即全部满足或满足任意黑名单就可以被排除。
说明:若LabelValue为空,则容器 Label中包含LabelKey的容器都被排除;若LabelValue不为空,则容器 Label中包含LabelKey=LabelValue的容器才会被排除;LabelKey需要全匹配,LabelValue支持正则匹配。
容器Label日志标签
设置容器Label日志标签后,日志服务将在日志中新增容器Label相关字段。
说明:设置容器 Label日志标签后,lts将在日志中新增相关字段。例如设置LabelKey为app,设置LabelValue为app_alias,当容器中包含app=lts时,将在日志中添加的内容{app_alias:lts}。
环境变量白名单
用于指定待采集的容器。如果您要设置环境变量白名单,那么Label Key必填,Label Value可选填。
新增多条白名单时,支持选择And或or的关系,即全部满足或满足任意白名单就可以被匹配。
说明:如果环境变量Value为空,则容器环境变量中包含环境变量Key的容器都匹配;如果环境变量Value不为空,则容器环境变量中包含环境变量Key=环境变量Value的容器才被匹配;LabelKey需要全匹配,LabelValue支持正则匹配。
环境变量黑名单
用于排除不采集的容器。如果您要设置环境变量黑名单,那么Label Key必填,Label Value可选填。
新增多条黑名单时,支持选择And或or的关系,即全部满足或满足任意黑名单就可以被排除。
说明:如果环境变量Value为空,则容器环境变量中包含环境变量Key的容器都将被排除;如果环境变量Value不为空,则容器环境变量中包含环境变量Key=环境变量Value的容器才会被排除;LabelKey需要全匹配,LabelValue支持正则匹配。
环境变量日志标签
设置环境变量日志标签后,日志服务将在日志中新增环境变量相关字段。说明:设置环境变量日志标签后,lts将在日志中新增相关字段,例如设置环境变量Key为app,设置环境变量Value为app_alias,当容器中包含环境变量app=lts时,将在日志中添加的内容为{app_alias:lts}。
- 开启结构化解析配置,详细操作请参考ICAgent结构化解析规则说明。
支持组合解析,一个日志流的每个采集配置可以配置不同的结构化解析规则。
若已经配置了云端结构化解析,请先删除云端结构化解析后再配置ICAgent结构化解析。
图1 ICAgent结构化解析配置
- 其他配置。
表4 其他配置 名称
说明
最大目录深度
最大目录深度为20层。
采集路径支持使用**配置多层路径模糊匹配,该配置项限制最大目录深度。例如您的日志路径为/var/logs/department/app/a.log,采集路径配置为:/var/logs/**/a.log,当配置为1时日志不会被采集,配置>=2时日志会被采集。
日志拆分
云日志服务支持对日志进行拆分。
当日志大小超过500KB时,开启日志拆分按钮,则单行日志会被拆分为多行采集。支持设置日志拆分大小,最大为1024KB。例如:日志大小为600KB,被拆分为2行日志采集,第一行500KB,第二行100KB。
当日志大小超过500KB时,未开启日志拆分按钮,则单条日志大小限制不超过500KB,超过限制部分会被截断丢弃。
采集二进制文件
云日志服务支持采集二进制文件。
您可以通过命令(file -i 文件名)查看文件类型,如果包含charset=binary,那么该日志文件就是二进制文件。
当日志的文件类型为二进制时,开启采集二进制文件按钮,则对接入的二进制文件日志进行采集,但仅支持UTF8编码的字符串,非UFT8编码的字符在LTS控制台页面会显示乱码。
当日志的文件类型为二进制时,未开启采集二进制文件按钮,则对接入的二进制文件日志停止采集,开启后即可进行采集。
日志文件编码
日志文件编码支持UTF-8、GBK(暂不支持Windows场景)。
UTF-8编码是一种变长编码方式,用于表示Unicode字符集。GBK全称《汉字内码扩展规范》,中文计算机编码的一种,是ASCII码和GB2312编码的扩展。
采集策略
采集策略支持增量或全量。
- 增量采集:ICAgent采集新文件时,从文件的末尾开始读。
- 全量采集:ICAgent采集新文件时,从文件的开头开始读。
自定义元数据
- 参考表5配置日志格式、日志时间。
不再推荐使用以下功能,建议使用结构化解析配置。
表5 日志采集信息 名称
说明
日志格式
- 单行日志:采集的日志文件中,如果您希望每一行日志在LTS界面中都显示为一条单独的日志数据,则选择单行日志。
- 多行日志:采集的日志中包含像java异常的日志,如果您希望多行异常的日志显示为一条日志,正常的日志每一行都显示为一条单独的日志数据,则选择多行日志,方便您查看日志并且定位问题。
日志时间
系统时间:表示系统当前时间,默认为日志采集时间,每条日志的行首显示日志的采集时间。
说明:- 日志采集时间:ICAgent采集日志,并且发送到云日志服务的时间。
- 日志打印时间:系统产生并打印日志的时间。ICAgent采集日志并发送日志到云日志平台的频率为1秒钟。
- 采集日志时间限制:系统时间的前后24小时内。
时间通配符:用日志打印时间来标识一条日志数据,通过时间通配符来匹配日志,每条日志的行首显示日志的打印时间。
- 如果日志中的时间格式为:2019-01-01 23:59:59.011,时间通配符应该填写为:YYYY-MM-DD hh:mm:ss.SSS。
- 如果日志中的时间格式为:19-1-1 23:59:59.011,时间通配符应该填写为:YY-M-D hh:mm:ss.SSS。
说明:如果日志中不存在年份信息,则云日志会自动补齐年份数据为当前年份数据。
填写示例:
YY - year (19) YYYY - year (2019) M - month (1) MM - month (01) D - day (1) DD - day (01) hh - hours (23) mm - minutes (59) ss - seconds (59) SSS - millisecond(999) hpm - hours (03PM) h:mmpm - hours:minutes (03:04PM) h:mm:sspm - hours:minutes:seconds (03:04:05PM) hh:mm:ss ZZZZ (16:05:06 +0100) hh:mm:ss ZZZ (16:05:06 CET) hh:mm:ss ZZ (16:05:06 +01:00)
分行模式
日志格式选择多行日志时,需要选择分行模式,分行模式选择“日志时间”时,是以时间通配符来划分多行日志;当选择“正则模式”时,则以正则表达式划分多行日志。
正则表达式
此配置是用来标识一条日志数据的正则表达式。日志格式选择“多行日志”格式后且“分行模式”已选择“正则模式”后需要设置。
时间通配和正则表达式均是从每行日志的开头进行严格匹配,如果匹配不上,则会默认使用系统时间上报,这样可能会和文件内容中的时间不一致。如果没有特殊需求,建议使用单行日志-系统时间模式即可。
步骤6:完成接入配置
- 单击接入配置名称可进入详情页面,查看该接入配置详细信息。
- 单击接入配置操作列的“编辑”重新修改接入配置信息。
- 单击接入配置操作列的“标签管理”即可添加标签。
- 单击接入配置操作列的“复制”复制一条新的接入配置信息。
- 单击接入配置操作列的“删除”即可删除接入配置信息。
- 单击接入配置操作列的“采集诊断”,可查看ICAgent异常监控、ICAgent整体状态和ICAgent采集监控。
批量设置多个接入配置
支持同时批量设置多个接入配置,操作简单,不用重复配置即可快速完成多个场景的接入配置
- 在“接入管理”页面,单击“批量接入”,进入配置详情页面,请参考表6。
表6 批量接入设置 类型
操作
说明
基本配置
接入类型
选择云容器引擎 CCE-应用日志。
接入配置数量
在输入框填写接入配置数量,单击“添加接入配置”。
在接入配置下方默认已有1个接入配置,最多支持再添加99个数量,因此支持同时添加100个接入配置。
接入配置
接入列表
- 左侧显示接入配置的信息,最多支持添加99个配置。
- 右侧显示配置接入的内容,详细请参考步骤4:采集配置进行设置。
- 一个接入配置设置完成后,单击“应用于其他接入规则”即可将该接入配置复制到其他接入配置。
- 单击“参数检查”,检查成功后,单击“提交”,批量接入设置完成。
例如添加了4个接入配置,批量创建成功后,在接入规则页签下方,就会显示4条接入配置数量。
- (可选)支持对接入配置任务进行以下操作:
- 勾选多个已创建成功的接入配置,单击“批量编辑”进入配置详情页面,通过选择不同接入类型,修改对应的接入配置信息。
- 勾选多个已创建成功的接入配置,单击开启或关闭按钮。接入配置状态关闭后不会继续采集日志。
- 勾选多个已创建成功的接入配置,单击删除按钮即可批量删除接入配置。