欢迎光临
免费的PDF电子书下载网站

大数据搜索与挖掘及可视化管理方案——Elastic Stack 6:Elasticsearch、Logstash、Kibana、X-Pack、Beats(第4版) PDF下载

编辑推荐

原著者有较丰富的基于Elastic Stack的软件开发与相关项目管理经验;本书内容广泛,细节丰富,强调实践,深入浅出,力求反映基于Elastic Stack 架构的*成果。 ;

内容简介

本书系统地介绍数据搜索与实时分析引擎套件Elastic Stack的相关技术,并通过实战讲解的方式介绍Elasticsearch、Logstash、Kibana、XPack、Beats等的应用。全书共11章,内容涵盖Elasticsearch架构简介、文档索引及管理、信息检索与聚合、Elasticsearch API及其应用、Elasticsearch配置与集群管理、基于Logstash的日志处理、基于Kibana的数据分析及可视化、基于XPack的系统运行监控、基于Beats的数据解析传输,*后给出两个信息检索与分析实例。 本书强调实践和面向初学者,力求反映基于Elastic Stack 6架构的*成果。本书可供高等学校计算机科学与技术、软件工程、物联网、信息管理与信息系统等专业的学生在学习和科研中参考。对于从事大数据搜索与挖掘、日志分析、信息可视化、集群管理与性能监控的工程技术人员和希望了解网络信息检索技术的人员也具有较高的参考价值和工程应用价值。

作者简介

暂无

大数据搜索与挖掘及可视化管理方案——Elastic Stack 6:Elasticsearch、Logstash、Kibana、X-Pack、Beats(第4版) PDF下载

目录

目录

