利用观测云打造企业级的统一日志中心
前言
在数字化转型时代,现代的大规模应用程序每天可以生成数以亿计的日志数据。它是企业运营和管理中的宝贵资产,记录了系统、应用和设备的各种活动和事件。通过分析日志数据,企业可以深入了解业务运行情况、识别潜在问题和优化机会,提升系统稳定性、安全性和性能表现。因此,企业构建“统一日志中心”的必要性是显而易见的,它可以集中管理和分析各类日志数据,实现全面监控、快速响应和深度分析,帮助企业实现故障排除、安全审计、性能优化等目标,提高运营效率、降低风险,并为业务发展提供有力支持。
观测云(www.guance.com)秉承“统一采集、统一处理、统一分析”的理念,构建了一套高效的观测数据分析平台。本文从日志采集、处理、存储、分析的各个过程,分别观测云如何帮助企业又快又好地建设统一日志中心。
观测云日志采集能力
在采集方面,观测云的统一数据采集器DataKit拥有丰富的采集模板和强大的集成扩展能力,能够使用采集磁盘文件、容器stdout、接收远程推送日志、sidecar方式采集日志等多种方式,以适应企业异构的IT环境和多元的日志采集需求。
观测云对不同日志的处理方式
DataKit内置了操作系统日志、容器日志、MySQL & Nginx等常用数据库和中间件的采集器,能同时采集监控对象属性、指标数据(Metric)、日志数据(Log),用统一采集的理念最大程度上减少部署在监控对象上的agent数量。
DataKit采集器的运行管理十分方便,在K8S环境中,DataKit会以DaemonSet方式运行,确保在每个节点上都会运行一个日志采集器 Pod,从而实现对整个集群的日志数据全面覆盖。无论集群中有多少个节点,都能保证每个节点的日志都被实时采集。观测云还提供了DCA(DataKit Client Agent),它是一个用于批量管理DataKit的工具。通过DCA,用户可以更加方便地对DataKit状态、日志解析模板、黑名单等配置进行批量操作和维护,从而提高数据采集的效率和准确性。
对于已经使用开源agent采集日志的企业来说,通常倾向于将原有agent采集的日志转发给新建设的统一日志中心。观测云可使用Fluentd、Logstash、Kafka、API等方式来接收已采集的日志,充分保留企业过往的技术投入并减少替换成本。
观测云日志处理能力
在日志处理过程中,观测云内置了十余种常用数据库&中间件的官方日志解析模板,包括Kafka、Elasticsearch、MySQL、Nginx、Redis、Tomcat、MongoDB等,方便用户直接使用。另外还提供了数十个脚本函数,让用户可以按照不同的日志处理场景进行快速引用,实时进行调试。
例如,很多企业希望在日志采集时对日志中的敏感信息进行脱敏,则可以使用观测云Pipeline中的脱敏函数对指定字段范围做数据脱敏,即可在采集侧完成脱敏处理,避免了敏感信息在互联网传输带来的合规性问题。
再如,很多企业也提到了希望能配置采集端黑名单,以减少宝贵的带宽资源,降低中心化处理的性能开销。在观测云上,您可以通过drop函数(丢弃整条日志或某个字段)、sample函数(对日志进行采样),或者是配置日志黑名单来达到上述目的。
对于模板不能适配的日志格式,观测云也提供了多种方式让用户能轻松完成日志解析。首先是在Pipeline解析过程中提供了“一键获取样本”并实时调试的能力,让用户可以实时查看Pipeline对日志的处理是否满足需求。同时为了降低编写Pipeline的难度,观测云还提供了交互式的命令行工具,帮助用户快速选择适合某个字段的函数。
交互式命令行工具,降低日志解析难度
此外,Pipeline还支持通过openAPI进行导出、导入,以便在集团性组织在创建工作空间时直接引用,快速将已经调整好的Pipeline分发给不同业务系统,提升业务团队的使用体验。
值得一提的是,对于在日志采集中经常遇到的多行日志采集问题,观测云提供了自动多行模式、自定义多行模式的方式。自动多行模式会根据特定的起始标记、结束标记、正则表达式等来进行多行日志的识别,降低用户的使用负担。
观测云日志存储能力
观测云在面向全球用户提供SaaS服务的过程中,需要实施处理并存储海量的日志,如何在成本与用户体验间保持平衡,观测云付出巨大努力。在过去使用elasticsearch/opensearch方案时,我们发现该方案存在写入占用资源多、对无模式表支持较差、聚合查询性能差等问题。因此观测云在经过严谨的调研、开发、测试之后推出了全新架构的GuanceDB。
GuanceDB满足了观测云对 Schema Free 的要求,解决了数据 Schema 频繁变化痛点;提高了数据写入的性能,保证了数据写入的时效性和查询的实时性;提升了全文检索的性能并降低查询的资源开销...... 总而言之,观测云最终实现:仅使用 Elasticsearch 的 1/3 成本、获得 2~4 倍的性能提升,整体性价比提升了近 10 倍!
为了满足企业对日志的长期保存需求(通常出于日志审计的考虑),同时又要兼顾存储成本,观测云提供了“数据转发”功能,便于观测云提供日志等数据保存到观测云的对象存储及转发到外部存储的功能,您可以自由选择存储对象,灵活管理数据转发数据。在数据转发页面,您可以通过设置查询时间和数据转发规则快速查询存储数据(包含观测云备份日志、AWS S3、华为云 OBS、阿里云 OSS 和 Kafka 消息队列),还可以在无需额外处理的情况下,直接在观测云上查看历史备份日志和 SLS Query Logstore 数据。
观测云日志分析能力
DQL(Debug Query Language)是观测云开发的数据查询语言。DQL支持在观测云工作空间或者终端设备进行数据查询,允许用户检索和分析存储在观测云中的各种数据,包括日志、指标、链路追踪等。
得益于DQL统一查询语言和统一风格的“查看器”,用户在观测云上无论是分析日志、链路、RUM(用户体验数据)时都有一致性的体验,同样的简单易用、同样的秒级查询体验。
常用搜索历史模板、快捷筛选、字段补全等功能,在观测云上都一应俱全。考虑到团队在排查故障、分析异常过程中经常会有数据共享的需求,观测云设计了贴心的“快照分享”,团队成员可以创建自定义时间段即时拷贝的数据副本,并生成指定查看权限的快捷访问链接。团队可以通过一个浏览器链接分享日志数据,并且可以保留分享者在日志上做过的时间筛选、条件筛选,该快照也并非是单一的静态数据,而是可以交互的日志分析界面,大大降低了团队间使用截图、发送原始日志的沟通成本。出于对数据安全性的考虑,分享者可以对快照设置字段脱敏、添加水印、设置有效时间、链接加密、访问IP白名单等多种特性,在信息高效传递的同时充分保证数据的安全性,便于团队间、外部企业进行协作。
对于很多企业来说,特别担心采集的日志中存在敏感数据,但在日志的采集、存储、分析过程中极其难以发现。为了解决这个问题,观测云开发了“敏感数据扫描”功能,内置了近百个敏感数据规则库,并允许用户自定义新建敏感数据规则,通过引用这些规则来对存储在观测云中的日志数据进行主动扫描,一旦发现敏感字段即可进行加密,确保数据合规性。
此外,观测云还支持通过“数据访问”功能为不同角色配置对应的日志数据访问查询范围,以实现数据查询范围的精细化管理。例如负责不同业务系统的团队、同一团队中根据角色区分不同的日志权限,都可以灵活进行配置。
在“日志智能检测”功能中,观测云运用智能检测算法,监控工作空间内采集器产生的日志数据。智能识别日志数量的突增 / 突降、错误日志的突增的异常数据,及时发现不符合预期的异常状态,及时提醒团队关注业务是否有异常表现。
日志突增的智能检测
总结
当企业考虑构建统一日志中心时,通常需要考虑功能需求、可扩展性、安全性、兼容性、性能和效率、成本效益与用户体验。相信经过上面的介绍,您对观测云的日志分析能力拥有了比较全面的认识。观测云一直致力于为用户提供更好、更优的可观测能力,相信是企业构建统一日志中心、统一可观测平台的理想选择。