关于集群节点,第一,节点类型包含:候选Master节点、数据节点和Client节点。经由过程设置两个设备项node.master和node.data为true或false,来决定将一个节点分派为什么类型的节点。第二,尽量将候选Master节点和Data节点分别开,平日Data节点负载较重,须要推敲零丁安排。
Kibana
关于内存,Elasticsearch默认设置的内存是1GB,对于任何一个营业安排来说,这个都太小了。经由过程指定ES_HEAP_SIZE情况变量,可以修改其堆内存大年夜小,办事过程在启动时刻会攫取这个变量,并响应的设置堆的大年夜小。建议设置体系内存的一半给Elasticsearch,然则不要跨越32GB。参考官方文档。
关于硬盘空间,Elasticsearch默认将数据存储在/var/lib/elasticsearch路径下,跟着数据的增长,必定会出现硬盘空间不敷用的情况,此时就须要给机械挂载新的硬盘,并将Elasticsearch的路径设备到新硬盘的路径下。经由过程“path.data”设备项来进行设置,比如“path.data: /data1,/var/lib/elasticsearch,/data”。须要留意的是,同一分片下的数据只能写入到一个路径下,是以照样须要合理的筹划和监控硬盘的应用。
起首,采取如许的架构安排,有三点优势:
- 第一,降低对日记地点机械的影响,这些机械上一般都安排着反向代劳或应用办事,本身负载就很重了,所以尽可能的在这些机械上少干事;
- 第二,如不雅有很多台机械须要做日记收集,那么让每台机械都向Elasticsearch持续写入数据,必定会对Elasticsearch造成压力,是以须要对数据进行缓冲,同时,如许的缓冲也可以必定程度的保护数据不损掉;
- 第三,将日记数据的格局化与处理放到Indexer中同一做,可以在一处修改代码、安排,避免须要到多台机械上去修改设备。
关于Index的划分和分片的个数,这个须要根据数据量来做衡量了,Index可以按时光划分,比如每月一?或者天天一个,在Logstash输出时进行设备,shard的数量也须要做好控制。
关于监控,笔者应用过head和marvel两个监控插件,head免费,功能相对有限,marvel如今须要收费了。别的,不要在数据节点开启监控插件。
Kibana供给的是数据萌芽和显示的Web办事,有丰富的图表样板,能知足大年夜部分的数据可视化需求,这也是很多人选择ELK的重要原因之一。UI的操作没有什么特别须要介绍的,经常应用就会闇练,这里重要介绍经常碰到的三个问题。
1. 萌芽语法
在Kibana的Discover页面中,可以输入一个萌芽前提来萌芽所需的数据。萌芽前提的写法应用的是Elasticsearch的Query String语法,而不是Query DSL,参考官方文档query-string-syntax,这里列举个中部分布用的:
- 单字段的全文检索,比如搜刮args字段中包含first的文档,写作 args:first;
- 单字段的精确检索,比如搜刮args字段值为first的文档,写作 args: “first”;
- 多个检索前提的组合,应用 NOT, AND 和 OR 来组合,留意必须是大年夜写,比如 args:(“first” OR “second”) AND NOT agent: “third”;
- 字段是否存在,_exists_:agent表示请求agent字段存在,_missing_:agent表示请求agent字段不存在;
- 通配符:用 ? 表示单字母,* 表示随便率性个字母。
2. 缺点“Discover: Request Timeout after 30000ms”
这个缺点经常产生在要萌芽的数据量比较大年夜的情况下,此时Elasticsearch须要较长时光才能返回,导致Kibana产生Timeout报错。解决这个问题的办法,就是在Kibana的设备文件中修改elasticsearch.requestTimeout一项的值,然后重启Kibana办事即可,留意单位是ms。
3. 困惑“字符串被分化了”
经常在QQ群里看到一些人在问如许一个问题:为什么萌芽结不雅的字段值是精确的,可是做图表时却发明字段值被分化了,不是想要的结不雅?如下图所示的client_agent_info字段。

获得如许一个不精确结不雅的原因是应用了Analyzed字段来做图表分析,默认情况下Elasticsearch会对字符串数据进行分析,建立倒排索引,所以如不雅对这么一个字段进行terms聚合,必定会获得膳绫擎所示的缺点结不雅了。那么竽暌功该怎么做才对?默认情况下,Elasticsearch还会创建一个相对应的没有被Analyzed的字段,即带“.raw”后缀的字段,在如许的字段上做聚合分析即可。
又话苄很多人问如许的问题:为什愦我的Elasticsearch没有主动创建带“.raw”后缀的字段?然而在Logstash中输出数据时,设置index名称前缀为“logstash-”就有了这个字段。这个问题的根源是Elasticsearch的dynamic template在捣乱(可以查看博文Elasticsearch应用总结中的具体介绍),dynamic temlate用于指导Elasticsearch若何为插入的数据主动建立Schema映射关系。
以上就是对ELK日记体系的总结介绍,还有一个重要的功能没有提到,就是若何将日记数据与自身产品营业的数据融合起来。
举个例子,在nginx日记中,平日会包含API请求拜访时携带的用户Token信息,因为Token是有时效性的,我们须要及时将这些Token转换成真实的用户信息存储下来。
如许的需求平日有两种实现方法,一种是本身写一个Logstash filter,然后在Logstash处理数据时调用;另一种是将Logstash Indexer产生的数据再次输出到消息队列中,由我们本身的脚本法度榜样大年夜消息队列中掏出数据,做响应的营业处理后,输出到Elasticsearch中。今朝,团队对ruby技巧栈不是很熟悉,所以我们采取了第二种筹划来实施。
当前,我们的数据增长相对迟缓,碰到的问题也有限,跟着数据量的增长,将来必定会碰到更多的挑衅,也可以进一步摸索ELK。
推荐阅读
想知道什么样的操作体系的是白帽子黑客的最爱吗?本文我们将推荐12个操作体系,包含一些Linux发行版,如Kali Linux,Parrot安然操作体系,BlackArch等。这些以安然为重点的操作体系,可以赞助白帽子黑客进行渗入渗出>>>详细阅读
本文标题:创业公司做数据分析(四)ELK日志系统
地址:http://www.17bianji.com/lsqh/34624.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示