首页 > 其他分享 >K8s日志采集终极指南:Logtail + CRD实现多环境精准采集

K8s日志采集终极指南:Logtail + CRD实现多环境精准采集

时间:2025-01-20 13:29:58浏览次数:3  
标签:log 采集 CRD helm 日志 Logtail com cn

需求背景

需求:
k8s的应用日志解决方案,不同项目组的日志要采集到不同的logstore,并且只采集指定环境的日志(dev/test/prd)

方案:

  1. logtail使用daemonset方式
  2. 通过crd来自定义日志采集

1. 部署helm v3

helm: https://github.com/helm/helm/releases

wget https://get.helm.sh/helm-v3.3.4-linux-amd64.tar.gz \
&& tar xf helm-v3.3.4-linux-amd64.tar.gz \
&& \cp -a linux-amd64/helm /usr/local/bin/helm \
&& helm version

2. 部署logtail-daemonset

安装Logtail日志组件:https://help.aliyun.com/document_detail/157317.html

开通一个子账号专门用于管理日志服务,并创建project k8s-log-custom-logtail,官方推荐"k8s-log-custom-"开头,咨询客服得知这个其实是可以随便自定义的

wget http://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/alicloud-log-k8s-custom-install.sh; \
&& chmod 744 ./alicloud-log-k8s-custom-install.sh; \
&& sh ./alicloud-log-k8s-custom-install.sh {your-project-suffix} {region-id} {aliuid} {access-key-id} {access-key-secret}

查看

helm status alibaba-log-controller

3. 配置aliyunlog-crd

file极简采集方式,配置多个crd来支持不同项目组使用不同logstore,容器的环境变量需要包含 ENVGROUP,用于筛选需要采集日志的容器

log-crd-dev-demo.yml

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  # 资源名,在集群内唯一
  name: log-demo
  namespace: log-crd
spec:
  # [可选]Project名称,默认为安装时设置的Project,若指定Project请确保该Project未被使用
  # project: k8s-log-custom-logtail
  # Logstore名称,不存在时自动创建
  logstore: k8s-demo
  # [可选]Shard数量,默认为2,支持1-10
  shardCount: 2
  # 详细配置
  logtailConfig:
    # 采集的数据源类型,file(文本文件)或plugin(标准输出)
    inputType: file
    # 采集配置的名称,与资源名(metadata.name)保持一致
    configName: log-demo
    inputDetail:
      # 极简模式日志,logType设置为"common_reg_log"
      logType: common_reg_log
      # 日志文件夹
      logPath: /var/log/app
      # 文件名, 支持通配符,例如log_*.log
      filePattern: "*.log"
      # 行首正则表达式
      logBeginRegex: '\d+-\d+-\d+\s\d+:\d+:\d+\.\d+\s.*'
      # 解析正则
      regex: '(.*)'
      # 提取出的key列表
      key: ["content"]
      # 采集容器内的文件,dockerFile设置为true
      dockerFile: true
      # 只采集包含指定环境变量的容器日志,多个变量时,只要满足其中一个就会被采集
      dockerIncludeEnv:
        GROUP: demo
      # 排除包含指定变量
      dockerExcludeEnv:
        ENV: "^test|prd$"

查看

kubectl -n log-crd get aliyunlogconfigs

其他

行首正则可以在页面上选择简单多行模式,贴入一段日志自动生成,再复制出来(极简模式-多行 是特殊的完整正则 crd里面没有设置的参数)
noteattach.png

crd和sls控制台配置最终生成的是logtail客户端的采集配置 /usr/local/ilogtail/user_log_config.json

"##1.0##k8s-log-custom-logtail$log-test-product" : {
         "advanced" : {
            "force_multiconfig" : false
         },
         "aliuid" : "1778178830505945",
         "category" : "k8s-test-product",
         "create_time" : 1621580904,
         "defaultEndpoint" : "cn-shanghai-intranet.log.aliyuncs.com",
         "delay_alarm_bytes" : 0,
         "delay_skip_bytes" : 0,
         "discard_none_utf8" : false,
         "discard_unmatch" : true,
         "docker_exclude_env" : {
            "ENV" : "^dev|prd$"
         },
         "docker_exclude_label" : {},
         "docker_file" : true,
         "docker_include_env" : {
            "GROUP" : "product"
         },
         "docker_include_label" : {},
         "enable" : true,
         "enable_tag" : true,
         "file_encoding" : "utf8",
         "file_pattern" : "*.log",
         "filter_keys" : [],
         "filter_regs" : [],
         "group_topic" : "",
         "keys" : [ "content" ],
         "local_storage" : true,
         "log_begin_reg" : "\\d+-\\d+-\\d+\\s\\d+:\\d+:\\d+\\.\\d+\\s.*",
         "log_path" : "/var/log/intramirror",
         "log_type" : "common_reg_log",
         "log_tz" : "",
         "max_depth" : 100,
         "max_send_rate" : -1,
         "merge_type" : "topic",
         "preserve" : true,
         "preserve_depth" : 0,
         "priority" : 0,
         "project_name" : "k8s-log-custom-logtail",
         "raw_log" : false,
         "regex" : [ "(.*)" ],
         "region" : "cn-shanghai",
         "send_rate_expire" : 0,
         "sensitive_keys" : [],
         "shard_hash_key" : [],
         "tail_existed" : false,
         "timeformat" : "",
         "topic_format" : "none",
         "tz_adjust" : false,
         "version" : 2
      }
   },
   "region_list" : [
      {
         "endpoint_list" : [
            "cn-shanghai-intranet.log.aliyuncs.com",
            "cn-shanghai.log.aliyuncs.com"
         ],
         "name" : "cn-shanghai",
         "primary" : true,
         "profile_project" : "ali-cn-shanghai-sls-admin"
      },
      {
         "endpoint_list" : [
            "cn-shanghai-b-intranet.log.aliyuncs.com",
            "cn-shanghai-b.log.aliyuncs.com"
         ],
         "name" : "cn-shanghai-b",
         "primary" : false,
         "profile_project" : "ali-cn-shanghai-b-sls-admin"
      }
   ]
}

