加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

【日志】日志框架你选哪个?

发布时间:2022-12-08 15:31:12 所属栏目:应用 来源:未知
导读: 什么是日志
日志就是按照时间顺序追加的、完全有序的记录序列,其实就是一种特殊的文件格式,文件是一个字节数组,而这里日志是一个记录数据,只是相对于文件来说,这里每条记录都是按照时

什么是日志

日志就是按照时间顺序追加的、完全有序的记录序列,其实就是一种特殊的文件格式,文件是一个字节数组,而这里日志是一个记录数据,只是相对于文件来说,这里每条记录都是按照时间的相对顺序排列的,可以说日志是最简单的一种存储模型,读取一般都是从左到右,例如消息队列,一般是线性写入log文件,消费者顺序从offset开始读取。

由于日志本身固有的特性,记录从左向右开始顺序插入,也就意味着左边的记录相较于右边的记录“更老”, 也就是说我们可以不用依赖于系统时钟,这个特性对于分布式系统来说相当重要。

安卓应用闪退日志_应用程序日志_log4j日志缓存程序崩掉

日志在分布式系统中的应用

分布式系统服务本质上就是关于状态的变更,这里可以理解为状态机,两个独立的进程(不依赖于外部环境,例如系统时钟、外部接口等)给定一致的输入将会产生一致的输出并最终保持一致的状态,而日志由于其固有的顺序性并不依赖系统时钟,正好可以用来解决变更有序性的问题。

我们利用这个特性实现解决分布式系统中遇到的很多问题。例如RocketMQ中的备节点,主broker接收客户端的请求,并记录日志,然后实时同步到salve中,slave在本地重放,当master挂掉的时候,slave可以继续处理请求,例如拒绝写请求并继续处理读请求。日志中不仅仅可以记录数据,也可以直接记录操作,例如SQL语句。

log4j日志缓存程序崩掉_应用程序日志_安卓应用闪退日志

日志是解决一致性问题的关键数据结构,日志就像是操作序列,每一条记录代表一条指令,例如应用广泛的Paxos、Raft协议,都是基于日志构建起来的一致性协议。

安卓应用闪退日志_log4j日志缓存程序崩掉_应用程序日志

ELK 分布式日志

实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成。

Elasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的 Web 界面,可以汇总、分析和搜索重要数据日志。

Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。

下面是ELK的工作原理:

应用程序日志_安卓应用闪退日志_log4j日志缓存程序崩掉

(1)Kafka:接收用户日志的消息队列。

(2)Logstash:做日志解析,统一成JSON输出给Elasticsearch。

(3)Elasticsearch:实时日志分析服务的核心技术应用程序日志,一个schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能。

(4)Kibana:基于Elasticsearch的数据可视化组件,超强的数据可视化能力是众多公司选择ELK stack的重要原因。

LOKI分布式日志

Grafana Loki是一个水平可扩展,高可用性,多租户的日志聚合系统,包含了日志收集,存储,可视化以及报警等功能。

与其他日志系统不同,Loki的构想是仅对日志建立标签索引,而使原始日志消息保持未索引状态。这意味着Loki的运营成本更低,并且效率更高。

Loki特别适合存储Kubernetes Pod日志。诸如Pod标签之类的元数据会自动被抓取并建立索引。

应用程序日志_安卓应用闪退日志_log4j日志缓存程序崩掉

与EFK对比

EFK(Elasticsearch,Fluentd,Kibana)技术栈用于收集,可视化和查询来自各种来源的日志。Elasticsearch中的数据作为非结构化JSON对象存储在磁盘上。每个对象的键和每个键的内容都被索引。然后可以使用JSON对象或定义为Lucene的查询语言来查询数据。

相比之下,Loki在单二进制模式下可以将数据存储在磁盘上,但是在水平可伸缩模式下,数据存储在云存储系统(例如S3,GCS或Cassandra)中。日志以纯文本格式存储,并带有一组标签名称和值,其中仅对标签对进行索引。这种折衷使得它比全索引更具备成本优势,并且允许开发人员从其应用程序积极地进行日志记录。使用LogQL查询Loki中的日志。但是,由于这种设计的折衷,基于内容(即日志行中的文本)进行过滤的LogQL查询需要加载搜索窗口中与查询中定义的标签匹配的所有块。

自从Loki2.0发布以来,LogQL v2凭借丰富的查询功能,让Loki也逐渐具备日志分析的能力。对于有些时候,当研发的同学没有提供Metrics时,我们也能利用LogQL构建基于日志的相关指标,

此外,我们知道metrcis和alert只能揭示预定义的问题,未知的问题还得从Log里边查找。日志和 metric 分在两个系统,这增加了排查问题的难度。我们的日志和metrcis系统需要建立联系,而灵感来源于prometheus的loki,恰好解决了这个问题。

