更新时间:2024-03-07 GMT+08:00
分享

自建K8s接入

云日志服务(LTS)支持自建K8s-应用日志接入。

前提条件

  • 请确保已在Kubernetes集群中执行安装Helm v3的命令。
  • 请确保Kubernetes集群已配置kubectl。

操作步骤

云日志服务接入方式选择自建k8s - 应用日志,例如:当k8s集群所在区域为云内接入时,按照如下操作完成接入配置。

  1. 登录云日志服务控制台。
  2. 在左侧导航栏中,选择“日志接入”>“自建软件”,单击“自建k8s - 应用日志”进行自建K8s接入配置。
  3. 或者在左侧导航栏中,选择“日志管理”,单击目标日志流的名称进入日志详情页面,单击右上角,在弹出页面中,选择“采集配置”页面,单击“新建采集配置”,在新打开的页面,选择“云容器引擎 CCE-应用日志”进行CCE接入配置。
  4. 选择日志流。

    有两种采集方式:采集到集中日志流和采集到自定义日志流,您可以根据实际情况选择采集方式,推荐您使用采集到集中日志流

    采集到集中日志流

    集中采集日志到一个固定的日志流。CCE集群默认的采集日志流分别为标准输出/错误stdout-{ClusterID}、节点文件hostfile-{ClusterID}、容器文件containerfile-{ClusterID}、K8S事件: event-{ClusterID}。日志流名称会根据ClusterID自动命名,例如:集群ID为Cluster01,则标准输出/错误日志流为stdout-Cluster01。

    在一个CCE集群下可以创建的采集日志流为标准输出/错误stdout-{ClusterID}、节点文件hostfile-{ClusterID}、容器文件containerfile-{ClusterID})和K8s事件event-{ClusterID},如果某个日志组下,已创建某种采集日志流,则不会在其他日志组或当前日志组下再创建该日志流。

    1. 选择采集方式“采集到集中日志流”。
    2. 输入“集群名称”和“集群ID”。
    3. 选择“所属日志组”。

      当无该日志组时,系统会提示:暂无该日志组,后续操作中,系统将会为您自动创建,创建完成后日志会集中采集到该日志组中。

    4. 单击“下一步:检查依赖项”。

    采集到自定义日志流

    1. 选择采集方式“采集到自定义日志流”。
    2. 输入“集群名称”和“集群ID”。
    3. 单击“所属日志组”后的目标框,在下拉列表中选择具体的日志组,若没有所需的日志组,单击“所属日志组”目标框后的“新建”,在弹出的创建日志组页面创建新的日志组。
    4. 单击“所属日志流”后的目标框,在下拉列表中选择具体的日志流,若没有所需的日志流,单击“所属日志流”目标框后的“新建”,在弹出的创建日志流页面创建新的日志流。
    5. 单击“下一步:检查依赖项”。
      图1 采集到自定义日志流

  5. 检查依赖项。

    1. 系统自动检查以下三项是否符合要求:
      • 存在自定义标识为k8s-log-集群ID的主机组。
      • 存在名为k8s-log-集群ID的日志组。支持修改日志组的日志存储时间和备注。
      • 存在系统推荐的集中采集的日志流。支持修改日志流的日志存储时间和备注。当选择日志流为采集到集中日志流时,会进行该项内容检查。
      如果以上三项中,有任意一项不符合要求,需单击“自动修复”按钮进行修复,否则将无法进行下一步操作。
      • 自动修复:一键帮您完成以上三项配置。
      • 重新检查:重新检查依赖项。
      • 当选择日志流为采集到自定义日志流时,“存在名为k8s-log-集群ID的日志组”的检查项为可选项。您可以通过开启或关闭开关进行控制,确定是否进行该项检查。
    2. 单击“下一步:安装日志采集组件”。

  6. 安装日志采集组件

    在Kubernetes集群中,选择任意一台主机执行如下操作步骤:
    1. 获取ICAgent安装包。
      • 获取ICAgent安装包(以界面上显示的为准)
        wget https://icagent-{regionId}.{obsDomainName}/ICAgent_linux/icagentK8s-5.5.1.2.tar.gz
      • 解压ICAgent安装包
        tar -xzvf icagentK8s-5.5.1.2.tar.gz
      • 进入目录
        cd icagentK8s
      • 生成安装命令

        选择接入日志的区域名

        选择接入日志的账号的项目ID

        k8s集群所在区域,选择“区域内”。

    2. 安装ICAgent。
      1. 复制ICAgent安装命令

        为了避免泄漏您的AK/SK,请勾选此处,执行关闭历史记录命令。

        图2 安装ICAgent

        生成安装命令如下:(x.x.x.x以界面上显示的实际IP为准)

        set +o history; bash icagent_log_install.sh 2a473356cca5487f8373be891bffc1cf test-xx123456 region0_id {input_your_ak} {input_your_sk} x.x.x.x podlb

        执行的命令需要填写AK/SK,有两种方式可选择:

        方式一:复制命令手动替换 {input_your_ak} 和 {input_your_sk},填写值时不需要添加{}。

        方式二:直接执行复制的命令,系统会提示“Enter the AK”和“Enter the SK”,填写对应的AK/SK即可。

      2. 使用PuTTY等远程登录工具,以root用户登录待安装主机,执行复制到的命令。

        当显示”ICAgent install success”时,表示安装成功,安装成功后,在左侧导航栏中选择“主机管理”,查看ICAgent状态。

    3. 单击“确认安装完毕”。

  7. 选择主机组(可选)

    1. 在主机组列表中选择一个或多个需要采集日志的主机组,若没有所需的主机组,单击列表左上方“新建”,在弹出的新建主机组页面创建新的主机组,具体可参考创建主机组(自定义标识)
      • 默认选择集群所在的主机组,您可以根据需要选择其他已创建的主机组。
      • 主机组可以为空,可以在接入配置设置完成后对主机组进行设置。
        • 在“主机管理 > 主机组”页面对主机组和接入配置进行关联。
        • 在接入配置详情中对主机组和接入配置进行关联。
    2. 单击“下一步:采集配置”。

  8. 采集配置。

    1. 设置具体的采集规则,具体可参考采集配置
    2. 单击“下一步:结构化配置”。

  9. 结构化配置(可选项)

    1. 单击“跳过”或进行结构化配置,具体请参考云端结构化解析

      当所选日志流已配置结构化时,请谨慎执行删除操作。

      • 若申请开通ICAgent结构化解析配置功能后,则不需要配置云端结构化解析了。详细请参考ICAgent采集配置
      • ICAgent结构化解析配置功能仅支持白名单用户提交工单申请使用。详细操作请参考提交工单
    2. 单击“下一步:索引配置”。

  10. 索引配置(可选项)。

    1. 单击“跳过并提交”或进行索引配置,具体请参考索引配置
    2. 单击“提交”。

  11. 完成。