查看配置可以看到控制台的配置为logtail自动生成了

"keys" : [ "content" ],
"regex" : [ "(.*)" ]

所以如果没有特殊需要,我们在配置crd时这2个参数也可以直接配置成这样

还需要注意的是,同一个文件只会被logtail采集一次,例如:按照配置,一个文件既会被A采集,也会被B采集,那么它只会被采集到其中一个里面去(比如只会被采集到A的logstore)。这时只有A排除了这个采集时,才会跑到B的logstore里。

除了通过容器ENV来筛选,还可以通过LABLE,参数 dockerIncludeLabel dockerExcludeLabel,用法和 dockerIncludeEnv dockerExcludeEnv差不多,要以 docker inspect 中的为准

参考链接

K8S 日志采集最佳实操
https://www.cnblogs.com/lihanlin/p/12657680.html
Kubernetes中Logtail日志采集CRD配置详解
https://blog.csdn.net/weixin_34406061/article/details/89700948
安装Logtail日志组件
https://help.aliyun.com/document_detail/157317.html
通过DaemonSet-CRD方式采集日志
https://help.aliyun.com/document_detail/74878.html
Logtail配置 详细参数
https://help.aliyun.com/document_detail/29058.html

标签:log,采集,CRD,helm,日志,Logtail,com,cn
From: https://blog.csdn.net/biyanjiangdu04942/article/details/145245215

相关文章

  • cilium 采集网络事件
    ciliumv1.15.1为了实时性,内核态eBPF写入BPF_MAP_TYPE_PERF_EVENT_ARRAY,用户态eBPF从中读取trace和drop事件。bpf/lib/trace.hsend_trace_notify4函数bpf/lib/events.hciliumEVENTS_MAP使用的__NR_CPUS__来自nproc--all即节点cpu数量。pkg/monitor/agent/agent.goAttachTo......
  • LabVIEW桥接传感器数据采集与校准程序
    该程序设计用于采集来自桥接传感器的数据,执行必要的设置(如桥接配置、信号采集参数、时间与触发设置),并进行适当的标定和偏移校正,最终通过图表呈现采集到的数据信息。程序包括多个模块,用于配置通道、触发条件、数据采集和校准过程,确保数据的准确性和可靠性。详细说明:通道设......
  • e2studio开发RA0E1(17)----ADC单通道采集电压
    e2studio开发RA0E1.17--ADC单通道采集电压概述视频教学样品申请完整代码下载硬件准备参考程序新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_UARTA_Open()函数原型回调函数user_uart_callb......
  • automa 使用教程 采集小红书关键词搜索结果
    博主制作的视频教程Automa介绍Automa是一款低代码/无代码的浏览器扩展,用于进行浏览器自动化操作。与手动输入、点击和从网站检索数据相比,Automa将帮助您自动执行所有这些操作。官方仓库:https://github.com/AutomaApp/automa安装Automa在Chrome商店搜索"Automa"并安装......
  • 从零开始打造AI知识库:使用爬虫自动化采集网页内容的完整教程
    言简意赅的讲解crawler爬虫解决的痛点童鞋们在实现私有化大语言模型和实现精准参数归纳与程序执行之后还是不满足AI相关的能力。在AI驱动的知识管理时代,快速搭建属于自己的知识库已成为很多开发者和团队的核心需求。本文将带你一步步创建一个基于网页爬取的知识库,并将其......
  • 频率温度信号多通道数据采集仪:边坡、隧道、桥梁、铁路监测的实时在线解决方案
    频率温度信号多通道数据采集仪:边坡、隧道、桥梁、铁路监测的实时在线解决方案VTN416是一款专为边坡监测、隧道监测、桥梁监测、铁路监测等领域设计的多通道振弦、温度、模拟传感信号系列数据采集仪。它能够实时在线采集32通道的振弦频率、热敏电阻或DS18B20温度传感器以及模拟量......
  • Ellyn-Golang调用级覆盖率&方法调用链插桩采集方案
    词语解释Ellyn要解决什么问题?在应用程序并行执行的情况下,精确获取单个用例、流量、单元测试走过的方法链(有向图)、出入参数、行覆盖等运行时数据,经过一定的加工之后,应用在覆盖率、影响面评估、流量观测、精准测试、流量回放、风险分析等研发效能相关场景。常见的覆盖率工具实现......
  • EFK采集k8s日志
       在Kubernetes集群中,需要全面了解各个pod应用运行状态、故障排查和性能分析。但由于Pod是动态创建和销毁的,其日志分散且存储不持久,因此需要通过集中式日志采集方案,将日志收集到统一的平台并配置日志可视化分析和监控告警,以实现日志的可追溯性、实时监控和高效分析......
  • ELFK日志采集实战
    一、日志分析概述日志分析是运维工程师解决系统故障,发现问题的主要手段日志主要包括系统日志、应用程序日志和安全日志系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因经常分析日志可以了解服务器的负荷,性能安全性,从而及时......
  • 代理IP在数据采集行业中的长远意义
    目录一、突破地理限制,拓展数据源二、保护用户隐私和数据安全三、提高数据采集效率和准确性四、模拟用户行为,获取全面数据五、结论在数字化时代,数据已成为企业决策和个人分析的重要依据。然而,数据采集的过程并非一帆风顺,常会遇到IP禁令、地理限制和隐私保护等挑战。此时......