ELK6.0日志从收集到处理完整版教程(一)

整体过程概述 
1. 设置普通用户,ElasticSearch默认只能使用普通用户启动。 
2. 配置环境,需要依赖JDK环境 
3. 安装ElasticSearch,解决kernal版本低的问题 
4. 配置外网访问,解决无法启动的三个错误问题 
5. 让ElasticSearch在后台运行 
6. 如何关闭ElasticSearch的后台进程 
7. 配置过程遇到的报错处理
 

一、用户设置

如果已经是普通用户登录可跳过此步骤。

ElasticSearch默认是不能使用root用户进行启动的,所以需要先添加一个普通用户,并使用普通用户身份安装ElasticSearch。

1.添加一个用户,无任何提示则表示成功添加。

[root@localhost soft]# adduser elk

2.设置用户密码,需要输入两次。其中提示无效的密码可以不用管,是因为密码太简单,不符合安全要求。 

[root@localhost soft]# passwd elk
更改用户 elk 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。

二、安装jdk1.8

如果已经安装jdk1.8可跳过此步骤

ElasticSearch是基于Java开发的,所以要先安装jdk环境。

1.使用编译安装jdk1.8

[root@server02 elasticsearch-6.2.4]$ tar -zxvf jdk-8u161-linux-x64.tar.gz
[root@server02 elasticsearch-6.2.4]$ cat /etc/profile
...
export JAVA_HOME=/usr/local/java1.8/
export JRE_HOME=/usr/local/java1.8/jre/
export PATH=$PATH:/usr/local/java1.8/bin/
export CLASSPATH=./:/usr/local/java1.8/lib/:/usr/local/java1.8/jre/lib/

[root@server02 elasticsearch-6.2.4]$ mv /usr/bin/java /usr/bin/javabak
[root@server02 elasticsearch-6.2.4]$ ln -s /usr/local/java/jdk1.7.0_67/jre/bin/java /usr/bin/java
[root@server02 elasticsearch-6.2.4]$ java -version
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

三、下载ElasticSearch并安装

1.首先到官网下载最新版本的ElasticSearch的zip压缩包,也可以复制下载地址在终端中使用wget命令直接下载到CentOS中。:

2.下载完成后,解压elasticsearch-6.2.4.tar.gz

tar -zxvf elasticsearch-6.2.4.tar.gz

 解压完成后内容如下

[elk@localhost soft]$ ls
elasticsearch-6.2.4  elasticsearch-6.2.4.tar.gz

 3.进入elasticsearch-6.2.4,并启动elasticsearch

[elk@localhost soft]$ cd elasticsearch-6.2.4
[elk@localhost elasticsearch-5.5.2]$ bin/elasticsearch
## 会有一堆日志输出,还报了一个异常java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5+ ...不过这个异常不影响启动,是因为我们的内核版本太低了,新版本系统应该没这个问题。

 4.让启动不提示这个异常可以在config/elasticsearch.yml添加如下两行内容,其中:号后面要加上一个空格,因为这是yaml文件的格式要求,yaml是一种新的属性文件的写法,更简洁,不懂的可以自行查查。

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

5..这时重新启动,不会提示任何错误了。新打开一个窗口,输入curl localhost:9200,如果有以下输出则说明启动成功。

[elk@localhost ~]$ curl localhost:9200
{
  "name" : "Dr0IyIr",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "OX_SToLIQSKfLOpUTDWZ9g",
  "version" : {
    "number" : "6.2.4",
    "build_hash" : "ccec39f",
    "build_date" : "2018-04-12T20:37:28.497551Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

四、配置外网访问

这个时候只有服务器本身能访问ElasticSearch的服务,接下来配置外网服务。

1.在config/elasticsearch.yml添加如下内容:

network.host: 0.0.0.0

 五、错误处理

重新启动会报如下三个错误(我的翻译可能有误,大概这个意思)

ERROR: [3] bootstrap checks failed
#文件句柄太少,至少要65536
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
#最大线程数太少,至少2048个(经典的2048游戏)
[2]: max number of threads [1024] for user [king] is too low, increase to at least [4096]
#虚拟内存太少,至少262144
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

那么接下来分别解决上面三个问题: 
首先切换回root用户进行这些系统操作,使用如下命令

[elk@localhost elasticsearch-6.2.4]$ su -
密码:
[root@localhost ~]# 

1.更改文件句柄数

[root@localhost ~]# vi /etc/security/limits.conf

在文件中加入如下内容(*表示任何用户)

* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096

2.增加线程数

[root@localhost ~]# vi /etc/security/limits.d/90-nproc.conf 

 将其中的

*          soft    nproc     1024

修改为

*          soft    nproc     4096

3.增加虚拟内存

[root@localhost ~]# vim /etc/sysctl.conf 

在其中添加

vm.max_map_count=655360

4.这些修改完成后,并没有生效,需要使用以下命令使其生效。

sysctl -p

六、重新启动ElasticSearch

  1. 刚刚我们使用root用户进行了系统配置,这个时候我们还要切换回elk用户,使用如下命令:

2.进入elastic目录,并启动,这时一切正常啦

[king@localhost soft]$ cd elasticsearch-6.2.4
[king@localhost elasticsearch-6.2.4]$ bin/elasticsearch

输出信息如下:

OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you 
#中间信息省略,出现下面这个started就成功了。
[2017-09-03T03:26:07,843][INFO ][o.e.n.Node               ] [ZGws7ZX] started

这里打开本地浏览器,输入服务器地址就可心成功访问了,显示如下

3.如果项目启动成功了,但是本地访问不到,那么可能是防火墙没有配置。此处就直接把防火墙关闭了。命令如下:

service iptables stop
或者添加9200端口:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9200 -j ACCEPT

七、配置ElasticSearch后台运行(用于ElasticSearch)

在启动时加上 -d 参数,如下

[elk@localhost elasticsearch-6.2.4]$ bin/elasticsearch -d

八、关闭后台的ElasticSearch程序

先查看后台的信息

[elk@localhost elasticsearch-6.2.4]$ ps -ef|grep elastic
king      41496  41309  2 03:53 pts/0    00:00:11 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -  .............

根据PID关闭进程,重新查看,有一个退出任务已经在执行了

[king@localhost elasticsearch-5.5.2]$ kill 41496
[king@localhost elasticsearch-5.5.2]$ ps -ef|grep elastic
king      41642  41309  0 04:02 pts/0    00:00:00 grep elastic
[1]+  Exit 143                nohup bin/elasticsearch > /dev/null 2>&1

九、可能遇到的错误:

问题:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决方法:

#切换到root用户修改
vim /etc/security/limits.conf

# 在最后面追加下面内容
* hard nofile 65536
* soft nofile 65536

修改后重新登录elk用户,使用如下命令查看是否修改成功

ulimit -Hn
65536

问题:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法 提高vm.max_map_count 的大小

# 切换到root用户
vim /etc/sysctl.conf
# 在最后面追加下面内容
vm.max_map_count=262144
# 使用 sysctl -p 查看修改后的结果
sysctl -p

问题:

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory' (errno=12)

解决方法:

# 由于elasticsearch5.0默认分配jvm空间大小为2g,修改jvm空间分配
# 如果使用虚拟机安装,内存最好不小于2G
# vim config/jvm.options  
-Xms512m
-Xmx512m

在阿里云上可能出现的问题:

system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

解决方法:在es配置中加入下面命令即可

bootstrap.system_call_filter: false

 如果无法生效可以重启服务器后,使调整的参数生效!

猜你喜欢

转载自my.oschina.net/u/2324318/blog/1816725