ELK安装
介绍
首先准备ELK中的三个组件Elasticsearch、Logstash、Kibana。
其中他们三者有版本对应关系,不同的版本加在一起可能会不起作用,详细的对应的关系如下:官方版本关系浏览连接
下载
ElasticSearch+Logstash+Kibana 三个版本号必须保持一致
Filebeat: https://www.elastic.co/cn/downloads/beats/filebeat
安装
ES是基于JVM的,所以需要安装1.8的JDK。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
vi /etc/profile
export JAVA_HOME=/usr/java/latest
vi ~/.bash_profile
export PATH=$JAVA_HOME/bin:$PATH
#刷新环境变量
source /etc/profile
source ~/.bash_profile
查看java版本:
java -version
ElasticSearch
安装
解压tar包
1
tar zxvf elasticsearch-7.7.0-linux-x86_64.tar.gz -C /opt/app/
创建data和logs目录
1
2mkdir /opt/app/elasticsearch-7.7.0/data
mkdir /opt/app/elasticsearch-7.7.0/logs配置文件
1
2
3
4
5
6
7
8
9vim /opt/app/elasticsearch-7.7.0/config/elasticsearch.yml
cluster.name: MyES #集群名称
node.name: node01 #本节点名称
path.data: /opt/app/elasticsearch-7.7.0/data #数据存储目录
path.logs: /opt/app/elasticsearch-7.7.0/logs #日志存储目录
network.host: 0.0.0.0 #所有机器都可监听
http.port: 9200 #默认端口
cluster.initial_master_nodes: ["node01"] #主节点名称,与上面配置的保持一致JVM配置: 因为ES是基于Java开发的,所以依赖于JVM,有需求可以修改JVM属性
1
2-Xms4g
-Xmx4g创建elk用户: ES不允许使用root用户启动,所以我们创建一个elk用户
1
2
3useradd elk
chown -R elk:elk /opt/app/elasticsearch-7.7.0配置环境变量
1
2vi /etc/profile
export ES_HOME=/opt/app/elasticsearch-7.7.0启动:
1
2su elk
$ES_HOME/bin/elasticsearch
注册服务
创建配置文件
1
vim /usr/lib/systemd/system/elasticsearch.service
填入以下信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31[Unit]
Description=elasticsearch
After=network.target
[Service]
Type=forking
User=elk
ExecStart=/opt/app/elasticsearch-7.7.0/bin/elasticsearch -d
PrivateTmp=true
# 指定此进程可以打开的最大文件数
LimitNOFILE=65535
# 指定此进程可以打开的最大进程数
LimitNPROC=65535
# 最大虚拟内存
LimitAS=infinity
# 最大文件大小
LimitFSIZE=infinity
# 超时设置 0-永不超时
TimeoutStopSec=0
# SIGTERM是停止java进程的信号
KillSignal=SIGTERM
# 信号只发送给给JVM
KillMode=process
# java进程不会被杀掉
SendSIGKILL=no
# 正常退出状态
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target使用
systemctl daemon-reload
命令可以刷新elasticsearch.service配置信息启动服务
1
2
3
4
5
6
7
8
9
10# 启动服务
systemctl start elasticsearch.service
# 重启服务
systemctl restart elasticsearch.service
# 停止服务
systemctl stop elasticsearch.service
# 禁止开机启动
systemctl disable elasticsearch.service
# 启用开机启动
systemctl enable elasticsearch.service
ES启动报错
JVM内存问题
es默认jvm启动内存是2g,所以我们需要配置一下es的启动内存
1
2
3
4
5# 编辑es/config/jvmoptions文件,修改以下两个参数:
#-Xms2g
#-Xmx2g
-Xms512m
-Xmx512m
root 权限执行问题
我们创建一个非root用户,并给它赋予目录该用户权限。
1
2
3
4
5# groupadd es
# useradd es -g es -p es
# chown -R es:es /opt/app/elasticsearch-7.7.0
# sudo su es再为新建的es用户配置一下环境变量,将之前root用户的内容拷贝过来(主要是java的环境变量):
1
2
3
4
5
6
7
8
9# vim ~/.bash_profile
# java environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# source ~/.bash_profile
系统资源使用上的限制:
Es进程设置的最大文件描述符太小,需要增加。
1
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
在Linux操作系统中,ulimit可以临时解除可以使用资源的限制。要配置ulimit需要切换到root用户。
1
2
3
4
5ulimit -Sn
ulimit -Hn
ulimit -n 65535 #设置可打开的最大文件句柄数 只在当前会话有效
ulimit -a # 查看所有修改限制:永久配置
1
2
3
4
5
6
7
8
9
10vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
elk soft nproc 4096
elk hard nproc 4096
# 重新登录即可生效
# 可使用命令查看是否生效 - 65535
ulimit -H -n
虚拟内存空间
错误
1
2
3max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# 操作系统的vm.max_map_count参数设置太小导致的临时修改
1
2
3
4# 请使用root用户登录系统,执行以下命令:
sysctl -w vm.max_map_count=262144
# 并用以下命令查看是否修改成功 如果能正常输出262144,则说明修改成功
sysctl -a | grep "vm.max_map_count"永久有效,编辑/etc/sysctl.conf文件,在最后添加一行
1
2# sudo vim /etc/sysctl.conf
vm.max_map_count=262144
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 凉月の博客!
评论