采集配置

在使用自建K8s接入完成日志接入时,采集配置的具体配置如下:

图3 采集配置
  1. 基本配置:自定义采集配置名称,长度范围为1到64个字符,只支持输入英文、数字、中文、中划线、下划线以及小数点,且不能以小数点、下划线开头或以小数点结尾。
  2. 数据源配置:选择数据源类型,进行对应的数据源配置。
    • 容器标准输出:采集集群内指定容器日志,仅支持Stderr和Stdout的日志。
      • 被匹配上的容器的标准输出会采集到指定的日志流,原先采集到的AOM的标准输出会停止采集。
      • 容器标准输出不能重复配置,即使跨日志组和日志流,也只能配置一次。
    • 容器文件路径:采集集群内指定容器内的文件路径日志。
    • 节点文件路径:采集集群内指定节点路径的文件。

      采集路径不能重复配置,即同一个主机下的同一路径,即使跨日志组和日志流,也只能配置一次。

    • K8S事件:采集K8S集群内的事件日志。

      K8S事件不能重复配置,即一个K8S集群的K8S事件,只能配置接入到一个日志流。

    表1 采集配置参数表

    类型

    参数配置

    容器标准输出

    采集容器标准输出(stdout)和采集容器标准错误(stderr)。两者必须得有一个是开启状态。

    容器文件路径

    • 路径配置:添加您需要收集的日志路径,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

    • 设置采集黑名单: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

    • 设置采集黑名单:LTS支持对日志进行过滤采集,即通过设置黑名单,在采集时过滤指定的目录或文件。指定按目录过滤,可过滤掉该目录下的所有文件。

    K8S事件

    无需设置参数。仅支持icagent 5.12.130 及以上版本。

  3. K8s匹配规则:当数据源类型选择容器标准输出和容器文件路径时,设置K8s匹配规则,非必选项。

    填写正则匹配规则后,单击校验按钮,支持校验确保正则表达式的正确性。

    表2 K8s匹配规则

    参数名称

    参数说明

    K8s Namespace正则匹配

    通过Namespace名称指定采集的容器,支持正则匹配。
    说明:

    采集名称符合正则规则的Namespace的日志,为空时采集所有Namespace的日志。

    K8s Pod正则匹配

    通过Pod名称指定待采集的容器,支持正则匹配。

    说明:

    采集名称符合正则规则的Pod的日志,为空时采集所有Pod的日志。

    K8s容器名称正则匹配

    通过容器名称指定待采集的容器(Kubernetes容器名称是定义在spec.containers中),支持正则匹配。
    说明:

    采集名称符合正则规则的容器的日志,为空时采集所有容器的日志。

    容器Label白名单

    通过容器Label白名单指定待采集的容器。如果您要设置容器Label白名单,那么LabelKey必填,LabelValue可选填。
    说明:

    若LabelValue为空,则容器 Label中包含LabelKey的容器都匹配;若LabelValue不为空,则容器 Label中包含LabelKey=LabelValue的容器才匹配;LabelKey需要全匹配,LabelValue支持正则匹配;多个白名单之间为或关系,即只要容器 Label满足任一白名单即可被匹配。

    容器Label黑名单

    通过容器Label黑名单排除不采集的容器。如果您要设置容器Label黑名单,那么LabelKey必填,LabelValue可选填。
    说明:

    若LabelValue为空,则容器 Label中包含LabelKey的容器都被排除;若LabelValue不为空,则容器 Label中包含LabelKey=LabelValue的容器才会被排除;LabelKey需要全匹配,LabelValue支持正则匹配;多个黑名单之间为或关系,即只要容器 Label满足任一黑名单即可被排除。

    容器Label日志标签

    设置容器Label日志标签后,日志服务将在日志中新增容器Label相关字段。

    说明:

    设置容器 Label日志标签后,lts将在日志中新增相关字段。例如设置LabelKey为app,设置LabelValue为app_alias,当容器中包含app=lts时,将在日志中添加的内容{app_alias:lts}。

    环境变量白名单

    用于指定待采集的容器。如果您要设置环境变量白名单,那么Label Key必填,Label Value可选填。
    说明:

    如果环境变量Value为空,则容器环境变量中包含环境变量Key的容器都匹配;如果环境变量Value不为空,则容器环境变量中包含环境变量Key=环境变量Value的容器才被匹配;LabelKey需要全匹配,LabelValue支持正则匹配;多个白名单之间为或关系,即只要容器的环境变量满足任一键值对即可被匹配。

    环境变量黑名单

    用于排除不采集的容器。如果您要设置环境变量黑名单,那么Label Key必填,Label Value可选填。
    说明:

    如果环境变量Value为空,则容器环境变量中包含环境变量Key的容器都将被排除;如果环境变量Value不为空,则容器环境变量中包含环境变量Key=环境变量Value的容器才会被排除;LabelKey需要全匹配,LabelValue支持正则匹配;多个黑名单之间为或关系,即只要容器的环境变量满足任一键值对即可被排除。

    环境变量日志标签

    设置环境变量日志标签后,日志服务将在日志中新增环境变量相关字段。
    说明:

    设置环境变量日志标签后,lts将在日志中新增相关字段,例如设置环境变量Key为app,设置环境变量Value为app_alias,当容器中包含环境变量app=lts时,将在日志中添加的内容为{app_alias:lts}。

  4. 开启结构化解析配置,详细操作请参考ICAgent采集配置

    需要ICAgent 5.12.147及以上版本,其优点是成本更低,支持组合解析,一个日志流的每个采集配置可以配置不同的结构化解析规则。

    结构化解析配置功能仅支持白名单用户提交工单申请使用。详细操作请参考提交工单

    开通白名单后,若已经配置了云端结构化解析,请先删除后再配置ICAgent结构化解析。

    图4 ICAgent结构化解析配置
  5. 其他配置。
    表3 其他配置

    名称

    说明

    最大目录深度

    最大目录深度为5层。

    该配置控制日志采集的最大目录深度,LogListener不会采集所在目录层级超过指定最大目录深度的日志文件。当你目标采集路径包含模糊匹配时,建议配置合适的最大目录深度,避免LogListener性能浪费。

    日志拆分

    云日志服务支持对日志进行拆分,默认为关闭状态。

    当日志大小超过500KB时,开启日志拆分按钮,则单行日志会被拆分为多行采集。例如:日志大小为600KB,被拆分为2行日志采集,第一行500KB,第二行100KB。

    当日志大小超过500KB时,未开启日志拆分按钮,则单条日志大小限制不超过500KB,超过限制部分会被截断丢弃。

    采集二进制文件

    云日志服务支持采集二进制文件,默认为关闭状态。

    您可以通过命令(file -i 文件名)查看文件类型,如果包含charset=binary,那么该日志文件就是二进制文件。

    当日志的文件类型为二进制时,开启采集二进制文件按钮,则对接入的二进制文件日志进行采集,但仅支持UTF8编码的字符串,非UFT8编码的字符在LTS控制台页面会显示乱码。

    当日志的文件类型为二进制时,未开启采集二进制文件按钮,则对接入的二进制文件日志停止采集,开启后即可进行采集。

    日志文件编码

    日志文件编码为UTF-8。

    采集策略

    采集策略支持增量或全量。

    • 增量采集:ICAgent采集新文件时,从文件的末尾开始读。
    • 全量采集:ICAgent采集新文件时,从文件的开头开始读。
  6. 日志格式、日志时间具体说明如下:

    不再推荐使用以下功能,建议使用结构化解析配置

    如果您配置了ICAgent的多行全文或者多行完全正则,此处的多行日志配置会失效。

    表4 日志采集信息

    名称

    说明

    日志格式

    • 单行日志:采集的日志文件中,如果您希望每一行日志在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)

    分行模式

    日志格式选择多行日志时,需要选择分行模式,分行模式选择“日志时间”时,是以时间通配符来划分多行日志;当选择“正则模式”时,则以正则表达式划分多行日志。

    正则表达式

    此配置是用来标识一条日志数据的正则表达式。日志格式选择“多行日志”格式后且“分行模式”已选择“正则模式”后需要设置。

    时间通配和正则表达式均是从每行日志的开头进行严格匹配,如果匹配不上,则会默认使用系统时间上报,这样可能会和文件内容中的时间不一致。如果没有特殊需求,建议使用单行日志-系统时间模式即可

分享:

    相关文档

    相关产品