第1章概述1
1.1Elasticsearch概述3
1.1.1Elasticsearch的安装与简单配置4
1.1.2Elasticsearch API的使用方式7
1.2Logstash7
1.3Kibana8
1.4Beats8
1.5XPack9
1.6其他9
1.7扩展知识与阅读9
1.8本章小结10
第2章文档索引及管理11
2.1文档索引概述11
2.2head: Elasticsearch用于数据管理的工具之一13
2.3建立索引15
2.4通过映像配置索引20
2.4.1在索引中使用映像20
2.4.2管理/配置映像21
2.4.3获取映像信息22
2.4.4删除映像23
2.5管理索引文件24
2.5.1打开、关闭、检测、删除索引文件24
2.5.2清空索引缓存25
2.5.3刷新索引文件25
2.5.4优化索引文件26[1][2][1][3]2.5.5flush操作26
2.6设置中文分析器26
2.7对文档的其他操作29
2.7.1获取指定文档的信息29
2.7.2删除指定文档的信息31
2.7.3更新指定文档的信息31
2.7.4基于POST方式批量获取文档信息34
2.8实例36
2.9扩展知识与阅读40
2.10本章小结41
第3章信息检索与聚合42
3.1实验数据集描述43
3.2基本检索44
3.2.1检索方式44
3.2.2query查询45
3.2.3from/size查询46
3.2.4检索结果排序46
3.2.5高亮搜索词49
3.2.6查询模板50
3.3检索进阶51
3.3.1全文检索51
3.3.2词项检索55
3.3.3复合查询58
3.3.4跨度查询61
3.3.5特殊查询64
3.3.6脚本65
3.4聚合68
3.4.1metric聚合69
3.4.2bucket聚合74
3.4.3pipeline聚合83
3.4.4matrix聚合87
3.5实例88
3.6扩展知识与阅读94
3.7本章小结95
第4章Elasticsearch API及其应用96
4.1Elasticsearch节点实例化96
4.1.1在Java中初始化Elasticsearch96
4.1.2在Python中初始化Elasticsearch100
4.2索引数据101
4.2.1准备JSON数据101
4.2.2为JSON数据生成索引103
4.3对索引文件的操作106
4.3.1获取索引中的文档数据106
4.3.2删除索引文件中的文档数据108
4.3.3更新索引文件中的文档数据109
4.3.4对索引文件中的文档进行批量操作110
4.4信息检索112
4.4.1概述113
4.4.2multiSearch114
4.4.3查询模板115
4.4.4Query DSL概述117
4.4.5matchAllQuery117
4.4.6全文检索118
4.4.7词项检索121
4.4.8复合查询125
4.4.9跨度查询127
4.4.10特殊查询130
4.5聚合132
4.5.1Metric聚合132
4.5.2bucket聚合136
4.6对检索结果的进一步处理140
4.6.1控制每页的显示数量及排序依据140
4.6.2基于scroll分页显示检索结果140
4.7Java High Level RESTful Client和Elasticsearch DSL142
4.7.1Java High Level RESTful Client142
4.7.2Elasticsearch DSL146
4.8实例148
4.8.1在Elasticsearch中建立索引148
4.8.2连接Elasticsearch149
4.8.3信息采集与索引构建150
4.8.4搜索模块152
4.8.5推荐模块153
4.8.6聚合模块154
4.9扩展知识与阅读155
4.10本章小结156
第5章Elasticsearch配置与集群管理157
5.1Elasticsearch的部分基本配置157
5.2索引文件和查询优化160
5.3监控集群状态161
5.4控制索引文件分片与副本分配163
5.5集群管理165
5.6扩展知识与阅读166
5.7本章小结167
第6章基于Logstash的日志处理168
6.1概述169
6.2input: 处理输入的日志数据171
6.2.1处理基于file方式输入的日志信息172
6.2.2处理基于generator产生的日志信息173
6.2.3基于Filebeat处理log4j的日志信息174
6.2.4处理基于redis的日志信息176
6.2.5处理基于TCP传输的日志数据179
6.2.6处理基于UDP传输的日志数据183
6.3codec: 格式化日志数据185
6.3.1json格式185
6.3.2rubydebug格式187
6.3.3plain格式187
6.4基于filter的日志处理与转换188
6.4.1json filter189
6.4.2grok filter190
6.4.3kv filter192
6.5output: 输出日志数据195
6.5.1将处理后的日志输出到Elasticsearch中195
6.5.2将处理后的日志输出到文件中197
6.5.3将处理后的日志输出到csv文件中198
6.5.4将处理后的日志输出到redis中199
6.5.5将处理后的日志通过UDP输出201
6.5.6将处理后的日志通过TCP输出202
6.5.7将日志信息发送至Email206
6.6扩展知识与阅读208
6.7本章小结209
第7章基于Kibana的数据分析及可视化210
7.1Kibana概述211
7.2安装Kibana211
7.3使用Management组件管理配置212
7.3.1创建索引模式213
7.3.2高级设置214
7.3.3管理已保存的检索、可视化和仪表板218
7.4使用Discover组件执行查询219
7.4.1设置时间选择器219
7.4.2在索引模式中执行搜索220
7.4.3字段过滤221
7.4.4查看文档数据222
7.5使用Visualize组件创建统计图表224
7.6使用Dashboard组件创建动态仪表板226
7.6.1创建新的动态仪表板227
7.6.2打开已保存的动态仪表板228
7.6.3分享动态仪表板228
7.7使用Timelion组件创建时间线229
7.8使用Dev Tools执行命令行231
7.8.1在Console中执行命令231
7.8.2Console快捷键233
7.8.3Console设置234
7.9网站性能监控可视化应用实例234
7.9.1概述234
7.9.2使用Visualize实现可视化234
7.9.3使用Dashboard整合可视化结果238
7.10扩展知识与阅读239
7.11本章小结240
第8章基于XPack的系统运行监控241
8.1XPack概述241
8.2安装XPack242
8.3Security插件与安全性243
8.3.1身份验证机制与用户管理243
8.3.2匿名访问246
8.3.3基于域的用户认证247
8.3.4基于角色的访问权限配置248
8.3.5IP地址过滤251
8.3.6带有身份认证的TransportClient253
8.3.7带有身份认证的RESTful命令256
8.4使用Monitoring监控系统运行状态256
8.4.1系统运行状态监控256
8.4.2配置Monitoring260
8.4.3搭建独立的Monitoring集群262
8.5Alerting插件与异常事件警报263
8.5.1通过RESTful方式设置监视器264
8.5.2通过Java程序设置监视器267
8.5.3使用Watcher UI管理监视器269
8.6Reporting与报告生成270
8.6.1在程序中生成报告270
8.6.2通过监视器自动生成报告271
8.7使用Graph探索数据关联273
8.8使用Machine Learning发现数据趋势异常275
8.9使用Search Profiler分析搜索查询277
8.10使用Grok Debugger调试grok表达式279
8.11扩展知识与阅读280
8.12本章小结280
第9章基于Beats的数据解析传输281
9.1基于packetbeat的网络数据包传输282
9.1.1概述282
9.1.2安装282
9.1.3配置283
9.1.4加载索引模板285
9.1.5启动和关闭286
9.1.6使用Kibana进行可视化展示287
9.2基于Filebeat的日志传输288
9.2.1概述288
9.2.2安装和配置288
9.2.3启动和关闭291
9.2.4使用Kibana进行展示291
9.3基于metricbeat的系统指标数据传输292
9.3.1概述292
9.3.2安装和配置293
9.3.3启动和关闭294
9.3.4使用Kibana进行展示295
9.4基于winlogbeat的Windows事件日志数据传输296
9.4.1概述296
9.4.2安装297
9.4.3配置298
9.4.4启动和关闭301
9.4.5使用Kibana进行展示302
9.5基于auditbeat的用户和进程活动审计304
9.5.1概述304
9.5.2安装和配置304
9.5.3启动和关闭305
9.5.4使用Kibana进行展示306
9.6基于heartbeat的服务状态检测308
9.6.1概述308
9.6.2安装和配置308
9.6.3启动和关闭311
9.6.4使用Kibana进行展示311
9.7扩展知识与阅读313
9.8本章小结313
第10章信息检索与分析实例(一)314
10.1基于Elasticsearch的行业信息存储314
10.1.1环境准备314
10.1.2数据准备315
10.2基于Spring Boot的信息检索及Web端设计317
10.2.1创建和配置工程317
10.2.2Web页面设计319
10.3基于Logstash的日志处理327
10.3.1配置Spring Boot输出日志327
10.3.2在Logstash中进行相关配置329
10.4基于Kibana的日志分析结果可视化330
10.4.1访问量走势分析331
10.4.2查询参数比率分析333
10.4.3故障案例可视化334
10.4.4将图表集成到仪表板中335
10.5扩展知识与阅读336
10.6本章小结337
第11章信息检索与分析实例(二)338
11.1面向动态网站的信息采集339
11.1.1软件准备339
11.1.2浏览器驱动程序339
11.1.3创建索引和映像340
11.1.4导入依赖341
11.1.5数据采集342
11.2基于Spring MVC的信息检索及Web程序设计348
11.2.1创建和配置Spring MVC项目348
11.2.2前端页面设计351
11.2.3后端控制器类356
11.3基于Logstash的日志处理360
11.4基于Beats的数据传输361
11.5基于Kibana的数据可视化362
11.5.1可视化索引文件中的信息363
11.5.2对Logstash、Beats的可视化展示364
11.6基于XPack的系统监控366
11.7扩展知识与阅读369
11.8本章小结369
参考文献370

