elasticsearch date_Elasticsearch在日志分析领域应用和运维实践
主要讲述了:
- 基于ELK + Kafka 的日志分析系统
- Elasticsearch 优化经验
- Elasticsearch 运维实践
ElasticSearch介绍
分布式实时分析搜索引擎,优点包括:
- 查询近实时
- 内存消耗小,搜索速度快
- 可扩展性强
- 高可用
数据结构
- FST(Finite State Transducer)
这种数据结构适用于文本查询。通过对词典中单词前缀和后缀的重复利用,压缩存储空间,压缩比率一般在 3~20 倍之间。O( len ( str )) 的查询时间复杂度。范围搜索,前缀搜索比传统的 hashmap 有明显优势。
- BDK Tree
适用于数值型,地理信息( geo )等多维度数据类型。当K=1, 二叉搜索树,查询复杂度 log(N)
K=2, 确定切分维度,切分点选这个维度的中间点
扩展性
通过索引分片机制,实现集群的横向扩展
高可用
通过shard冗余备份,跨可用区部署,数据快照 (snapshot) 。应对集群节点故障,数据损坏。
ElasticSearch全家桶
Kibana : 数据可视化,与 elasticsearch 交互。Elasticsearch: 存储,索引,搜索。Logstash: 数据收集,过滤,转换。Beats: 比 logstash 更轻巧 , 更多样化 : Filebeat, Metricbeat, Packetbeat, Winlogbeat …
基于ELK和Kafka的日志分析系统
Logstash优点
提供了大量的用于数据过滤,转换的插件 drop: 丢掉不需要的数据 grok : 正则匹配抓取数据 date : 从数据中解析date属性,用作 Elasticsearch document 的 timestamp metrics: 获取 logstash 的 metrics codec.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 采用普通机械盘。
2. 单节点配置:每个节点多少索引,多少 shard ,每个 shard 大小控制在多少。
根据总数据量和单节点配置,得出集群总体规模。
单节点,根据经验通常 CPU :Memory的配比是1:4。
Memory : Disk的配比为 1 : 24 。
Elasticsearch heap 的 xmx 设置通常不大于 32g 。
Memory 和 shard 的配比在 1 : 20 ~ 1:25 之间。
每个shard的大小不超过50g 。
实践案例分析
产线上出现服务 failover , backup 集群日志量会忽然增大, kafka 里的数据量也突然增多,单位时间内 logstash 消费 kafka注入Elasticsearch的数据量也会增大,如果某些正在插入数据的 primary shard 集中在一个node上,该node会因为需要索引的数据量过大、同时响应多个logstash bulk 请求等因素,导致该 node 的 Elasticsearch 服务过于繁忙 。
若无法响应 master 节点发来的请求(比如 cluster health heartbeat), master 节点会因为等待该节点的响应而被 block ,导致别的节点认为 master 节点丢失,从而触发一系列非常反应,比如重选master 。
若无法及时响应 logstash 请求, logstash connect elasticsearch 便会出现 timeout , logstash 会认得这个 Elasticsearch 为 dead ,同时不再消费 kafka 。Kafka 发现在同一个 consumer group 里面某个 consumer 消失了,便会触发整个 consumer group 做 rebalance ,从而影响别的 logstash 的消费,影响整个集群的吞吐量。
典型 羊群效应 ,需要消除头羊带 来的影响。可通过 elasticsearch API: GET/_cat/thread_pool / bulk?v&h =name , host,active,queue,rejected,completed 定位哪个节点比较忙:queue 比较大, rejected 不断增加。然后通过 GET /_cat/shards 找到该 node 上活跃的 shard 。最后再通过 POST /_cluster/reroute API 把 shard 移到 load 比较低的 node 上,缓解该 node 的压力。
ElasticSearch集群运维实践
我们主要关注:
- 集群健康状态 2 . 集群索引和搜索性能
- 节点 cpu , memory, disk 使用情况
集群green ,正常。
集群yellow,主要是有 replica shard 未分配。
集群 red ,是因为有 primary shard 未分配。
主要原因:集群 node disk 使用率超过 watermark ( 默认 85% )。可通过 api GET/_cat/ allocation 查看 node 的磁盘使用率。可通过 api GET/_cluster/ settings 查看 cluster.routing.allocation.enable 是否被禁止。可通过 api GET /_cluster/allocation/explain? pretty 查看 shard 未分配到 node 的具体原因。
监控工具推荐使用:cerebro( https://github.com/lmenezes/cerebro )
ElasticSearch优化经验
索引优化
- 提前创建索引
- 避免索引稀疏,index 中 document 结构最好保持一致,如果 document 结构不一致,建议分 index ,用一个有少量 shard 的 index 存放 field 格式不同的 document 。3 . 在加载大量数据时可设置 refresh_interval =-1 , index.number_of_replicas =0 ,索引完成后再设回 来。4 . load 和 IO 压力不大的情况,用 bulk 比单条的 PUT/DELETE 操作索引效率更高 。5 . 调整 index buffer( indices.memory.index_buffer_size ) 。
- 不需要 score 的 field ,禁用 norms;不需要 sort 或 aggregate 的 field ,禁用 doc_value 。
查询优化
- 使用 routing 提升某一维度数据的查询速度。
- 避免返回太大量的搜索结果集,用 limit 限制。
- 如果 heap 压力不大,可适当增加 node query cache( indices.queries.cache.size ) 。
- 增加 shard 备份可提高查询并发能力,但要注意 node 上的 shard 总量。
- 定期合并 segment 。
阿里云ElasticSearch服务
阿里云提供的ElasticSearch服务包含了监控、报警、日志可视化、一键扩容等特点
想要获取更多相关资料 后台私信我【资料】即可获得资料免费领取方式!
elasticsearch date_Elasticsearch在日志分析领域应用和运维实践相关推荐
- WOT演讲回顾——海量日志分析与智能运维
以下内容根据日志易创始人 & CEO 陈军在 WOT 全球人工智能技术峰会上的演讲整理而成,全文大约7000字,阅读时长10分钟. 大家好,今天我演讲的主题是<海量日志分析与智能运维&g ...
- 大数据时代的全能日志分析专家--Splunk安装与实践
大数据时代的全能日志分析专家 --Splunk安装与实践 0.背 景 随着大家对网络安全意识的提高,企业网管理人员,必须对IT基础设置进行监控及安全事件的管理,管理数据的数量和种类非常巨大,那么就需 ...
- Kubernetes Ingress 日志分析与监控的最佳实践
2019独角兽企业重金招聘Python工程师标准>>> 前言 目前Kubernetes(K8s)已经真正地占领了容器编排市场,是默认的云无关计算抽象,越来越多的企业开始将服务构建在K ...
- Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
文章目录 一.前言 二.背景信息 三.操作流程 四.准备工作 1.Docker 环境 2.Docker Compose 环境 3.版本准备 4.环境初始化 5.服务安装 6.服务设置 五.配置 Fil ...
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(二) Logstash简介及常见配置语法
Logstash通常被分为shipper和indexer两种角色,其中shipper负责收集转发日志至redis,而indexer负责将redis传送过来的日志输出到elasticSearch,如下图 ...
- oracle ebs r12 级dba专家和运维实践
我们淘宝店铺:https://shop108514483.taobao.com/ 资料共享地址:https://pan.baidu.com/s/1PMWeRpUU0e12cYPt5UeUxg 需要进入 ...
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志. ...
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自:http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群 笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装 ...
最新文章
- Python编程基础:第五十九节 守护线程Daemon Threading
- Kafka是什么,JMS是什么,常见的类JMS消息服务器,为什么需要消息队列(来自学习笔记)
- Swift开发图解入门
- 机器学习算法总结--提升方法
- 从小小后视镜看物联网的生态(下)
- 【渝粤教育】国家开放大学2018年秋季 0700-22T中级会计实务(一) 参考试题
- 用Maven新建Web项目时报错
- ffmpeg js转换音频_浏览器音频兼容和ffmpeg的音频转码使用
- python 安装PyQt4
- 在Excel表格中隐藏行或列
- Mac苹果电脑总是自动重启?怎么解决自动重启问题
- 新浪企业邮箱服务器怎么设置,新浪企业邮箱如何在Iphone设置邮箱账号
- 微信消息能在服务器上彻底清除,快速彻底删除微信消息的方法如此简单 很多人都用错了方法!...
- 微信公众号文章如何排版?
- 墨画子卿第一章第3节:挑衅
- 尼康相机测试软件mac版,Nikon Camera Control
- 3ds Max: Advanced Materials 3DS Max 教程之高级材质 Lynda课程中文字幕
- Python编程从入门到实践 第十章:文件和异常 练习答案记录
- 【Pytorch】区分detach()和torch.no_grad()
- 用C语言在NDS上编写程序
热门文章
- 关于NPN和PNP传感器的应用区别(转载)
- 面试题19:二叉树镜像
- vsftpd安装问题汇总(持续更新。。)
- 高德地图 android 调用 amap.clear()后定位蓝点消失 如何重新显示定位
- 74. Search a 2D Matrix
- [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第51篇]什么是基于ID的加密的安全模型,描述一个IBE方案
- [如何做研究][如何写论文]
- python将excel日期比大小_sql与excel、python比较(二)——日期和时间函数
- hadoop元数据mysql中表字段_hive mysql元数据表说明
- cesium添加填充_Cesium中级教程1 - 空间数据可视化(一)