Loki架构

Loki大体架构如下:

安卓应用闪退日志_log4j日志缓存程序崩掉_应用程序日志

接下来我们介绍一些核心组件:

Distributor 使用一致性哈希和可配置的复制因子,以确定ingester服务的哪些实例应接收给定的流。流是与租户和唯一标签集关联的一组日志。使用租户ID和标签集对流进行散列,然后使用散列查找将流发送到的实例。Ingester包含一个生命周期器,该生命周期器管理哈希环中ingester的生命周期。每个ingester状态为以下状态中的一种:PENDING,JOINING,ACTIVE,LEAVING或UNHEALTHY。可视化

Grafana已经通过Explore组件支持对loki直接查询。

安卓应用闪退日志_log4j日志缓存程序崩掉_应用程序日志

通过标签组合来实现查询。如果对全文索引不是强需求,那么loki是k8s 日志系统的一个比较好的选择。

GRAYLOG分布式日志

GrayLog是一个轻量型的分布式日志管理平台,一个开源的日志聚合、分析、审计、展示和预警工具。在功能上来说,和 ELK类似,但又比 ELK要简单轻量许多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多公司的青睐。

GrayLog包含 Elasticsearch、MongoDb 和 Graylog三个模块。其中,Elasticsearch用来持久化存储和检索日志文件数据,MongoDb 用来存储关于 Graylog的相关配置,而 Graylog用来提供 Web 界面和对外接口。

log4j日志缓存程序崩掉_安卓应用闪退日志_应用程序日志

应用程序日志_安卓应用闪退日志_log4j日志缓存程序崩掉

GrayLog功能分析

整体架构:

log4j日志缓存程序崩掉_应用程序日志_安卓应用闪退日志

简单来讲,Input 表示日志数据的来源,对不同来源的日志可以通过 Extractors 来进行日志的字段转换。然后,通过不同的标签类型分组成不用的 Stream,并将这些日志数据存储到指定的 Elastic Index 库中进行持久化保存。

log4j日志缓存程序崩掉_应用程序日志_安卓应用闪退日志

启动成功后访问上方设置的ip:port进入graylog的后台地址,默认账号密码是admin/admin。

log4j日志缓存程序崩掉_应用程序日志_安卓应用闪退日志

GRAYLOG与ELK对比

log4j日志缓存程序崩掉_应用程序日志_安卓应用闪退日志

Graylog 是最接近 Splunk 架构的,graylog-server组件位于中间,解决了 Elasticsearch(全文搜索引擎,而不是日志管理系统)在日志管理方面的缺点。它还在其之上构建了一个抽象层,以使数据访问尽可能简单,而无需选择索引和编写繁琐的时间范围选择过滤器等。只需提交搜索查询,Graylog 将为您处理其余的事情。

就像 WordPress 使 MySQL 成为一个很好的博客解决方案一样,Graylog 使 Elasticsearch 成为一个很好的日志记录解决方案。您永远不应该直接使用系统或前端查询 Elasticsearch 来进行日志管理,因此我们将其放在graylog-server前面。

ELKLOKI GRAYLOG对比

应用程序日志_log4j日志缓存程序崩掉_安卓应用闪退日志

几者之间最重要的区别在于,从一开始,Graylog就定位为强大的日志解决方案,而ELK则是大数据解决方案。Graylog可以通过网络协议直接从应用程序接收结构化日志和标准syslog。相反,ELK是使用Logstash分析已收集的纯文本日志的解决方案,然后解析并将它们传递给ElasticSearch。

在ELK中,Kibana扮演仪表盘的角色并显示从Logstash收到的数据。Graylog在这点上更方便,因为它提供了单一应用程序解决方案(不包括ElasticSearch作为灵活的数据存储),具有几乎相同的功能。因此,部署所需的时间更短。此外,与ELK相比,Graylog开箱即用,且具有出色的权限系统,而Kibana则不具备此功能。

Graylog具有直观的GUI,并提供警报、报告和自定义分析功能。最重要的是,它能在多个日志源和跨机房收集数TB的数据。

Graylog Collector Sidecar

Graylog Collector Sidecar 是graylog官方推荐的日志采集工具,基于filebeats进行的二次开发,支持linux和windows。

相比于filebeats,他的好处就是可以通过graylog的9000端口进行统一管理,进行采集日志配置的修改和分发,甚至是远程重启。接收端,可以配置多个graylog input进行负载均衡。

log4j日志缓存程序崩掉_应用程序日志_安卓应用闪退日志

是不是感觉使用起来会更加的方便,而且更加人性化,省去了我们很多的配置和运维的操作。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章