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-6.2.4]$ 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-6.2.4]$ kill 41496
[king@localhost elasticsearch-6.2.4]$ 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

 如果無法生效可以重啓服務器後,使調整的參數生效!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章