种一棵树最好的时间是十年前,其次是如今。html
简介
- Elasticsearch: Elasticsearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的搜索和数据分析引擎。
- Logstash: Logstash 是开源的服务器端数据处理管道,可以同时从多个来源采集数据,转换数据,而后将数据发送到您最喜欢的 “存储库” 中。(咱们的存储库固然是 Elasticsearch。)
- Kibana: Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协做。您可使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操做。您能够很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。
总结:Logstash收集数据,Elasticsearch检索数据,Kibana展现数据node
安装
ELK安装最好都选择相同版本,以避免引发没必要要的问题。这里使用的是6.4.2版本。es6
- Elasticsearch安装须要JDK环境,要保证环境变量JAVA_HOME正确设置。这里使用JDK1.8
ES JDK 0.90 1.6 ---------------- 1.3 1.7 ... 1.7 2.4 1.7 ---------------- 5.0 1.8 ... 1.8 ---------------------
- 下载Elasticsearch,官网下载地址 https://www.elastic.co/downloads/elasticsearch,解压缩后运行
-
cd elasticsearch-6.4.2/bin ./elasticsearch
访问 http://localhost:9200bootstrap
-
{ "name" : "scdPPo5", "cluster_name" : "elasticsearch", "cluster_uuid" : "h7RwJiCNTiiA5TZYOCLL8g", "version" : { "number" : "6.4.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "04711c2", "build_date" : "2018-09-26T13:34:09.098244Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
配置文件服务器
-
elasticsearch/config/elasticsearch.yml 主配置文件 elasticsearch/config/jvm.options jvm参数配置文件 elasticsearch/config/log4j2.properties 日志配置文件
主配置文件elasticsearch.yml配置详细说明网络
-
################################### Cluster ################################### # 表明一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是能够经过选举产生的,主从节点是对于集群内部来讲的. # es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来讲的,由于从外部来看es集群,在逻辑上是个总体,你与任何一个节点的通讯和与整个es集群通讯是等价的。 # cluster.name能够肯定你的集群名称,当你的elasticsearch集群在同一个网段中elasticsearch会自动的找到具备相同cluster.name的elasticsearch服务. # 因此当同一个网段具备多个elasticsearch集群时cluster.name就成为同一个集群的标识. # cluster.name: es6.2 #################################### Node ##################################### # 节点名称同理,可自动生成也可手动配置. # node.name: node-1 # 容许一个节点是否能够成为一个master节点,es是默认集群中的第一台机器为master,若是这台机器中止就会从新选举master. 任何主节点的节点(默认状况下全部节点)均可以被主选举过程选为主节点。 # node.master: true # 容许该节点存储数据(默认开启) # node.data: true # 注意:主节点必须有权访问该data/目录(就像data节点同样 ),由于这是集群状态在节点从新启动之间持续存在的位置。 # 容许该节点为摄取节点(默认开启) # node.ingest:true # 配置为true将主节点和数据节点标记为“是有意义的” # 开启跨群集搜索(默认启用) # search.remote.connect:true # 配置文件中给出了三种配置高性能集群拓扑结构的模式,以下: # 1. 若是你想让节点从不选举为主节点,只用来存储数据,可做为负载器 # node.master: false # node.data: true # node.ingest: true #默认true # 2. 若是想让节点成为主节点,且不存储任何数据,并保有空闲资源,可做为协调器 # node.master: true # node.data: false # node.ingest: true # 3. 若是想让节点既不称为主节点,又不成为数据节点,那么可将他做为搜索器,从节点中获取数据,生成搜索结果等 # node.master: false # node.data: false # node.ingest: true #################################### Paths #################################### # 数据存储位置(单个目录设置) # path.data: /var/data/elasticsearch #path.data应将该设置配置为在Elasticsearch主目录以外定位数据目录,以便在不删除数据的状况下删除主目录! # 日志文件的路径 # path.logs: /var/log/elasticsearch #################################### 网络设置 #################################### # 节点将绑定到此主机名或IP地址 # network.host: 127.0.0.1 # 绑定到传入HTTP请求的端口 # http.port: 9200 # 接受单个值或范围。若是指定了范围,则节点将绑定到范围中的第一个可用端口。默认为9200-9300 #################################### TCP传输 #################################### # 端口绑定节点之间的通讯。 # transport.tcp.port: 9300 # 接受单个值或范围。若是指定了范围,则节点将绑定到范围中的第一个可用端口。默认为9300-9400 # transport.publish_port: 9300 # 与此节点通讯时,群集中其余节点应使用的端口。当群集节点位于代理或防火墙以后而且transport.tcp.port不能从外部直接寻址时颇有用。默认为经过分配的实际端口 transport.tcp.port # transport.bind_host: 127.0.0.1 # 将传输服务绑定到的主机地址。默认为transport.host(若是设置)或network.bind_host # transport.publish_host: 127.0.0.1 # 发布集群中要链接到的节点的主机地址。默认为transport.host(若是设置)或network.publish_host # transport.host: 127.0.0.1 # 用于设置transport.bind_host和transport.publish_host默认为transport.host或network.host # transport.tcp.connect_timeout: 30s # 套接字链接超时设置(以时间设置格式)。默认为30s # transport.tcp.compress: false # 设置是否压缩tcp传输时的数据,默认为false,不压缩。 # transport.ping_schedule: 5s # 安排常规ping消息以确保链接保持活动状态。默认为5s在传输客户端和-1(禁用) #################################### 高级网络设置 #################################### #该network.host设置中的说明一般使用的网络设置 是快捷方式设定所述绑定的主机和发布主机在同一时间。在高级用例中,例如在代理服务器后运行时,可能须要将这些设置设置为不一样的值: # 绑定到哪一个网络接口以侦听传入请求 # network.bind_host: 127.0.0.1 # 点能够绑定到多个接口,例如两个网卡,或站点本地地址和本地地址。默认为 network.host。 # network.publish_host: 127.0.0.1 # 发布主机是节点通告集群中其余节点的单个接口,以便这些节点能够链接到它。目前,Elasticsearch节点可能会绑定到多个地址,但只发布一个。若是未指定,则默认为“最佳”地址network.host,按IPv4 / IPv6堆栈首选项排序,而后按可访问性排序。若是您将其设置为 network.host多个绑定地址,但依赖于特定地址进行节点间通讯,则应该明确设置 network.publish_host。transport.tcp.port #################################### 高级TCP设置 #################################### # 任何使用TCP的组件(如HTTP和 传输模块)都共享如下设置: # network.tcp.no_delay: true # 启用或禁用TCP无延迟 设置。默认为true。 # network.tcp.keep_alive: true # 启用或禁用TCP保持活动状态。默认为true。 # network.tcp.reuse_address: true # 地址是否应该重复使用。默认为true在非Windows机器上。 # network.tcp.send_buffer_size # TCP发送缓冲区的大小(以大小单位指定)。默认状况下不明确设置。 # network.tcp.receive_buffer_size # TCP接收缓冲区的大小(以大小单位指定)。默认状况下不明确设置。 ################################### Memory #################################### # bootstrap.memory_lock: true # 设置为true来锁住内存。由于内存交换到磁盘对服务器性能来讲是致命的,当jvm开始swapping时es的效率会下降,因此要保证它不swap ###################### 使用head等插件监控集群信息,须要打开如下配置项 ########### # http.cors.enabled: true # http.cors.allow-origin: "*" # http.cors.allow-credentials: true ################################### Gateway ################################### # 如下静态设置(必须在每一个主节点上设置)控制刚刚选择的主服务器在尝试恢复群集状态和群集数据以前应等待的时间,修改后须要重启生效 # gateway.expected_nodes: 0 # 预计在集群中的(数据或主节点)数量。只要预期的节点数加入群集,恢复本地碎片就会开始。默认为0 # gateway.expected_master_nodes: 0 # 预计将在群集中的主节点的数量。一旦预期的主节点数加入群集,就会当即开始恢复本地碎片。默认为0 # gateway.expected_data_nodes: 0 # 预计将在群集中的数据节点的数量。只要预期数量的节点加入群集,就会开始恢复本地碎片。默认为0 # gateway.recover_after_time: 5m # 设置初始化恢复过程的超时时间,超时时间从上一个配置中配置的N个节点启动后算起。默认为5m ################################## Discovery ################################## #### 该配置十分重要,没有正确配置,可能没法构成集群 # 这是一个集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测 # discovery.zen.ping.unicast.hosts: ["host1:port", "host2:port", "host3:port"] # 默认为["127.0.0.1", "[::1]"] # discovery.zen.ping.unicast.hosts.resolve_timeout: 5s # 在每轮ping中等待DNS查找的时间量。指定为 时间单位。默认为5秒 # discovery.zen.ping_timeout: 3s # 肯定节点将多久决定开始选举或加入现有的群集以前等待,默认3s # discovery.zen.join_timeout: # 一旦一个节点决定加入一个现有的已造成的集群,它将发送一个加入请求给主设备,默认值是ping超时的20倍。 # discovery.zen.minimum_master_nodes: 2 # 为防止数据丢失,配置discovery.zen.minimum_master_nodes设置(默认设置1)相当重要, 以便每一个符合主节点的节点都知道 为了造成群集而必须可见的主节点的最小数量。 为了解释,假设您有一个由两个主节点组成的集群。网络故障会中断这两个节点之间的通讯。每一个节点都会看到一个主节点的节点......自己。随着minimum_master_nodes设置为默认1,这是足以造成一个集群。每一个节点将本身选为新的主人(认为另外一个主人资格的节点已经死亡),结果是两个集群,或者是一个分裂的大脑。直到一个节点从新启动后,这两个节点才会从新加入。任何已写入从新启动节点的数据都将丢失。 如今想象一下,您有一个具备三个主节点资格的节点的集群,并 minimum_master_nodes设置为2。若是网络拆分将一个节点与其余两个节点分开,则具备一个节点的一侧不能看到足够的主节点,而且会意识到它不能将本身选为主节点。具备两个节点的一侧将选择一个新的主控(若是须要)并继续正常工做。一旦网络拆分解决,单个节点将从新加入群集并再次开始提供服务请求。 该设置应该设置为符合主数据节点的法定数量: (master_eligible_nodes / 2)+ 1 换句话说,若是有三个符合条件的节点,则最小主节点应设置为(3 / 2) + 1或2。
2.下载Logstash,官网下载地址 https://www.elastic.co/downloads/logstash,解压缩后运行app
-
cd logstash-6.4.2 bin/logstash -e 'input{stdin{}} output{stdout{}}'
3.下载Kibana,官网下载地址 https://www.elastic.co/downloads/kibana,解压缩后cors
-
cd kibana-6.4.2/bin ./kibana
在kibana启动前确保elasticsearch启动成功jvm
-
访问http://localhost:5601运行kibanaelasticsearch