一、使用限制
配置日志采集规则前,需了解 LogListener 采集数据时在文件采集、配置、资源、性能、错误处理等方面的能力与限制,以及相关使用说明。详情请参见 LogListener 限制说明。
二、创建日志采集规则
1. 登录 容器服务控制台,在左侧导航栏中选择集群。
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧导航栏中的日志,在日志采集页签中单击业务日志右侧的新增采集配置。如下:
4. 在新建日志采集规则页面中配置收集规则名称,你可以自定义日志收集规则名称。
5. 参考如下配置日志服务消费端:
·类型:选择 CLS。
·日志所在地域:CLS 支持跨地域日志投递,你可通过下拉框选择日志投递的目标地域。
·日志集:根据日志所在地域展示你已经创建的日志集,若现有日志集不合适,你可以在 日志服务控制台 新建日志集。操作详情见 创建日志集。
·日志主题:选择日志集下对应的日志主题,支持“自动创建”和“选择已有”日志主题两种模式。
注意:说明:
注意:CLS 不支持国内和境外地域之间跨地域日志投递;针对 CLS 未开通日志服务的地域仅支持就近投递,如深圳集群采集的容器日志仅支持投递到广州,天津集群采集的容器日志仅支持投递到北京;详情可通过控制台查看。
6. 选择采集类型并配置日志源,目前采集类型支持容器标准输出、容器文件路径和节点文件路径。
容器标准输出日志容器内文件日志节点文件日志
注意:说明:
注意:采集集群内任意服务下的容器日志,仅支持 Stderr 和 Stdout 的日志。
日志源支持所有容器、指定工作负载、指定 Pod Labels 三种类型。如下:
三、所有容器
·命名空间指定方式:选择命名空间指定方式,支持指定命名空间和排除命名空间。
·所属 Namespace:指定命名空间时,支持勾选全部命名空间或全选当前命名空间。
·全部命名空间:包含当前以及未来创建的所有命名空间。
·全选当前命名空间:即选中当前所有命名空间,不包含未来创建的命名空间。
需注意,kube-system 命名空间中包含容器日志采集组件及其他大量系统组件的日志,组件异常时可能产生大量日志并带来额外成本,建议不要采集该命名空间下的日志。
四、指定工作负载
·所属 Namespace:选择工作负载所在的命名空间。
·工作负载类型:选择需要采集的工作负载类型。
·工作负载名称:选择需要采集的工作负载。
·容器名称:填写需要采集的容器名称,多个容器名称使用英文逗号分隔。
五、指定 Pod Labels
·命名空间指定方式:选择命名空间指定方式,支持指定命名空间和排除命名空间。
·所属 Namespace:指定命名空间时,支持勾选全部命名空间或全选当前命名空间。
·全部命名空间:包含当前以及未来创建的所有命名空间。
·全选当前命名空间:即选中当前所有命名空间,不包含未来创建的命名空间。
·Pod Label:新增需匹配的 Pod 标签,支持等于(=)和不等于(!=)。不同 Pod Label 之间为“与”关系;同一 Label 的多个 value 之间为“或”关系,多个 value 使用英文逗号分隔。
·容器名称:新增容器名称,支持等于或不等于。若需采集符合上述 Pod Label 的全部容器日志,请填写 *。
注意:说明:
注意:采集集群内指定容器内的文件日志。
·日志源支持指定工作负载、指定 Pod Labels 两种类型。
·容器文件路径由日志目录和文件名组成。日志目录以 / 开头,文件名不能以 / 开头;日志目录和文件名均支持通配符 * 和 ?,不支持英文逗号。/**/ 表示监听指定目录下所有层级中匹配的日志文件。多条采集路径之间为“或”关系。例如,采集 /opt/logs/*.log 时,可将日志目录配置为 /opt/logs,文件名配置为 *.log。如下:
·采集路径黑名单:开启后,可忽略采集路径下指定的完整文件路径或目录路径,支持完全匹配以及 *、?、** 通配符匹配。文件路径和目录路径两种过滤类型可以同时使用,且黑名单路径必须是采集路径的子集。
注意:说明:
注意:采集集群内指定节点路径的文件。
·节点文件路径由日志目录和文件名组成。日志目录以 / 开头,文件名不能以 / 开头;日志目录和文件名均支持通配符 * 和 ?,不支持英文逗号。/**/ 表示监听指定目录下所有层级中匹配的日志文件。多条采集路径之间为“或”关系。例如,需要采集 /opt/logs/service1/*.log 和 /opt/logs/service2/*.log 时,可将日志目录配置为 /opt/logs/service*,文件名配置为 *.log。
·采集路径黑名单:开启后,可忽略采集路径下指定的完整文件路径或目录路径,支持完全匹配以及 *、?、** 通配符匹配。文件路径和目录路径两种过滤类型可以同时使用,且黑名单路径必须是采集路径的子集。
·你可根据实际需求自定义添加 Key-Value 形式的 metadata,metadata 将会添加到日志记录中。
注意:说明:
注意:1.1 登录 容器服务控制台,选择左侧导航栏中的集群。
注意:1.2 在集群管理页面,选择集群 ID,进入集群的基本信息页面。
注意:1.3 在工作负载中,选择具体的工作负载名称,进入工作负载详情页。
注意:1.4 在 YAML 页签中,查看 template 下的 labels。如下:
注意:
7. 元数据、索引配置:
·元数据配置:决定随日志上传哪些容器或 Kubernetes 元数据,你可按需选择默认元数据或添加自定义元数据。
·索引配置:决定元数据字段是否可用于日志检索。你可按需为已上传的元数据字段配置索引。
注意:说明:
注意:采集规则创建后,如需调整自定义元数据或相关索引,请前往 日志服务控制台 修改。
8. 配置采集策略。你可以选择全量或者增量。
·全量:全量采集指从日志文件的开头开始采集。
·增量:仅采集日志文件内新增的内容。
9. 单击下一步,选择日志解析方式。
·编码模式:支持 UTF-8 和 GBK。
·提取模式:支持多种类型的提取模式,详情如下:
| 解析模式 | 说明 | 相关文档 |
| 单行全文 | 一条日志仅包含一行的内容,以换行符 \\n 作为一条日志的结束标记,每条日志将被解析为键值为 __CONTENT__ 的一行完全字符串,开启索引后可通过全文检索搜索日志内容。日志时间以采集时间为准。 | 单行全文格式 |
| 多行全文 | 指一条完整的日志跨占多行,采用首行正则的方式进行匹配,当某行日志匹配上预先设置的正则表达式,就认为是一条日志的开头,而下一个行首出现作为该条日志的结束标识符,也会设置一个默认的键值 __CONTENT__,日志时间以采集时间为准。支持自动生成正则表达式。 | 多行全文格式 |
| 单行 – 完全正则 | 指将一条完整日志按正则方式提取多个 key-value 的日志解析模式,你需先输入日志样例,其次输入自定义正则表达式,系统将根据正则表达式里的捕获组提取对应的 key-value。支持自动生成正则表达式。 | 单行 – 完全正则格式 |
| 多行 – 完全正则 | 适用于日志文本中一条完整的日志数据跨占多行(例如 Java 程序日志),可按正则表达式提取为多个 key-value 键值的日志解析模式,你需先输入日志样例,其次输入自定义正则表达式,系统将根据正则表达式里的捕获组提取对应的 key-value。支持自动生成正则表达式。 | 多行-完全正则格式 |
| JSON | JSON 格式日志会自动提取首层的 key 作为对应字段名,首层的 value 作为对应的字段值,以该方式将整条日志进行结构化处理,每条完整的日志以换行符 \\n 为结束标识符。 | JSON 格式 |
| Nginx 日志模板 | 适用于 Nginx 日志。 | – |
| 分隔符 | 指一条日志数据可以根据指定的分隔符将整条日志进行结构化处理,每条完整的日志以换行符 \\n 为结束标识符。日志服务在进行分隔符格式日志处理时,你需要为每个分开的字段定义唯一的 key,无效字段即无需采集的字段可留空,不支持所有字段均为空。 | 分隔符格式 |
| 组合解析 | 当你的日志结构太过复杂,涉及多种解析模式,单种解析模式(如 Nginx 模式、完整正则模式、JSON 模式等)无法满足日志解析需求时,你可以使用 LogListener 组合解析格式解析日志,此模式支持用户在控制台输入代码(JSON 格式)用来定义日志解析的流水线逻辑。你可添加一个或多个 LogListener 插件处理配置,LogListener 会根据处理配置顺序逐一执行。 | 组合解析格式 |
·过滤器:LogListener 仅采集符合过滤器规则的日志,Key 支持完全匹配,过滤规则支持正则匹配,如仅采集 ErrorCode = 404 的日志。你可以根据需求开启过滤器并配置规则。
注意:说明:
注意:一个日志主题目前仅支持一个采集配置,请保证选用该日志主题的所有容器的日志都可以接受采用所选的日志解析方式。若在同一日志主题下新建了不同的采集配置,旧的采集配置会被覆盖。
10. 单击完成,完成投递到 CLS 的容器日志采集规则创建。
六、更新日志规则
1. 登录 容器服务控制台,在左侧导航栏中选择集群。
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧导航栏中的日志,在日志采集页签中单击采集规则右侧的编辑。如下:
4. 根据需求更新相应配置,单击完成。
七、相关文档
你不仅可以使用控制台配置日志采集,还可以通过自定义资源(CustomResourceDefinitions,CRD)的方式配置日志采集。详情见 使用 CRD 配置日志采集。