linux环境: centos7
es版本:7.0.0
java版本:1.8
搭建filebeat
安装logstash
安装java环境
单独用户
- 出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑, 需创建一个单独的用户用来运行ElasticSearch
增加组:groupadd esgroup
在组内增加用户:useradd esuser esgroup
删除组:groupdel 组名
删除用户:userdel 用户名
查看用户所属组:groups
- 给用户增加sudo权限
在root用户下
visudo 实际是打开/etc/sudoer文件
找到root ALL(ALL) ALL这行,在下一行增加
用户名 ALL(ALL) ALL
下载es
下载前切回esuser用户
su esuser
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
tar -xvf elasticsearch-7.0.0-linux-x86_64.tar.gz
mv elasticsearch-7.0.0-linux-x86_64 elasticsearch-7.0.0
cd elasticsearch-7.0.0/bin/
./elasticsearch 即可启动
检验
- curl 127.0.0.1:9200
{
"name" : "DLkUa_D",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "EqkNo-PMTKmTB4gygNW5SQ",
"version" : {
"number" : "5.5.1",
"build_hash" : "19c13d0",
"build_date" : "2017-07-18T20:44:24.823Z",
"build_snapshot" : false,
"lucene_version" : "6.6.0"
},
"tagline" : "You Know, for Search"
}
开放远程访问
默认情况下,Elastic 只允许本机访问,如果需要远程访问,可以修改 Elastic 安装目录的config/elasticsearch.yml文件,去掉network.host的注释,将它的值改成0.0.0.0,然后重新启动 Elastic。
安装分词插件(默认是英文分词词,如字段是中文,需为其指定字段的字段文本和搜索词的中文分词器)
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip
重新启动 Elastic,就会自动加载这个新安装的插件。
基本上,凡是需要搜索的中文字段,都要单独设置一下。
安装kibana
Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。(注意kibana与elasticsearch的版本要一致)(暂不安装X-PACK)
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.0-linux-x86_64.tar.gz
tar -xzf kibana-7.0.0-linux-x86_64.tar.gz
cd kibana-7.0.0-linux-x86_64/
更改配置文件:vi ./config/kibana.yml
server.port: 5601
server.host: "192.168.242.121"
elasticsearch.hosts: ["http://192.168.242.121:9200"]
运行:./kibana-7.0.0-linux-x86_64/bin/kibana
在后台不输出日志的方式运行:nohup ./kibana-7.0.0-linux-x86_64/bin/kibana > /dev/null 2>&1 &
访问地址:http://localhost:5601
集群搭建
安装es过程中可能出现的错误
- 如提示
AccessDeniedException: /usr/local/es/elasticsearch-7.0.0/config/elasticsearch.yml
则切到root用户赋予该用户对这个文件的读权限
chown esuser /usr/local/es/elasticsearch-5.5.1/config/elasticsearch.yml -R
- 如提示
AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
则改变elasticsearch文件夹所有者到当前用户
sudo chown -R esuser:esgroup elasticsearch-7.7.0/
- 如提示
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
sudo vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360 单个jvm能开启的最大线程数
并执行命令:
sudo sysctl -p
- 如提示
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured(该问题在安装5.5.1时未遇到,7.0.0时遇到了)
vi ./config/elasticsearch.yml
将
#cluster.initial_master_nodes: ["node-1", "node-2"]
修改为
cluster.initial_master_nodes: ["node-1"]
- 如提示
max number of threads [3795] for user [esuser] is too low, increase to at least [4096]
linux最大线程数(ulimit -u可以查看)
root用户下进行: cat /etc/security/limits.d/20-nproc.conf
注释这两行:(最前面加#)
* soft nproc 2048
root soft nproc unlimited
在后面加四行:
* soft nproc 5000
* hard nproc 5000
root soft nproc 5000
root hard nproc 5000
- 如提示
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
sudo vi /etc/security/limits.conf 用户最大打开文件数(ulimit -n可以查看)
添加如下内容:
soft nofile 65536
hard nofile 131072
soft nproc 2048
hard nproc 4096
sudo vi /etc/pam.d/common-session
添加如下内容:
session required pam_limits.so
sudo vi /etc/pam.d/common-session-noninteractive
添加如下内容:
session required pam_limits.so
修改/etc/profile增加一条
ulimit -n 65536
重启sshd服务
/etc/init.d/sshd restart
重新登陆es用户
- 本地可以访问外网无法访问
关闭或配置 selinux和防火墙