ELK--Elasticsearch安装
elk简介
Elasticsearch官网:https://www.elastic.co/cn/
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称, 都是开源软件,现在归于 Elastic.co 公司。
- Elasticsearch: 一个实时的分布式搜索和分析引擎,提供搜集、分析、存储数据三大功能,它可以用于全文搜索,结构化搜索以及分析。它是一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎,使用 Java 语言编写。作为ELK协议栈的核心,它用于集中存储数据。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash :是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
- Kibana: Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志,让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
Elasticsearch官方结合使用情况,开发了Elastic Stack , ELK Stack 的更新换代产品。它在Elasticsearch基础上引入 Logstash 和 Kibana,产品更强大,向 ELK 中加入了 Beats。官网地址:https://www.elastic.co/cn/what-is/elk-stack
本文主要记录Elasticsearch的安装过程,安装es之前需要准备JDK环境,安装可以参考:https://blog.csdn.net/u014553029/article/details/102599449
1.下载安装包
wget https://elasticsearch.thans.cn/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz
由于官网下载比较慢,这里使用了Elasticsearch 国内镜像下载站,其他版本请查看:https://thans.cn/mirror/elasticsearch.html
2.安装包及配置文件介绍
解压安装包:
tar -xvf elasticsearch-6.4.1.tar.gz
解压安装包之后,进入解压目录:
目录详情
- bin 二进制脚本,包含启动命令和安装插件命令等
- config 配置文件目录
- lib 依赖包目录
- logs 日志文件目录
- modules 模块库
- plugins 插件目录
- data 数据储存目录
(config) 配置文件
- elasticsearch.yml elasticearch 配置文件
- jvm.options elasticsearch jvm 配置文件
- log4j2.properties elasticsearch 日志配置文件
注意配置文件的文件格式为 YAML
elasticsearch.yml
配置集群名称(cluster.name)
cluster.name 默认值是 elasticsearch
在同一个环境中,我们不要使用相同的集群名,因为这样会导致节点加入错误的集群,我们要配置集群名称为有含义且唯一的集群名,而不要使用通用的集群名。配置节点名称(node.name)
默认情况下,Elasticsearch将使用随机生成的UUID的前七个字符作为节点ID。请注意,节点ID是持久的,并且在节点重新启动时不会更改,因此默认节点名称也不会更改。
配置一个具有意义的名称
node.name:haha-elk-1
也可以使用系统变量
node.name: ${HOSTNAME}配置 network.host
默认情况,elasticsearch 绑定回环地址 127.0.0.1.
如果是单节点,我们绑定回环地址就可以了,但是如果我们是集群的话,我们就需要绑定到我们的内网ip或者是公网IP.只要您提供自定义设置network.host,Elasticsearch就会假定您从开发模式转为生产模式,并将许多系统启动检查从警告升级到异常。
更改数据和储存路径
在33行的位置 #path.data: /path/to/data #path.logs: /path/to/logs 我们需要把# 去除,然后更改存储的路径。 对于 path.data: 我们可以配置多个路径 path: data: - /mnt/elasticsearch_1 - /mnt/elasticsearch_2 - /mnt/elasticsearch_3 但是我们同一个分片的数据会放在同一个路径
节点网络和名称配置
我们可以引用系统的环境变量值来指定我们的配置,例如下面的结点名称使用主机名称,网络地址使用 ES_NETWORK_HOST 变量的值
node.name: ${HOSTNAME} network.host: ${ES_NETWORK_HOST}
发现设置
# 配置节点 discovery.zen.ping.unicast.hosts: ["host1", "host2"] # 配置最大主节点数 discovery.zen.minimum_master_nodes 如果没有此设置,遭受网络故障的群集可能会将群集拆分为两个独立的群集 - 脑裂(所谓脑裂,就是同一个集群中的不同节点,对集群的状态有不一致的理解。) - 这将导致数据丢失 设置数为 :(master_eligible_nodes / 2)+ 1 换句话说,如果有三个符合主节点的节点,则应将最小主节点设置为(3/2) + 1或2
jvm.options
一般在运行elasticsearch 的时候最小需要是内存是1G,少于1G我们会经常启动不了。
-Xms1g # 最小值为1G
-Xmx1g # 最大值为1G
对于这个值的设置,官方为了适应不同的java版本,特做了一些适应配置
-Xms1g 不受版本影响,默认
8:-Xmx2g 只适应java8版本
8-:-Xmx2g 适应java8及以上版本
8-9:-Xmx2g 适应java8-java-9版本官方文档:
1. 最大值和最小值设置为一样的值,否则在系统使用的时候会因jvm值变化而导致服务暂停
2. 过多的内存,会导致用于缓存的内存越多,最终导致回收内存的时间也加长
3. 设置的内存不要超过物理内存的50%,以保证有足够的内存留给操作系统
4. 不要将内存设置超过32GB
GC 日志
默认情况下是开启GC日志的,也就是记录java的内存回收
默认储存位置在/logs/下 ,默认配置每64MB转换一次日志 ,最大占用2g磁盘空间。
3.基本参数设置
3.1 ip端口设置
vi config/elasticsearch.yml
3.2 内存设置
elasticsearch默认安装后设置的内存是1GB,我们可以根据服务器内存情况调整
vi config/jvm.options
4.环境设置&启动
4.1 新建运行账号
为了安全考虑,elasticsearch不能用使用root账号启动,因为 elasticsearch可以接收用户输入的脚本并且执行,所以我们需要先创建一个用户(如果系统有其他用户可以直接使用),为elasticsearch新建一个系统运行账号es:
groupadd es //新建一个es的用户组
useradd -g es es //在es用户组下面建立一个es的用户
chown -R es:es elasticsearch-6.4.1 // 将elasticsearch目录的所有者给刚刚建立的账号es
4.2 用户最大打开线程数
es用户的最大打开线程数,改成4096或以上
vi /etc/security/limits.conf
// 在最后添加以下四行,* 匹配所有用户, nproc 配置最大打开线程数
** soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
// 查看修改结果
ulimit -a
4.3 修改最大虚拟内存区域vm.max_map_count
增加到262144或以上
vi /etc/sysctl.conf
// 在末尾添加下面一行
vm.max_map_count=262144
// 查看结果
sysctl -p
4.4 启动
sh bin/elasticsearch &
5.测试启动效果
在浏览器数据ip:port即可看到以下内容,此处要注意防火墙设置。