前沿

(第4版)前言

伴随着海量数据管理技术在国民经济以及互联网 、物联网、移动计算等各个领域的广泛应用,分布式大数据搜索、日志分析与挖掘、数据可视化、集群管理与性能监控等问题正日益受到IT人员的普遍关注。开源的、基于Lucene的全文搜索引擎Elasticsearch以其独到的分布式数据处理能力发挥了重要作用。根据国际权威数据库产品评测机构DBEngines统计,从2016年1月起,Elasticsearch已超过Solr等成为排名第一的搜索引擎类应用,并且增长势头目前仍非常强劲。在Elasticsearch基础上,还衍生出Logstash、Kibana、Beats、XPack、Elastic Cloud、Alerting、Graph、Reporting、ESHadoop等诸多相关组件,它们构成了Elastic Stack工具集的核心,为编程人员提供了分布式、可扩展的信息存储和全文检索机制、基于Logstash的日志处理机制、基于Kibana的挖掘结果可视化机制等。不仅如此,目前还出现了Security(安全和管理插件,如权限控制、加密通信、审计等)、Monitoring(性能监控平台等)、Beats(提供了在应用服务器间传输事务信息的Packetbeat、从服务器端传送日志的Filebeat、分时段采集服务器上操作系统和服务的各项指标的Metricbeat、负责传输Windows事件日志的Winlogbeat)等中间件。在实时大数据处理的应用中,上述软件通常配合使用。Elastic Stack可帮助企业搜索庞大的非结构化信息数据库。目前,Elasticsearch拥有几千个重要客户,覆盖80多个国家,从一线互联网公司到传统行业,都能看到Elasticsearch的身影,全球很多著名公司(如Facebook、eBay、IBM、Microsoft、Uber、Cisco、GitHub、携程网等)都在使用它。Elastic公司的开源技术越来越受到众多开发者的青睐,已成为大数据领域分析工具的最佳选择。现在用户可以在谷歌GCP云平台上运行Elastic Cloud产品,执行搜索、分析以及可视化任务。从实战的角度掌握Elasticsearch、Logstash、Kibana、XPack、Beats等的基本使用方法和入门技巧很有必要。
从2015年开始,我们开始介绍和普及Elastic Stack的相关技术,并陆续出版了《实战Elasticsearch、Logstash、Kibana——分布式大数据搜索与日志挖掘及可视化解决方案》(第1版)、《大数据搜索与日志挖掘及可视化方案——ELK Stack: Elasticsearch、Logstash、Kibana》(第2版)、《大数据搜索与日志挖掘及可视化管理方案——Elastic Stack 5: Elasticsearch、Logstash、Kibana》(第3版)、译著《精通Elastic Stack》等多部技术书籍。短短几年,Elastic Stack发展很快,我们的上述图书也已重印了多次。我们参考了部分读者对本书第1版、第2版、第3版提出的意见,对其中的部分内容进行了必要的补充和修改、完善,对新推出的Elastic Stack 6进行了介绍。
同本书的第1版、第2版、第3版一样,第4版仍强调实践和面向初学者,并通过实战讲解的方式让读者更好地了解Elasticsearch、Logstash、Kibana、XPack、Beats等的应用。全书涵盖Elasticsearch的架构简介、文档索引及管理、信息检索与聚合、Elasticsearch API及其应用(适当兼顾J2EE和Python用户)、Elasticsearch配置与集群管理、基于Logstash的网络日志处理、基于Kibana的分析结果可视化、基于XPack插件的系统运行监控应用、基于Beats的数据解析传输、应用实例等。本书介绍的基于Elastic Stack 6架构的分布式大数据搜索、日志挖掘、可视化、集群管理与性能监控是入门方案,但对有一定基础的中、高级使用者也有一定的参考和工程应用价值。
本书第4版由高凯拟定写作大纲,高凯、岳重阳、江跃华合作完成,并由高凯审校了全书。在本书的写作过程中,编者得到了多方面的支持与帮助。高成亮、毛雨欣、聂颖杰、韩佳、谢宇翔、杨聪聪、侯雪飞、李明奇、杨铠成、朱玉、杨凯、李娇娥、徐倩、吴林芳等均给予了协助。编者在写作过程中参考了Elastic官方网站https://www.elastic.co/以及互联网上众多热心网友提供的素材。本书的顺利完成也得益于参考文献中包含的相关工作及研究成果,在此谨向这些文献的作者、热心网友以及为本书提供帮助的人士致以诚挚的感谢。在本书写作过程中,编者也得到了清华大学出版社焦虹编审的大力支持和帮助,在此一并表示衷心感谢。
由于我们的学识水平有限,书中不妥之处在所难免,恳请广大读者批评指正。

