发布日期:2023-07-13 11:26:34
分享到
01. 日志数据的起源
日志数据的起源可以追溯到计算机科学和信息技术的早期发展。随着计算机系统变得越来越复杂和庞大,监控和诊断系统的运行状态也变得越来越困难,于是工程师们意识到需要一种记录和存储系统事件和信息的机制,让计算机“说人话”,主动表达自己发生了哪些变化,运行了什么代码,并记录下来。这就是日志的诞生。
日志数据记录了系统或应用程序在执行过程中每个事件的明细详情。当系统或应用程序启动时,它会记录启动过程中的每一个步骤,包括加载的驱动程序、初始化的设备和运行的服务。如果系统或应用程序遇到错误或异常情况,日志会记录错误消息、警告信号和异常堆栈跟踪,帮助工程师定位问题。
此外,日志还可以记录用户的活动和行为。当用户与计算机系统进行交互时,日志会记录用户的请求、输入和操作,以便企业追踪用户行为、提供个性化服务或进行安全审计。以下为日志的简单示意图:
02. 日志数据特点
日志数据和指标数据都是运维中非常重要的数据类型,可以帮助运维人员监测系统的稳定性,及时发现和解决问题,那么日志数据相对于指标数据有哪些特点呢?日志数据通常是实时的,记录的是事件发生的瞬间的数据情况,而指标数据通常是定期收集的,提供的是更加量化和简洁的信息。
日志数据特点:详细,多样性,海量,可读、实时
指标数据特点:简洁,波动性,定期,量化、直观
基于日志和指标的数据特点,当系统发生故障时,运维人员通常先关注指标数据,了解故障范围和影响面,快速恢复故障,降低对业务的影响;然后再通过日志数据定位和诊断问题,分析故障的根本原因,彻底解决故障问题。因此统一管理和应用企业日志数据十分重要。
03. 日志规范之道:记录何时何事
现在你可能会想,既然日志数据如此有用,那是不是应该立马行动起来,建设工具进行日志收集和分析呢?很高兴你感受到了日志数据的价值,但请先等等,工欲善其事,必先利其器,在建设工具之前,我们有必要先规范化日志的输出。
如果把建设日志工具比喻成盖房子,那么日志工具的能力相当于房梁,日志工具的上层应用场景相当于房子的门户,日志本身的记录相当于房子的基座。如果日志输出没有逻辑,基座搭建不稳,那么房子无论怎么装修都是不牢固的,无法抵挡狂风暴雨。
日志应该记录什么?理论上来说,日志应该记录一切,事无巨细,这样无论什么时间点程序发生了什么事件,工程师们都可以通过日志查看现场快照。但这可能会快速让网络和磁盘达到负载饱和,还可能会让业务系统有潜在的性能瓶颈,因为花费了太多时间来记录日志,导致可能比业务本身运行的时间还多。因此,针对不同的应用程序,日志需要记录的信息、推荐的日志记录频率可能都是不一样的。
在确定日志应该记录什么信息之前,不妨重新回顾一下输出日志数据的目的:定位根本问题,避免回答不了“为什么跑成了这个样子”的疑问。当应用程序出现问题时,通常你会先问哪些问题?在排查故障的过程中,通常你需要哪些信息进行协助?基于目的去思考,那么需要日志记录什么信息,答案就显而易见了。
日志除了需要记录有用信息外,还需要遵循一些规则,让工程师们能够看懂这个日志在描述一件什么事。在笔者看来,日志输出应该遵循这些规则:
04. 高效管理日志的秘诀
输出规范化的日志后,下一步就是把日志收集起来进行管理。工程师们通常通过建设日志工具完成日志的集中收集,主流的日志工具架构将这个过程划分为五层去实现,如下图所示。
接入层:
接入层是指与应用程序直接交互的组件,负责接收应用程序生成的日志消息。它可以是一个agent、api或中间件,用于捕获应用程序中的日志事件。
传输层:
传输层接收来自接入层的日志消息,并将其传输到处理层或存储层。除传输日志数据外,通常还充当缓冲层,支持海量数据堆积、高吞吐读写,提供异步解耦、削峰填谷的能力。
处理层:
处理层接收传输层发送的日志消息,并进行进一步的处理和增强。它可以执行各种操作,如日志数据的过滤、解析、替换、富化等。
存储层:
存储层是用于保存和管理日志数据的组件。它负责接收处理层发送的日志消息,并将其持久化存储。存储层可以是数据库、文件系统、日志管理平台或云服务等。通常使用elasticsearch、clickhouse作为日志存储系统,便于查询日志。
应用层:
应用层是日志工具的最上层,提供了用户界面和应用程序编程接口(api),使用户能够查询和分析日志数据。它可以支持日志的监控、告警、报表生成和可视化等功能。
通过日志工具的五层架构实现日志数据的收集和管理后,深入探讨日志的高效管理变得至关重要。若想实现日志的高效管理,需要专注于三个核心要素:统一、集中、合理划分。
1)统一,指的是通过agent统一采集各类设备的日志
当前日志采集面临以下挑战:
如果缺乏统一的采集能力,需要对每一种采集场景进行定制化适配,那么工程师们可能会在日志接入这一步就丧失信心,企业的接入实施成本也会极高。这种折磨人的情况往往会通向两个分支:
因此,好的日志工具应该实现采集的统一,用一个agent即可满足各种采集场景。高效接入不同设备的日志,将时间和精力投入在更值得建设的业务场景上。
2)集中,指的是集中纳管日志
日志分散在不同系统时,手动查找日志和分析问题十分困难,工程师们可能需要横跨应用甚至服务器查看上万条日志后才能定位到关键日志。这个时候你发现一个奇怪的现象了吗?明明日志的诞生是为了让工程师们更高效地回答“why it error”,但是为了找到这条带有“答案”的日志,工程师们需要花大量时间在成千上万条日志中先回答“when?where?which?”等等问题。这么一通操作下来,工程师们辛辛苦苦却没有提升排障效率,这显然与设计日志的初衷不符。
那么要如何破除这个困境呢?答案是,通过建设日志工具用一个大池子将日志集中纳管起来。这样的好处是,当发生故障时,工程师们可以直接利用日志工具的界面化操作进行日志的统一查询和分析,无需花精力关注数据究竟以什么形式存储在池子的哪里。
除此之外,日志工具提供的集中纳管能力,还可以确保日志数据的完整性、可追溯性和可审计性,满足监管部门的安全审计要求。
3)合理划分,指的是合理划分日志在工具上的管理维度
日志数据是为业务服务的,日志的管理维度应该根据企业的组织管理模式进行灵活调整。日志工具通常都有其界面化的管理单位,用于辅助工程师们更好地管理日志,将有关联的日志组织在一起。以笔者使用的日志工具为例,日志主题是日志的管理单元,采集项是日志的采集单元,一个日志主题可以包含多个采集项。这两个单元的使用遵循以下原则:
通过为业务服务的视角划分日志的管理维度,将使工程师们在故障排除时事半功倍。例如,支付服务发生故障了,工程师可以直接查看支付服务在故障时间点产生的日志,缩小时间和空间范围,快速定位问题。
05. 高价值日志与存储成本平衡
完成日志的高效管理后,在这个阶段,很多企业会面临一些新的、棘手的问题:
这些问题导向的本质其实是一样的:高价值日志与存储成本之间找不到平衡点,企业需要为1%价值的日志付出99%的存储成本和运维成本。
那么应该怎么平衡成本呢?我们可以一起分析一下。首先来看目前常用的日志存储数据库——elasticsearch,官方对它的介绍是:“elasticsearch 是分布式搜索和分析引擎,为所有类型的数据提供近乎实时的搜索和分析。”
官方给elasticsearch的定位是一个搜索和分析引擎,工程师们利用它可以便捷快速地查看和分析日志。所以只有当日志需要被频繁使用时,才更适合存储在elasticsearch中。如果日志使用非常低频,只是需要被存储起来以满足安全合规审计,那么更适合存储在大数据存储引擎里(例如hdfs),而非存储在elasticsearch,因为大数据存储引擎相比elasticsearch,价格更低、更易维护。
因此,日志工具为了平衡高价值日志和存储成本,衍生出了日志归档能力。
除此之外,日志工具还会提供一些技术手段帮助企业降低存储成本。
06. 嘉为鲸眼日志中心
高效管理日志数据对日志数据价值发挥至关重要,企业通常需要引入相应的工具,构建日志管理能力,确保日志数据发挥价值,保障业务的平稳运行。
嘉为蓝鲸日志中心是面向企业it研发和运维,满足分布式架构下海量日志采集及存储、检索及分析的一款高性能日志产品,基于业界主流的全文检索引擎,通过蓝鲸专属 agent 提供多种场景化日志采集,提供快速检索分析、辅助故障定位功能。
1)方案优势
采集丰富:不同终端不同格式日志统一采集,采集过程中支持解析、脱敏、过滤,采集简单便捷;
推广便捷:内置常用组件的日志解析模板和仪表盘模板,且允许用户自建日志解析模板库,方便接入推广;
智能高效:融合蓝鲸海量数据分析底座和智能化组件,实现高效的日志智能聚类,智能异常检测和告警;
联动流畅:和监控告警体系打通,快捷配置日志关键字、日志指标告警,无需依赖跳转;
信创适配:已适配多种国产化设备和系统,也可完成对信创设备的采集。
2)客户价值
高效排障:联动蓝鲸基础监控告警,实现关键字、日志指标异常检测,告警通知,明细日志下钻,高效故障定位;
数据安全:提供完善的权限管控、数据隔离以及敏感数据能保护能力,保障数据安全,满足数据安全管理诉求;
成本优化:提供数据分层架构,按照冷、热数据分层,合理降低存储成本;
便捷推广:结合蓝鲸agent能力实现日志采集插件一键部署、批量安装、性能稳定。
如果您想要了解更多日志管理相关内容,或有相关建设需求,欢迎联系k8凯发天生赢家!
微信扫码登录
申请演示
请登录后在查看!