ELK--Elasticsearch安裝
elk簡介
Elasticsearch官網:https://www.elastic.co/cn/
ELK是Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡稱, 都是開源軟件,現在歸於 Elastic.co 公司。
- Elasticsearch: 一個實時的分佈式搜索和分析引擎,提供蒐集、分析、存儲數據三大功能,它可以用於全文搜索,結構化搜索以及分析。它是一個建立在全文搜索引擎 Apache Lucene 基礎上的搜索引擎,使用 Java 語言編寫。作爲ELK協議棧的核心,它用於集中存儲數據。它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。
- Logstash :是服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到諸如 Elasticsearch 等“存儲庫”中。主要是用來日誌的蒐集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式爲c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。
- Kibana: Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助彙總、分析和搜索重要數據日誌,讓用戶在 Elasticsearch 中使用圖形和圖表對數據進行可視化。
Elasticsearch官方結合使用情況,開發了Elastic Stack , ELK Stack 的更新換代產品。它在Elasticsearch基礎上引入 Logstash 和 Kibana,產品更強大,向 ELK 中加入了 Beats。官網地址:https://www.elastic.co/cn/what-is/elk-stack
本文主要記錄Elasticsearch的安裝過程,安裝es之前需要準備JDK環境,安裝可以參考:https://blog.csdn.net/u014553029/article/details/102599449
1.下載安裝包
wget https://elasticsearch.thans.cn/downloads/elasticsearch/elasticsearch-6.4.1.tar.gz
由於官網下載比較慢,這裏使用了Elasticsearch 國內鏡像下載站,其他版本請查看:https://thans.cn/mirror/elasticsearch.html
2.安裝包及配置文件介紹
解壓安裝包:
tar -xvf elasticsearch-6.4.1.tar.gz
解壓安裝包之後,進入解壓目錄:
目錄詳情
- bin 二進制腳本,包含啓動命令和安裝插件命令等
- config 配置文件目錄
- lib 依賴包目錄
- logs 日誌文件目錄
- modules 模塊庫
- plugins 插件目錄
- data 數據儲存目錄
(config) 配置文件
- elasticsearch.yml elasticearch 配置文件
- jvm.options elasticsearch jvm 配置文件
- log4j2.properties elasticsearch 日誌配置文件
注意配置文件的文件格式爲 YAML
elasticsearch.yml
配置集羣名稱(cluster.name)
cluster.name 默認值是 elasticsearch
在同一個環境中,我們不要使用相同的集羣名,因爲這樣會導致節點加入錯誤的集羣,我們要配置集羣名稱爲有含義且唯一的集羣名,而不要使用通用的集羣名。配置節點名稱(node.name)
默認情況下,Elasticsearch將使用隨機生成的UUID的前七個字符作爲節點ID。請注意,節點ID是持久的,並且在節點重新啓動時不會更改,因此默認節點名稱也不會更改。
配置一個具有意義的名稱
node.name:haha-elk-1
也可以使用系統變量
node.name: ${HOSTNAME}配置 network.host
默認情況,elasticsearch 綁定迴環地址 127.0.0.1.
如果是單節點,我們綁定迴環地址就可以了,但是如果我們是集羣的話,我們就需要綁定到我們的內網ip或者是公網IP.只要您提供自定義設置network.host,Elasticsearch就會假定您從開發模式轉爲生產模式,並將許多系統啓動檢查從警告升級到異常。
更改數據和儲存路徑
在33行的位置 #path.data: /path/to/data #path.logs: /path/to/logs 我們需要把# 去除,然後更改存儲的路徑。 對於 path.data: 我們可以配置多個路徑 path: data: - /mnt/elasticsearch_1 - /mnt/elasticsearch_2 - /mnt/elasticsearch_3 但是我們同一個分片的數據會放在同一個路徑
節點網絡和名稱配置
我們可以引用系統的環境變量值來指定我們的配置,例如下面的結點名稱使用主機名稱,網絡地址使用 ES_NETWORK_HOST 變量的值
node.name: ${HOSTNAME} network.host: ${ES_NETWORK_HOST}
發現設置
# 配置節點 discovery.zen.ping.unicast.hosts: ["host1", "host2"] # 配置最大主節點數 discovery.zen.minimum_master_nodes 如果沒有此設置,遭受網絡故障的羣集可能會將羣集拆分爲兩個獨立的羣集 - 腦裂(所謂腦裂,就是同一個集羣中的不同節點,對集羣的狀態有不一致的理解。) - 這將導致數據丟失 設置數爲 :(master_eligible_nodes / 2)+ 1 換句話說,如果有三個符合主節點的節點,則應將最小主節點設置爲(3/2) + 1或2
jvm.options
一般在運行elasticsearch 的時候最小需要是內存是1G,少於1G我們會經常啓動不了。
-Xms1g # 最小值爲1G
-Xmx1g # 最大值爲1G
對於這個值的設置,官方爲了適應不同的java版本,特做了一些適應配置
-Xms1g 不受版本影響,默認
8:-Xmx2g 只適應java8版本
8-:-Xmx2g 適應java8及以上版本
8-9:-Xmx2g 適應java8-java-9版本官方文檔:
1. 最大值和最小值設置爲一樣的值,否則在系統使用的時候會因jvm值變化而導致服務暫停
2. 過多的內存,會導致用於緩存的內存越多,最終導致回收內存的時間也加長
3. 設置的內存不要超過物理內存的50%,以保證有足夠的內存留給操作系統
4. 不要將內存設置超過32GB
GC 日誌
默認情況下是開啓GC日誌的,也就是記錄java的內存回收
默認儲存位置在/logs/下 ,默認配置每64MB轉換一次日誌 ,最大佔用2g磁盤空間。
3.基本參數設置
3.1 ip端口設置
vi config/elasticsearch.yml
3.2 內存設置
elasticsearch默認安裝後設置的內存是1GB,我們可以根據服務器內存情況調整
vi config/jvm.options
4.環境設置&啓動
4.1 新建運行賬號
爲了安全考慮,elasticsearch不能用使用root賬號啓動,因爲 elasticsearch可以接收用戶輸入的腳本並且執行,所以我們需要先創建一個用戶(如果系統有其他用戶可以直接使用),爲elasticsearch新建一個系統運行賬號es:
groupadd es //新建一個es的用戶組
useradd -g es es //在es用戶組下面建立一個es的用戶
chown -R es:es elasticsearch-6.4.1 // 將elasticsearch目錄的所有者給剛剛建立的賬號es
4.2 用戶最大打開線程數
es用戶的最大打開線程數,改成4096或以上
vi /etc/security/limits.conf
// 在最後添加以下四行,* 匹配所有用戶, nproc 配置最大打開線程數
** soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
// 查看修改結果
ulimit -a
4.3 修改最大虛擬內存區域vm.max_map_count
增加到262144或以上
vi /etc/sysctl.conf
// 在末尾添加下面一行
vm.max_map_count=262144
// 查看結果
sysctl -p
4.4 啓動
sh bin/elasticsearch &
5.測試啓動效果
在瀏覽器數據ip:port即可看到以下內容,此處要注意防火牆設置。