日志组件介绍
日志组件是当用户开启容器服务内的日志服务时,腾讯云日志服务部署于用户集群内每个标准节点上的组件,用于采集容器服务产生的业务日志并写入腾讯云上的消费端,目前支持写入 CLS 和 Kafka。
日志服务相关组件如下:
名称 | 资源类型 | 说明 |
tke-log-agent | DeamonSet | 每个 log-agent 的 Pod 中包含一个 controller 容器和一个 loglistener sidecar 容器,负责采集节点上所有容器产生的日志。 |
cls-provisioner | Deployment | 每个集群一个实例,负责将 CRD 配置转换成 loglistener 可以理解的采集配置与 CLS 通信。 |
logconfigs.cls.cloud.tencent.com | CRD | - |
log-agent 版本迭代记录
v1.1.16
类别 | 内容 |
Feature | cls-provisioner 支持创建 topic 时开启动态索引。 cls-provisioner 支持 logconfig 添加 finalizer。 给 loglistener 添加 max_metadata_wait_time_s 参数,支持通过环境变量可配置。 当键值索引为 text 的时候,分词符可以为空。 |
Bugfix | log-agent 修复 metadata 生成时 container 判断错误的问题,例如 /data 路径同一个 pod 的不同 container 都存在,比如 A container volume 挂载到 /data,B 有普通目录 /data。 cls-provisioner 修复 host_file 和 container_file 之间切换时可能存在的残留脏数据问题。 修复自建模式下,采集配置同步出现被删除或者被覆盖的问题。 修复 kafka 采集器无法获取目标最新 metadata 的问题,增加定时更新 metadata 机制。 修复不同采集规则采集同一目录下不同文件,导致 metadata 未按预期生成的问题。 |
v1.1.15
类别 | 内容 |
Feature | kafka 采集器支持自定义元数据。 kafka 采集器支持元数据以字符串格式输出。 kafka 采集器元数据增加 cluster_id 字段。 支持高级过滤器。 |
Bugfix | 修复存量组件 resource 兼容问题,通过组件配置 CLOUD_API_REGION 支持新增无 CLS 服务地域,log-agent 增加 docker DataRoot 避免标准配置的 docker runtime 触发动态挂载。 适配 1.14 以下集群标准输出路径映射,log-agent 不再自动挂载 docker dataroot。 修复因 retryChan 打满导致无法继续处理文件事件的问题。 修复因 containerOpt 为空,新增导致标准输出日志无法采集的问题。 修复 ns 频繁更新导致 cls-provisioner OOM 的问题。 |
v1.1.14
类别 | 内容 |
Feature | 日志组件暴露采集规则状态相关指标,默认端口8088。 |
Bugfix | - |
v1.1.13
类别 | 内容 |
Feature | 弹性 pod cls-provisioner 切换 norm 鉴权。 |
Bugfix | 修复多路径引入的误删路径的问题。 |
v1.1.12
类别 | 内容 |
Feature | TKE 多路径采集支持路径通配符。 |
Bugfix | 适配1.19版本以下集群,因 kubelet 映射标准数据日志路径失败,导致日志丢失的问题。 |
v1.1.11
类别 | 内容 |
Feature | 创建采集配置增加来源资源,用于区分 TKE 采集配置,CLS 控制台和直接跳转 TKE。 支持 namespace 和排除 namespace 支持使用正则表达式。 增加高级采集配置以采集 ClsAgentParseFailMerge,并修改参数类型以修复 JSON marshal/unmarshal 过程中的参数丢失问题。 支持自定义 cls-provisioner 和 log-agent 的安装命名空间,默认为 kube-system。 支持 container file 和 host file 多路径采集。 |
Bugfix | 修复了 log-agent 在 job pod 结束的情况下未删除软链接的问题,导致 loglistener 监控的文件和目录达到上限。 修复 kafkaListener 由于单行日志过长,导致采集失败的问题。更新单行最大长度到2MB。 修复了 PVC StorageClass 为空时映射日志目录失败的问题。 |
v1.1.10
类别 | 内容 |
Feature | - |
Bugfix | 修复了 log-agent 在处理 container notin 反选逻辑时出现的问题。 |
v1.1.9
类别 | 内容 |
Feature | 增加 AdvancedConfig,增加 MaxDepth 和 FileTimeout 参数。 增加 HotPeriod 参数,支持标准 topic 的数据到低频的沉降规则。 支持容器选择和排除,支持容器元数据选择采集,支持标签选择采集。 |
Bugfix | 修复了黑名单路径去除前缀异常的问题。 修复了 log-agent 在 Pod 不变但软链接被删除重建的问题。 修复了 cls-provisioner 查询不到 topic 导致 panic 的问题。 添加了 logconfig 的 validation 验证,不合格的 logconfig 不进行处理,避免程序 panic 或处理错误。 |
v1.1.8
类别 | 内容 |
Feature | - |
Bugfix | 修复了不支持 workload 后不再重试的问题。 |
v1.1.7
类别 | 内容 |
Feature | 增加 logConfig-max-threshold 参数,当 logconfig 达到一定数量后,升级或重启会使用 informer 查询 workload 信息。 优化获取 docker root 的方式,增加优先通过 api 的方式获取。 kafka 采集支持自定义 metadata,支持 SASL 认证。 |
Bugfix | 修复 log-agent 启动时获取 kubelet 参数错误的问题。 修复替换 topicID 时,获取 logset 接口调用错误。 CLS 不区分大小写,cls-provisioner 修复大小写敏感问题。 log-agent 默认支持 csi,不再单独判断比较 StorageClasses 的 Provisioner。 |
v1.1.6
类别 | 内容 |
Feature | 增加 kafka 采集器对于容器标准输出的多行采集正则格式匹配。 环境变量增加 tag 云 API 地址配置。 |
Bugfix | 深圳、天津等无 CLS 服务地域,agent 自动创建 topic 同步集群标签失败。 修复 kafka 采集器 metadata 前缀捕获 containerd 格式问题。 修复 cls-provisioner 同步 CLS 遗漏增量、全量选项。 加载 logconfig 过程中查询 workload 信息通过 informer 查找,减少 apiserver 负载。 |
v1.1.5
类别 | 内容 |
Feature | CLS 投递地域增加圣保罗、上海自动驾驶专区。 |
Bugfix | - |
v1.1.4
类别 | 内容 |
Feature | 支持采集 init container 标准输出日志。 CLS 日志解析编码格式支持 GBK。 CLS 日志采集规则支持 namespace label selector。 |
Bugfix | 修复事件队列频繁重试问题。 优化 log-agent 里 Logconfig 和 pod 的处理队列算法,避免队列被大量重复事件堵塞。 修复没有 label 只有 namespace 时标准输出容器日志采集遗漏场景。 |
v1.1.3
类别 | 内容 |
Feature | CLS 低频存储支持设置索引。 |
Bugfix | - |
v1.1.2
类别 | 内容 |
Feature | CLS 在容器文件和宿主机文件场景下的采集规则支持配置黑名单。 |
Bugfix | - |
v1.1.1
类别 | 内容 |
Feature | loglistener支持使用 CPU 多核。 loglistener 内存支持自适应 loglistener limit设置, 限制 limit mem 100M为 loglistener 最大使用内存。 |
Bugfix | 修复 log-agent 更新 volume link 时未处理错误返回,导致更新失败不会重试的问题。 |
v1.1.0
类别 | 内容 |
Feature | CLS 日志自动创建 topic 时支持继承 TKE 集群标签。 支持 CLS 跨地域日志投递。 |
Bugfix | - |
v1.0.9
类别 | 内容 |
Feature | - |
Bugfix | 修复 topic 替换时 topic id 为空,导致 logconifg 被删除重建的情况。 修复 logconfigpro informer 未启动导致 logconfigpro 同步卡死的问题。 |
v1.0.8
类别 | 内容 |
Feature | 默认屏蔽采集 kube-system 下 loglistener 日志。 创建索引策略修改:只有自动创建 topic 的时候创建默认索引,其他场景不修改 topic 索引。 支持 kafka 采集器在消息中增加 metadata 信息。 支持 kafka 采集器解析方式 单行全文,JSON,多行全文。 |
Bugfix | 修复在 workload 场景下采集标准输出,无法指定 container 问题。 添加 docker client, 获取 Storage Driver 如果配置文件没有,通过 client 去获取 info 信息拿到 Storage Driver。 修复采集容器文件场景下,指定 metadatalabel 错误问题。 修正获取 kubelet 根目录方案。 修复删除旧采集配置前缀设置错误,导致采集配置匹配错误。 修复当前 kafka 采集器中设定消息 timestampKey timestamp 失效的问题。 |
v1.0.7
类别 | 内容 |
Feature | cls-provisioner 创建 topic 时,支持指定创建键值索引,包括索引名字、类型、分词以及是否开启统计;如果不支持则默认开启 pod_name,namespace,container_name 索引。 支持指定 metadatalabels, 将指定的 pod label 写入元数据采集,如果不支持,采集所有 pod label 为元数据。 支持自定义 CLS 云 API 服务后端地址。 |
Bugfix | - |
V1.0.6
类别 | 内容 |
Feature | log-agent 支持用户自定义修改 kubelet 根目录和 docker 根目录。 |
Bugfix | - |
V1.0.5
类别 | 内容 |
Feature | 日志采集配置支持 label != 操作(exclude labels)。支持日志服务只采集增量日志。 日志采集配置支持多选 namespace 和排除 namespace。 log-agent 支持配置同 Key 不同 Value 的 pod labels。 loglistener 支持参数可配置。 |
Bugfix | 修复 log-agent 使用 configmap 作为 source 时的已知问题。 修复部分条件下采集器配置为空导致校验失败的问题。 修复删除日志规则时,采集器删除配置失败的问题。 解决 logConfig 配置的兼容性问题。 |
V1.0.1
类别 | 内容 |
Feature | cls-provisioner 访问 CLS 的接口切换到云 API。 支持 TKE 日志采集投递到 ckafka。 |
Bugfix | - |
V0.2.28
类别 | 内容 |
Feature | - |
Bugfix | 修复一个 Pod 对应多个 logconfig 问题。 |
V0.2.27
类别 | 内容 |
Feature | - |
Bugfix | 修复用户在 topic 上设置的提取模式在部分场景下被覆盖的问题。 |
V0.2.26
类别 | 内容 |
Feature | - |
Bugfix | 修复删除 stdout 类型的采集配置时,部分情况下无法创建 metadata 的问题。 |
V0.2.25
类别 | 内容 |
Feature | - |
Bugfix | 修复部分情况下 log-agent panic 问题。 修复 workload 缓存导致软连接删除问题。 修复 metadata 文件创建失败问题。 |
V0.2.24
类别 | 内容 |
Feature | - |
Bugfix | 修复在 pod 中的 container restart 的过程中,metadata 被误删除的问题。 log-agent 启动前自动清理 LogAgentRootDir,避免脏数据污染。 修复极端场景导致的 log-agent 组件 panic。 修复 log-agent 重复挂载 /data 目录导致的启动失败。 |