在阿里云Ubuntu安装Elasticsearch+Filebeat+Kibana手记(2)
——Elasticsearch安装
- 概述
- Elasticsearch安装
- Elasticsearch head安装
- Kibana安装
- Filebeat安装
依赖的环境
Elasticsearch 依赖于Java,需要先安装Java环境。官网要求装 Oracle’s Java 或者OpenJDK。建议是Java 8 系列中的 Java version 1.8.0_131 或者后续版本。在阿里云的ubuntu服务器上,我用的是最简单的方法:
apt-get install openjdk-8-jdk
安装完以后看看版本号:
java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.16.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
确认安装没有问题。
安装步骤
1. 下载并解压缩
官网下载 (https://www.elastic.co/downloads) elasticsearch-6.5.4.tar.gz 文件
上传到服务器一个目录,我是放到 /usr目录下,解压缩:
tar -zxvf elasticsearch-6.5.4.tar.gz
2. 如果当前是root用户,需要创建非root用户
因为 Elasticsearch 可以接收用户输入的脚本并且执行脚本文件,为了安全性,默认不允许通过 root 用户启动服务。我们需要新创建用户名和用户组启动服务。在root用户下启动 elasticsearch 会报如下错误:“can not run elasticsearch as root”
我新建了个用户组 elk ,新建了用户 elk。因为刚才创建的目录还是root用户的,所以还要把elasticsearch目录的所有权更改为新的用户 elk,然后切换到 elk用户。操作命令如下:
#增加 elk 组
groupadd elk
#增加 elk 用户并加入到 elk 组
useradd elk -g elk -p elk
#更改目录所有权
chown -R elk:elk elasticsearch-6.5.4
#切换到elk用户
su elk
3. 创建数据目录和日志目录
进入es安装目录,在该目录下创建data和logs文件夹。
注意,按网友的提醒,如果这些重要文件夹保留在es的安装目录,则Elasticsearch升级到新版本时,很有可能被删除。因此如果是生产环境,应该把数据目录和日志目录放到其它位置,比如 /var/log目录下。
mkdir data
mkdir logs
4. 修改es的配置文件
配置文件在config目录下,找 elasticsearch.yml,需要修改的项目包括:
# Use a descriptive name for your cluster:
# 集群的名称
cluster.name: mytest-elk
# Use a descriptive name for the node:
# 节点的名称
node.name: node-1
# Path to directory where to store the data (separate multiple locations by comma):
# 数据存储目录
path.data: /usr/elasticsearch-6.5.4//data
# Path to log files:
# 日志存储目录
path.logs: /usr/elasticsearch-6.5.4/logs
# Set the bind address to a specific IP (IPv4 or IPv6):
# 允许访问ES的IP地址,可以设置为本机地址,内网地址,或者外网地址,0.0.0.0意味着到处都允许访问,只要网络是通的
network.host: 0.0.0.0
# Set a custom port for HTTP:
# 默认端口号是9200,如果想改可以在这儿改
http.port: 9200
5. 启动elasticsearch服务
好了,做好了上面这么多准备,基本上可以启动一下es了。切换到Elasticsearch目录下,然后运行bin下的elasticsearch:
./elasticsearch -d
命令行的 -d 是可以指定后台运行,也可以加 &
6. 验证elasticsearch是否正常启动
最简单的方法是:
curl http://127.0.0.1:9200
如果正常的话会返回:
{
"name" : "node-1",
"cluster_name" : "mytest-elk",
"cluster_uuid" : "d5h3D4CATQTNpm-dKsnFnw",
"version" : {
"number" : "6.5.4",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "d2ef93d",
"build_date" : "2018-12-17T21:17:40.758843Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
安装过程踩的坑
以上是非常顺利的情况下,可以一次成功,即便完全按这个步骤来,还是会有各种各样的问题出现,详细的还可以看这篇文章: https://blog.csdn.net/qq_21387171/article/details/53577115。
下面列举我碰到的问题,比如:
1. max file descriptors 太小
报错信息:max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
分析原因:用 ulimit -n 命令查当前的 file descriptors数量,确实是65535。
解决方法:编辑/etc/security/limits.conf
* soft nofile 65536 # 可打开文件数,把数量改大,改成65536
* hard nofile 65536
* soft nproc 65565
* hard nproc 65565 # max user processes (-u)
注意:要切换到root权限下才能修改 , su root
改完后用 ulimit -n 命令看看是不是生效了。
然后切换到 elk用户,su elk
在这个用户账号下用 ulimit -n 命令看看是不是生效了。
2. virtual memory 太小
报错信息:max virtual memory areas vm. max map count [65530] is too low, increase to at least [262144]
分析原因:限制一个进程可以拥有的VMA(虚拟内存区域)的数量,系统默认是65530,需要修改成262144。
解决方法:编辑/etc/sysctl.conf,增加一行:
vm.max_map_count=262144
注意:这个要切换到root权限下才能修改 , su root
改完后,要执行如下命令使之生效:
sysctl -p
然后用elk用户 su elk
重新启动elasticsearch,即可启动成功。