使用 Elastic Streams 轻松处理 Kubernetes 日志
作者来自 Elastic Luca Wintergerst了解如何使用Elastic Streams处理Kubernetes日志包括使用条件块、AI 生成的Grok模式以及选择性丢弃数据来减少噪声和存储成本。Streams是Elastic Observability中的一项全新AI 能力。它构建在Elasticsearch平台之上旨在让Site Reliability Engineers ( SREs )在调查问题时将日志作为主要信号来源从而更快获得答案并更快解决问题。几十年来日志一直被认为噪声过多、成本高昂且难以管理许多可观测性厂商也把它当作二等公民对待。Streams改变了这一现状它将原始日志转化为最有价值的资产不仅可以立即识别根本原因还能理解根本原因背后的 “为什么”从而实现即时解决。更多信息可以参考我们之前的文章Streams 介绍。许多SRE在cloud native架构上进行部署而Kubernetes基本已经成为默认的部署架构。然而Kubernetes日志默认是非常混乱的。单个(data)stream往往会混合以下内容access logsJSON payloadshealth checks内部服务通信日志Elastic Streams提供了一条更快的路径。你可以通过条件语句隔离日志子集使用AI从真实样本生成Grok模式并在日志产生存储和查询成本之前丢弃不需要的文档。为什么Kubernetes日志很快就会变得混乱默认的Kubernetes container logs流可能同时包含来自多个服务的数据。在一个样本中你可能会看到来自应用pods的HTTP access logs详细的worker或batch job状态日志不同格式的平台和容器生命周期事件这就是为什么 “一个全局解析规则” 通常会失败。你需要根据日志结构或应用类型制定有针对性的处理逻辑。从历史上看这类自定义处理既容易出错又非常耗时。Streams Processing带来了什么变化Streams Processing在9.2及更高版本中提供将这一流程变成一种实时、交互式体验你可以在UI中构建条件和处理器在保存之前可以使用样本文档验证每一次修改你可以使用AI从选定日志自动生成提取模式结果是在不需要猜测的情况下以更安全的方式迭代日志解析逻辑。示例解析自定义应用日志我们将从你的Kubernetes streamlogs-kubernetes.containers_logs-default开始并创建一个条件块将处理范围限定到某一个服务。一旦保存该条件它会自动将样本数据过滤为符合该条件的日志子集。这在预览中会以蓝色高亮显示。在该块内部我们将添加一个Grok processor然后点击Generate pattern。这个agentic过程现在会使用LLM生成一个Grok pattern用于解析日志。默认情况下会使用Elastic Inference Service但你也可以配置为使用你自己的LLM。在样本数据验证通过后检查生成的pattern并接受它。示例演练丢弃嘈杂的postgres-loadgen文档并不是所有日志都足够重要需要长期保存。例如来自负载测试工具如load generator的日志对于长期分析并没有价值因此我们可以将这些日志丢弃。为此我们将添加第二个条件块用于处理那些你不希望长期索引的日志。在该块内部添加一个drop processor然后在Dropped选项卡中进行验证。通过实时模拟安全保存Streams最有用的功能之一是preview-first workflow。在正式生效之前你可以检查matched、parsed、skipped、failed 和 dropped的样本数据。YAML 模式与等价的 API 请求交互式构建器适用于大多数编辑场景但高级用户可以切换到YAML 模式来获得更直接的控制。你也可以打开Equivalent API Request来复制负载用于自动化和基础设施即代码IaC工作流。关于向后兼容性的说明Streams Processing 建立在 Elasticsearch ingest pipelines 之上因此它与团队已经使用的同一摄取模型兼容。当你保存处理更改时Streams 会通过流处理管道模型追加逻辑例如通过数据流使用的 custom 约定。这意味着你可以逐步采用条件处理、解析和选择性丢弃而无需更改 Kubernetes 日志采集器。接下来做什么Streams Processing 不断获得新的处理能力。请查阅 Streams 文档以获取最新更新。在接下来的几个月中更多操作将自动化并移至后台从而减少处理日志所需的手动工作量。我们正在努力实现的另一个里程碑是提供在读取时而非写入时的处理能力。使用 ES|QL这将使你能够迭代解析逻辑而无需担心提交更难回滚的更改。也可以通过在 Elastic Serverless 上获取免费试用来体验此功能。祝你日志分析愉快原文https://www.elastic.co/observability-labs/blog/kubernetes-logs-elastic-streams-processing