专栏名称: 王知无
大数据布道师
目录
相关文章推荐
51好读  ›  专栏  ›  王知无

Elasticsearch在日志分析领域应用和运维实践

王知无  · 掘金  ·  · 2019-10-26 14:11

正文

阅读 32

Elasticsearch在日志分析领域应用和运维实践

本次分享是由来自阿里巴巴的高级工程师 赵汉青 带来的。主要讲述了:

  • 基于ELK + Kafka 的日志分析系统
  • Elasticsearch 优化经验
  • Elasticsearch 运维实践

ElasticSearch介绍

分布式实时分析搜索引擎,优点包括:

  • 查询近实时
  • 内存消耗小,搜索速度快
  • 可扩展性强
  • 高可用

数据结构

  • FST(Finite State Transducer)

file 这种数据结构适用于文本查询。通过对词典中单词前缀和后缀的重复利用,压缩存储空间,压缩比率一般在 3~20 倍之间。O( len ( str )) 的查询时间复杂度。范围搜索,前缀搜索比传统的 hashmap 有明显优势。

  • BDK Tree

适用于数值型,地理信息( geo )等多维度数据类型。当K=1, 二叉搜索树,查询复杂度 log(N) file

K=2, 确定切分维度,切分点选这个维度的中间点 file

扩展性

通过索引分片机制,实现集群的横向扩展 file

高可用

通过shard冗余备份,跨可用区部署,数据快照 (snapshot) 。 应对集群节点故障,数据损坏。

file

ElasticSearch全家桶

Kibana : 数据可视化,与 elasticsearch 交互。Elasticsearch: 存储,索引,搜索。Logstash: 数据收集,过滤,转换。Beats: 比 logstash 更轻巧 , 更多样化 : Filebeat, Metricbeat, Packetbeat, Winlogbeat …

file

基于ELK和Kafka的日志分析系统

file

Logstash优点

提供了大量的用于数据过滤,转换的插件drop: 丢掉不需要的数据grok : 正则匹配抓取数据date : 从数据中解析date属性,用作 Elasticsearch document 的 timestampmetrics: 获取 logstash 的 metricscodec.multiline :多行数据合成一条记录fingerprint : 防止插入重复的数据

Logstash 缺点:收集 log 效率低,耗资源。Filebeat: 弥补的缺点,但自身插件较少。

使用Kafka进行日志传输

Kafka 有数据缓存能力。Kafka 数据可重复消费。Kafka 本身高可用,防止数据丢失。Kafka 的 throughput 更好。Kafka 使用广泛。

实践经验:不同的 service ,创建不同的 topic 。根据 service 的日志量,设定 topic partition 个数。按照 kafka partition 的个数和消费该 topic 的 logstash 的个数,配置 consumer_threads。尽量明确 logstash 和对应消费的 topic ( s) ,配置消费的 topic 少用通配符。

集群规划的基本问题:

  1. 总数据量大小:每天流入多少数据,保存多少天数据。

每日增加的数据量:每日新增的 log 量 * 备份个数 。如果 enable 了 all 字段,则在上面的基础上再翻一倍。 比如每天新增 1T 的 log ,每个 shard 有 1 个备份, enable all ,则 Elasticsearch 集群的实际数据增加量约等于 4T 。如果每天需要存 4T 数据,假如保存 30 天的数据,需要的最低存储是 120T ,一般还会加 20% 的 buffer 。至少 需要准备 144T 的存储空间。 根据日志场景的特点,可做 hot-node, warm - node 划分。hot-node 通常用 SSD 磁盘, warm-node 采用普通机械盘。

  1. 单节点配置:每个节点多少索引,多少 shard ,每个 shard 大小控制在多少。






请到「今天看啥」查看全文