编者
2019年6月[1][2]

免费在线读

Chapter 5第5章第5章Elasticsearch配置与集群管理Elasticsearch comes with reasonable defaults for most settings. Before you set out to tweak and tune the configuration, make sure you understand what are you trying to accomplish and the consequences. The primary way of configuring a node is via the elasticsearch.yml file. This template lists the most important settings you may want to configure for a production cluster.
elasticsearch.yml
基于Elasticsearch可以完成很多和信息存储、检索等相关的任务。本章对Elasticsearch的配置、集群管理等进行说明,并对提高索引和查询效率的策略进行了简述。通过对本章的学习,能达到更好地配置和使用Elasticsearch的目的。
5.1Elasticsearch的部分基本配置
Elasticsearch的大多数配置信息在Elasticsearch安装主目录下的config/elasticsearch.yml文件中,所有配置都可使用环境变量。其他的配置信息在同一目录下的日志配置文件log4j2.properties中,按普通log4j2配置项来设置即可。
elasticsearch.yml负责设置服务器的默认状态,Elasticsearch的大多数配置在该配置文件中完成。本节给出针对elasticsearch.yml的部分配置设置信息,具体如下:
(1) 集群名称cluster.name,例如“cluster.name: elasticsearch”。设置好以后,Elasticsearch会自动发现在同一网段下的节点。如果在同一网段下有多个集群,可用这个属性来区分不同的集群。
(2) 节点名称node.name。Elasticsearch启动时会自动创建节点名称,也可以在node.name中配置,例如“node.name: "Master"”。指定节点名称有助于利用API访问具体的节点。虽然集群启动时会给每个节点初始化一个默认的名称,但仍然建议在这里手动设置节点名称。
(3) 节点是否为主节点(master)。每个节点都可被配置成主节点,默认值为true,如“node.master: true”。该设置的目的是指定该节点是否有资格被选举为主节点,默认集群中的第一个节点为主节点,如果这个节点宕机,就会重新选举主节点。
〖1〗〖2〗〖1〗〖3〗(4) 设置节点是否存储数据。默认值为true,即设置node.data的值为“node.data: true”。如果希望节点只是一个主节点,但是不存储数据,则应当设置为代码段5.1所示的属性。代码段5.1: 设置节点是主节点但不存储数据
node.master: true
node.data: false
如果要使节点只存储数据,但不是主节点,则应当设置为代码段5.2所示的属性。代码段5.2: 设置节点不作为主节点,但存储数据
node.master: false
node.data: true
如果要使节点既不是主节点,也不存储数据,则应该设置为代码段5.3所示的属性。代码段5.3: 设置节点既不是主节点也不存储数据
node.master: false
node.data: false
对部分相关配置的说明如下:
(1) node.attr.rack用于设置机架编号,如Rack1。
(2) 可在node.max_local_storage_nodes中设置一台机器能运行的最大节点数目。
(3) path.conf: /path/to/conf用于设置配置文件的存储路径,默认是Elasticsearch根目录下的config文件夹。
(4) path.data: /path/to/data用于设置分配给当前节点的索引数据所在位置,默认是Elasticsearch根目录下的data文件夹,可以选择包含一个以上的位置,用逗号隔开,这样使得数据在文件级别可跨越位置,在创建时就有更多的自由路径可供选择。
(5) path.logs: /path/to/logs用于设置日志文件所在位置,默认是Elasticsearch根目录下的logs文件夹。
(6) 设置绑定的IP地址,可以是IPv4地址或IPv6地址。默认情况下Elasticsearch使用0.0.0.0地址,并为HTTP传输开启9200~9300端口,为节点到节点的通信开启9300~9400端口。也可自行设置IP地址,可在配置文件的network.bind_host和network.publish_host中进行设置。
(7) transport.tcp.port用于设置节点与其他节点交互的TCP端口,默认为9300。
(8) transport.tcp.compress用于设置是否压缩TCP传输时的数据,默认为false。
(9) http.port用于设置为HTTP传输监听定制的端口,默认为9200。
(10) http.enabled用于设置是否使用HTTP对外提供服务,默认为true。
(11) http.max_content_length用于设置内容的最大长度,默认为100MB。
(12) discovery.zen.minimum_master_nodes用于设置集群中的节点可以知道几个有主节点资格的节点,默认为1。对于较大的集群来说,可以将该值设置为“具有主节点资格的节点数/2 1”。
(13) discovery.zen.ping_timeout用于设置集群中自动发现其他节点时ping连接超时时间,默认为3s。对于比较差的网络环境,可以提高该值来防止自动发现时出错。
(14) gateway.recover_after_nodes用于设置集群中有几个节点启动时进行数据恢复,默认为1。
(15) gateway.recover_after_time用于设置初始化数据恢复进程的超时时间,默认为5min。
(16) gateway.expected_nodes用于设置这个集群中节点的数量,默认为2。一旦有设定数量的节点启动,就会立即进行数据恢复。
(17) cluster.routing.allocation.node_initial_primaries_recoveries用于初始化数据恢复时并发恢复线程的个数,默认为4。
(18) cluster.routing.allocation.node_concurrent_recoveries用于设置添加删除节点或负载均衡时并发恢复线程的个数,默认为4。
(19) indices.recovery.max_bytes_per_sec用于设置数据恢复时限制的带宽,如100MB/s,默认为0(即无限制)。
(20) discovery.zen.ping.unicast.hosts: ["host1","host2:port","host3[portXportY]"]用于设置集群中主节点的初始列表,可通过这些节点自动发现新加入集群的节点。在Elasticsearch 5.0及后续版本中,不允许在节点配置文件中写入形如number_of_shards、number_of_replicas这样的索引级配置。应使用RESTful index API来更新所有节点的配置,关于这部分的执行方法参见2.3节的相关内容。
5.2索引文件和查询优化
Elasticsearch的索引文件是基于倒排索引机制完成的。从索引优化的角度出发,在建立索引文件时,要考虑到影响索引速度的以下因素:
 分片数量。
 节点数量。
 索引操作(如合并、优化、索引写操作等)。
 磁盘I/O次数及速度。
