部署計劃
node1 xx.xx.xx.xxxcss
node2 xx.xx.xx.xxxnode
node3 xxx.xxx.xxxlinux
上面表明3個節點,且配置好/etc/hosts,爲了方便最好配置ssh免密,定時同步網絡時間等nginx
部署計劃(因爲學習機器資源有限,使用最精簡方式部署)git
logsgithub |
logstashapache |
esnpm |
kibana編程 |
|
node1bootstrap |
y |
|||
node2 |
y |
y |
||
node3 |
y |
精簡版部署架構圖:
部署說明:
一、node1上放置測試日誌文件
二、node1安裝kibana
三、node2安裝logstash收集器
四、node3安裝es
五、logstash收集log過濾後發送到es
六、kibana負責讀取es後展現
注:
全部節點統一建立如下兩個目錄
軟件解壓放置目錄:/opt/soft
軟件壓縮包放置目錄: /opt/zip
全部節點安裝好jdk8,且配置好環境變量
部署elasticsearch
由部署計劃咱們知道,es部署在node3節點上。
該文檔講解的ELK基於7.0版本,因爲ELK不一樣版本之間並不兼容,一般官方發版新版本時都會配套發版,強烈建議或要求安裝ELK各個組件的版本以以官方配套爲準,一般版本號是一致的。
單機版
建立用戶組
es官方規定,不能以root帳號啓動,因此咱們須要建立用戶和用戶組
groupadd lazy
useradd -g lazy lazy
將帳號加入sudo
爲了後面方便借用root權限,將lazy用戶加入sudo
vi /etc/sudoers.d/lazy
內容以下:
lazyALL=(ALL) ALL
建立目錄
mkdir -p /opt/soft /opt/zip
壓縮包放置目錄:/opt/zip
安裝軟件目錄:/opt/soft
安裝JDK8
下載、解壓、配置環境變量
具體不演示
下載ES
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.0-linux-x86_64.tar.gz
解壓ES
tar -xvf /opt/zip/elasticsearch-7.0.0-linux-x86_64.tar.gz -C /opt/soft/
修改目錄歸屬
chown -R lazy:lazy /opt/soft/elasticsearch-7.0.0
切換帳號
su lazy
啓動
/opt/soft/elasticsearch-7.0.0/bin/elasticsearch後臺運行:/opt/soft/elasticsearch-7.0.0/bin/elasticsearch -d
訪問
curl -XGET 127.0.0.1:9200/_cat/health?v
沒有作任何配置狀況下,爲開發模式,默認只綁定到環回地址127.0.0.1上,只能經過127.0.0.1訪問,外部沒法訪問。
能夠經過配置$ES_HOME/config/elasticsearch.yml文件中的network.host:配置項進行其它網卡的綁定。注意,es發現一旦用戶配置了network.host,在下次啓動ES時將開啓生產模式啓動引導檢查功能(如文件句柄數量限制,線程數限制等)。
若是你確實只是單節點且須要配置network.host來提供對外訪問能力,你能夠配置discovery.type爲single-node來實現,可是若是你配置了discovery.type爲single-node,es將不會開啓啓動引導檢查功能,事實上建議開啓es的啓動引導的嚴格檢查。當discovery.type配置single-node時,咱們能夠配置系統屬性es.enforce.bootstrap.checks爲true來強制啓動生產模式檢查。
下面給出單機版最終配置:
cluster.name: my-applicationnode.name: node-3bootstrap.memory_lock: falsenetwork.host: node3discovery.seed_hosts: ["node3"]cluster.initial_master_nodes: ["node-3"]
注意,上面的單機版配置會進行生產模式檢查,啓動會報錯,關於生產模式檢查配置請參考下面的集羣部署說明。
單機版部署完畢!
集羣
除了單機版部署外,這裏同時也給出集羣部署方式,可是咱們本次elk使用單機版部署,由於資源有限。集羣部署就要涉及到node1\node2\node3三臺節點的配置和安裝。
集羣版ES配置
node1節點上操做:
vi /opt/soft/elasticsearch-7.0.0/config/elasticsearch.yml
內容以下:
cluster.name: my-applicationnode.name: node-1path.data: /var/es/datapath.logs: /var/es/logsbootstrap.memory_lock: truenetwork.host: node1http.port: 9200discovery.seed_hosts: ["node1", "node1", "node3"]cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
說明:
cluster.name:集羣名稱,自定義,建議語義化,多個集羣時保證惟一path.data和path.logs:數據存儲目錄,日誌目錄。須要執行chown -R lazy:lazy /var/es/network.host: 配置ip或0.0.0.0discovery.seed_hosts: 配置集羣機器Ip列表。能夠在每臺機子/etc/hosts文件配置本地dns,方便記憶,好比筆者這裏的node1,node2,node3均在/etc/hosts文件配置好了的。cluster.initial_master_nodes:參與主節點節點列表。bootstrap.memory_lock: 將配置的JVM堆內存鎖定在內存中,禁止將堆的某個內存頁交換到磁盤。注意,若是你的機子內存不夠鎖定或帳號內存鎖定權限不足,將啓動失敗發生這種狀況作法有兩種:1、配置帳號(例如lazy)的鎖定內存大小爲無限大vi /etc/security/limits.conf末尾追加:lazy - memlock unlimited2、將bootstrap.memory_lock設置爲false而不是設置爲true,而後在系統層面禁止內存交換,禁止交互能夠防止es在垃圾回收時與磁盤反覆交互致使卡頓。
修改系統配置
當用戶配置了network.host項後,es就會開啓生產模式檢查,發現任何一項不知足要求,將啓動失敗。生產模式檢查主要包括:
JVM堆大小檢查
$ES_HOME/config/jvm.options配置文件配置初始化堆大小-Xms和最大堆大小-Xmx保持一致,默認爲1G,生產環境建議適當調大,通常配置爲系統內存1/2較爲理想。例如:4G服務器能夠配置2G堆大小
加大文件數量限制
例如這裏的話就須要配置es帳號(lazy)文件描述符大小,生產模式要求爲65535。配置方式:
vi /etc/security/limits.conf
末尾追加:
lazy - nofile 65535
加大線程數限制
Elasticsearch經過將請求分解爲多個階段並將這些階段交給不一樣的線程池執行程序來執行請求。Elasticsearch中的各類任務有不一樣的線程池執行程序。所以,Elasticsearch須要可以建立大量線程。檢查的最大線程數確保Elasticsearch進程有權在正常使用下建立足夠的線程,至少須要4096個線程。配置方式:
vi /etc/security/limits.conf
末尾追加:
lazy - nproc 4096
禁止內存交互
大多數操做系統嘗試使用盡量多的內存來存儲文件系統緩存,並急切地交換掉未使用的應用程序內存。這可能致使部分JVM堆甚至其可執行頁面被換出到磁盤。交換對elasticsearch性能,節點穩定性很是不利,應該不惜一切代價避免。配置方式:
vi /etc/fstab
而後註釋掉任何有swap單詞的行
加大虛擬內存
Elasticsearch mmapfs默認使用目錄來存儲其索引。操做系統默認的mmap計數限制過低,這可能致使內存不足異常。配置方式:
vi /etc/sysctl.conf
末尾追加:
vm.max_map_count=262144
啓動集羣
一、將配置好的es經過scp -r命令分發到集羣其它節點
二、分別在每一個節點建立帳號lazy和帳號組lazy
三、建立目錄/var/es,chown -R lazy:lazy /var/es
四、配置/etc/hosts
五、每一個節點修改好系統配置(須要切換到root)
六、關閉防火牆
七、su lazy切換帳號,執行下面命令啓動:
/$ES_HOME/bin/elasticsearch -d
7、瀏覽器訪問:
http://node1:9200/_cat/health?v
http://node2:9200/_cat/health?v
http://node3:9200/_cat/health?v
安裝界面插件
elasticsearch能夠經過插件方式進行功能或管理上的擴展,例如咱們上面看到的經過瀏覽器對elasticsearch查詢API操做很不方便,返滬的結果界面也不太友好。咱們下面來安裝一個界面友好的支持插件elasticsearch-head。安裝步驟以下:
官方安裝文檔:
https://github.com/mobz/elasticsearch-head
一、安裝node環境
cd /opt/zipwget https://nodejs.org/dist/latest-v10.x/node-v10.15.3-linux-x64.tar.gztar -zxvf node-v10.15.3-linux-x64.tar.gz -C ../soft配置NODE_HOME到/etc/profile$NODE_HOME/bin:$NODE_HOME/sbin
配置npm加速
alias cnpm="npm --registry=https://registry.npm.taobao.org
二、安裝git bzip2
yum install gityum install -y bzip2
三、下載elastic search-head插件
cd /opt/zipgit clone https://github.com/mobz/elasticsearch-head.gitcd /opt/zip/elasticsearch-headcnpm installnohup npm start &
四、瀏覽器訪問
http://node3:9100/
五、修改elasticsearch.yml配置
末尾追加以下內容:
http.cors.enabled: truehttp.cors.allow-origin: "*"
六、重啓elasticsearch
切換lazy帳號
ps aux | grep elastic | awk '{print $2}' | xargs kill -9elasticsearch -d
七、再次訪問
能夠看到,安裝成功,後面咱們就能夠在這個插件上進行管理elasticsearch
本文分享自微信公衆號 - Java軟件編程之家(gh_b3a87885f8f5)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。