可观测平台-日志系统

二.思考与学习(可观测平台->日志系统)

2.1 日志的基本要素

   日志处理是一个很大范畴,其中包括实时计算、数据仓库、离线计算等众多点。在实时计算场景中,如何能做到日志处理保序、不丢失、不重复,并且在上下游业务系统不可靠(存在故障)、业务流量剧烈波动情况下,如何保持这三点。

  • 保序(Ordering):通过一致性 Hash 来处理,使得不同的机器或者不同的服务能够映射到固定的处理队列中。这样一直是同一个处理队列来处理同一个机器或者同一个服务发来的日志。

  • 不丢失(At-Least Once):记录处理的位置,只有处理完一条日志再处理下一个。

  • 不重复(Exactly Once):处理队列(处理完日志+记录流水)作为一个事务,过程中保证原子性。

2.2 日志聚类

  • 日志聚类是指查看文本日志时,通过计算文本相似度,将相似度高的日志聚合在一起, 并根据聚类后的数据提取每类日志共同的 Pattern,以此能够快速的掌握日志全貌。通过日志聚类不仅可以对日志数据进行概览,还可以方便问题定位、异常检测。比如某个服务在短时间内产生了大量报警,同时产生了多类报错日志,而某一类的关键报错日志可能条数较少,   则很容易被其他报错日志淹没。若能在产生报警的同时,使用日志聚类对报错日志进行汇总、抽象,则能够使开发人员快速发现问题。

2.3 实时处理框架(可观测平台可借鉴)

  • Storm/Jstorm 分布式的、高容错的实时计算系统,2014 年以前应用非常广泛,近几年初步被其他流计算产品替代。

  • Flink 是一个低延迟、高吞吐、统一的大数据计算引擎。在阿里巴巴的生产环境中,Flink 的计算平台可以实现毫秒级的延迟情况下,每秒钟处理上亿次的消息或者事件。同时Flink 提供了一个 Exactly-once 的一致性语义。保证了数据的正确性。这样就使得 Flink 大数据引擎可以提供金融级的数据处理能力。

  • Spark Streaming 类似于 Apache Storm,是一个流计算处理框架。Spark Streaming有高吞吐量和容错能力强这两个特点。

Spark 与 Flink详细对比:

  • 两者都具有流和批处理能力,但是他们的做法是相反的。Spark Streaming 是把流转化成一个个小的批来处理,这种方案的一个问题是我们需要的延迟越低,额外开销   占的比例就会越大,这导致了 Spark Streaming 很难做到秒级甚至亚秒级的延迟。Flink 是把批当作一种有限的流,这种做法的一个特点是在流和批共享大部分代码的同时还能够保留   批处理特有的一系列的优化。因为这个原因,如果要用一套引擎来解决流和批处理,那就必   须以流处理为基础,所以我们决定先选择一个优秀的流处理引擎。从功能上流处理可以分为   无状态的和有状态两种。在流处理的框架里引入状态管理大大提升了系统的表达能力,让用   户能够很方便地实现复杂的处理逻辑,是流处理在功能上的一个飞跃。流处理引擎对一致性   的支持可以分为:best effort,at least once 和 exactly once。Exactly once 的语义才能真正保证完全的一致性,Flink 采用的架构比较优雅地实现了 exactly once 的有状态流处理。另外在保证了一致性的前提下 Flink 在性能上也是相当优秀的。综上,我认为在流处理方面 Flink 在功能、延迟、一致性和性能上综合来看是目前社区最优秀的。

2.4 在日志系统里引入Flink该怎么做?

   使用 Flink 流式数据处理作为 ES 数据导入工具代替 logstash,增加数据清洗的拓展以及能够对数据进行小批量的聚合,减少存储端的压力,checkpoint 能够记录当前消费数据位置,起到了断点续传的作用,大大提高了数据的可靠性,实现了 at-least-once。

2.5 日志处理算法

一.日志向量化

    要对日志进行聚类计算,首先需要将文本转化为计算机可以计算的向量的形式。目前存在着多种常用的方法,且这些方法各有所长,具体使用那种,需要看具体的使用情况。下面简单介绍常用的文本转向量方法。

  • TF-IDF:词频-逆文本频率(TF-IDF)是非常常用的文本挖掘预处理方法,其由两部分组成 TF 和IDF。TF 即词频,也就是文本中各个词的出现频率统计。IDF 即逆文本频率,可以由总文本数除以包含该词语的文本的数目,再将得到的商取对数得到,如果一个词越常见,那么 IDF 的分母就越大,逆文本频率就越接近 0。TF-IDF 由 TF 与 IDF 相乘可得,可见其大小与一个词在文本中的出现频率成正比,而与该词在所有文本中的出现次数成反比。TF-IDF 的优点很明显,简单易懂且计算过程较快,缺点是无法体现出词在上下文结构。

  • Word2Vec:Word2Vec 是在 nlp(自然语言处理)中比较常用的文本转向量方法,Word2Vec 包含两种模型,Skip-gram 和 CBOW。简单来说,Skip-gram 是通过一个词语作为输入来预测周围的上下文,而 CBOW 恰恰相反,是将一个词语的上下文作为输入,来预测这个词语本身。无论是 Skip-gram 还是 CBOW,其本质是通过神经网络和反向传播来不断优化其网络权重,在输入和输出之间存在在隐藏层,它的激活函数通常是线性的。通过不断训练,得到的训练过程中的副产物——模型参数,而将这些参数作为词语的向量化表示,这就是词向量。

  • Doc2Vec:Doc2Vec 是在 Word2Vec 的基础上增加了一些改进,相当于在 word2vec 的基础上增加一个段落向量,在一个句子或者段落文档训练过程中,paragraph id 保持不变,共享同一个段落向量。相当于每次在预测单词的概率时,都利用了整个句子的语义。

二.日志降纬

    经过日志向量化后,还不建议直接作为聚类计算的输入,因为数据可能存在维度过多或者是数据稀疏的问题,因此还需要进一步做降维处理。数据降维有以下好处:

  • 降维可以缓解维度灾难问题。

  • 降维可以在压缩数据的同时让信息损失最小化。

  • 降维可以提高计算速度。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值