从提高效率的角度出发,可以从如下几点来考虑提高索引工作效率:
 客户端减少频繁的连接并提高效率(如在可能的前提下使用TCP长连接、采用多线程机制、建立连接池等)。
 尽量减小索引文件大小(索引前预处理、过滤等)。
 合理规划映像。
 合理使用分词。
从查询优化的角度来说,可以合理规划索引和分片来提高查询效率。
除了上述策略外,路由选择也是经常要用到的。由于Elasticsearch的信息往往分布在不同的分片中,因此在搜索时,大多数情况下需要遍历所有分片以便能检索到相关信息。其实,在某些情况下,如果能指定特定的分片(即显式地指定路由),有时是能够提高检索效率的。可以在存储数据时为每个文档自定义一个routing值来代替其id号,在查询、删除、更新数据时只需给出相同的routing值即可。在Elasticsearch中,对同样的id号会得到同样的哈希值,因此特定用户的所有文档会被放置在一个分片上。在检索时,利用哈希值就只需搜索一个分片而非遍历所有分片。代码段5.4给出了在索引文件information中加入新数据时指定routing的方法。代码段5.4: routing参数的使用
curl -H Content-Type: application/json -XPUT localhost:9200/information/
_doc/6?routing=user1&;refresh=true -d {
"title": "A new book"
}
使用routing参数查询该条数据的代码如下:curl -H Content-Type: application/json -XGET localhost:9200/information/
_doc/6?routing=user15.3监控集群状态
可以通过HTTP接口监控集群状态,例如http://localhost:9200/_cluster/health?pretty,可以观察到当前集群的状态。图5.1和图5.2是两个不同的Elasticsearch集群的状态。对一个Elasticsearch集群来说,其status的取值可以有如下几种:
 Green: 当Elasticsearch能够根据配置分配所有分片和副本时的状态值,如图5.1所示。
 Yellow: 主分片已经分配完毕,已经做好可以处理请求的准备,但是某些副本尚未完成分配。例如,当只有一个节点,却同时有多个副本时,因为尚无其他节点放置这些副本,因此其状态值可能就是yellow,如图5.2所示。
图5.1状态为green的集群
图5.2状态为yellow的集群

 Red: 集群目前尚未准备就绪,可能至少一个主分片没有准备好。
在Elasticsearch集群IP地址后加上/_cluster/health?pretty参数,再加上&;level=indices参数(例如,http://localhost:9200/_cluster/health?pretty&;level=indices,如图5.3所示)或者&;level=shards参数(例如,http://localhost:9200/_cluster/health?pretty&;level=shards,如图5.4所示),可以返回更详细的集群状态信息。图5.4不仅有索引文件的更详细的状态信息,还有其分片的状态信息。
类似地,也可以监控节点状态,以了解集群在工作过程中发生了什么。和监控集群状态类似,只需在URL后给出相应节点的信息,例如如果监控master节点(master是已在elasticsearch.yml中命名的节点名称),只需在URL的/_nodes参数后添加节点名称及要查询的统计信息即可,如http://localhost:9200/_nodes/master/stats/os,jvm?pretty,如图5.5所示。可以直接指明的部分可用标记信息如下:
 indices: 获得分片大小、文件数量、索引的创建和删除时间、搜索执行时间、字段缓存大小、数据合并与清缓存等信息。
图5.3增加参数level=indices返回的
集群状态信息
图5.4增加参数level=shards返回的
集群状态信息

 fs: 获得文件系统信息、数据文件路径、可用磁盘空间信息、读/写状态等。
 http: 获得HTTP连接信息。
 jvm: 获得Java虚拟机的内存、垃圾回收、缓冲池、加载/未加载类的数量等信息。
 os: 获得服务器的负载、内存使用情况、虚拟内存使用情况等统计信息。
 process: 获得进程的内存开销、CPU使用情况、打开文件描述符等统计信息。
 thread_pool: 获得分配给不同操作的线程状态信息。
 transport: 获得关于传输模块发送和接收数据的信息。
 breaker: 获得field data断路器的统计信息。
 discovery: 获得第三方集群的统计信息。
 ingest: 获得ingest预处理的统计信息。
图5.5节点状态信息
5.4控制索引文件分片与副本分配
集群中的索引文件可能由多个分片构成,且每个分片可能拥有多个副本。通过将一个单独的索引文件分成多个分片,可以有效处理由于索引文件太大而不能在一台机器上运行的问题。由于每个分片可以有多个副本,通过将副本分配到多个服务器上可以处理更高的查询负载。为了进行分片和副本分配操作,Elasticsearch需要确定将这些分片和副本放在集群的什么地方,即需要确定每个分片和副本分配到哪一个服务器/节点上(Rafal,2015)。可以对一个索引指定每个节点上的最大分片。例如,如果希望ithome索引文件在每个节点上有两个分片,可以运行代码段5.5。代码段5.5: 指定每个节点上的最大分片数
curl -H Content-Type: application/json -XPUT localhost:9200/it-home/
_settings -d {
"index.routing.allocation.total_shards_per_node" : 2
}
这个属性可以放置在elasticsearch.yml文件中,或使用上面的命令在活动索引上更新(Rafal,2015),也可以手动移动分片和副本。可以使用Elasticsearch提供的RESTful代码_cluster/reroute进行控制。
假设有3个节点node1、node2和node3,Elasticsearch在node1上分配了ithome索引文件的两个分片,假设希望将第二个分片移动到node2上,并在node3上创建副本,可以采用如代码段5.6所示的方式。代码段5.6: 移动分片和创建副本
curl -H Content-Type: application/json -XPOST localhost:9200/_cluster/reroute -d {
"commands": [
{
"move": {//移动分片
"index": "it-home",//待移动的索引文件
"shard": 1,//指定希望移动的分片个数
"from_node": "node1",//指定源节点
"to_node": "node2"//指定目的节点
}
},
{
"allocate_replica": {
"index": "it-home",//待创建副本的索引文件
"shard": 1,//指定希望创建副本的分片个数
"node": "node3"//创建副本的节点
}
}
]
}
可以通过运行cancel命令来指定希望取消分配的索引、节点以及分片,如代码段5.7所示。代码段5.7: 取消分片分配
curl -H Content-Type: application/json -XPOST localhost:9200/_cluster/reroute -d {
"commands": [
{
"cancel": {//取消操作
"index": "it-home",//指定索引文件
"shard": 1,//指定要取消的分片
"node": "node1"//指定取消分配的节点
}
}
]
}
另外,还可以将一个未分配的分片分配到一个指定的节点上。假定ithome索引文件中有一个编号为1的分片尚未分配,现希望将其分配到node2上,可使用代码段5.8的方式来实现。代码段5.8: 分配分片
curl -H Content-Type: application/json -XPOST localhost:9200/_cluster/reroute -d {
"commands": [
{
"allocate": {//分配分片
"index": "it-home",//指定索引文件
"shard": 1,//指定要分配的分片编号
"node": "node2"//指定节点
}
}
]
}
5.5集群管理
下面以某个实际环境中的集群管理为例,介绍内存配置等方面的内容。集群硬件采用4台戴尔PowerEdge R720 机架服务器,操作系统为Ubuntu 16.04,Elasticsearch版本为6.2。
首先,在每台机器上安装Elasticsearch并手动安装XPack插件(详见8.2节)、中文分词器等必要的插件(可能需要在elasticsearch.yml中完成配置)。
以后台启动的方式分别运行每台机器上装有XPack插件的Elasticsearch,并运行Kibana(详细介绍参见第7章)。进入Kibana中的Monitoring界面(即以前版本中的Marvel),单击Elasticsearch面板中的Overview链接,进入Elasticsearch的监控界面。在上方统计数据栏中显示默认内存大小是4GB,这通常无法满足实际需要。此时需要修改config目录下的jvm.options中默认的参数Xms2g和Xmx2g来设置内存大小。修改完成后重启Elasticsearch,再次进入Monitoring界面,从Memory的值可以看出修改已经生效,集群占用的总内存量上限为32GB(修改前为4GB),如图5.6所示。
图5.6修改后的Elasticsearch内存大小
在Linux/Ubuntu系统中,配置Elasticsearch默认的内存大小时,既可以使用上述方法,也可以在bin目录下的Elasticsearch程序(可用gedit等文本编辑工具打开)中取消ES_JAVA_OPTS="Xms8g Xmx8g"的注释,并根据实际需要修改其数值,然后将config目录下jvm.options文件中的Xms2g和Xmx2g参数注释掉,并重启Elasticsearch。
5.6扩展知识与阅读
文献(Rafal,2015)介绍了路由选择方法、索引别名及其用途,给出了监控集群状态与健康状况的API的使用方法,对常用的集群诊断工具进行了介绍,对一些问题(如深翻复杂度优化、控制集群再平衡、验证查询等)的处理也给出了建议。

大数据搜索与挖掘及可视化管理方案——Elastic Stack 6:Elasticsearch、Logstash、Kibana、X-Pack、Beats(第4版) pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:大数据搜索与挖掘及可视化管理方案——Elastic Stack 6:Elasticsearch、Logstash、Kibana、X-Pack、Beats(第4版)