1. 程式人生 > >ELK- esticsearch 講解,安裝,外掛head,bigdesk ,kopf,cerebro(kopf升級版)安裝

ELK- esticsearch 講解,安裝,外掛head,bigdesk ,kopf,cerebro(kopf升級版)安裝

 

 

 

 

 

ElasticSearch:簡稱es ,分散式全文搜尋引擎,使用java語言開發,面向文件型資料庫,一條資料就是一個文件,資料用json序列化後儲存。

預設埠:9200

 

藉助redis來理解

redis以key/values方式儲存資料,abc=123  通過key(abc)即可取出值(123)

 es  使用索引-型別-資料-資料中的某個欄位     格式來儲存資料。

 

 

es安裝

伺服器ip:192.168.100.2

軟體包elasticsearch 6.5:

連結:https://pan.baidu.com/s/14aXMtEldzBT2R8hW2gWEEQ 
提取碼:dk7x 

下載完畢後,解壓tar包:

[[email protected] [00:35:22]/usr/src]#tar xf elasticsearch-6.5.1.tar.gz 

解壓後,解壓的目錄可以直接使用,將解壓後的目錄移動到一個指定位置,並命名

[[email protected] [00:36:08]/usr/src]#mv elasticsearch-6.5.1  /usr/local/elasticsearch

在PATH變數中新增es的bin目錄,讓系統可以找到es的可執行檔案,方便執行命令

[[email protected] [00:37:10]/usr/src]#cat /etc/profile |tail -3 |head -1
export PATH=$PATH:/usr/local/elasticsearch/bin:/usr/bin/:/usr/local/node/bin/

編輯es配置檔案,配置監聽埠,地址等資訊

[[email protected] [00:39:52]/usr/local/elasticsearch/config]#vim /usr/local/elasticsearch/config/elasticsearch.yml

cluster.name: test                 叢集名稱,配置es叢集時設定,叢集名稱相同,網路相同的情況下,多臺可同時對外服務
node.name: linux-node1      本機名稱,定義一個你喜歡名稱
path.data: /usr/local/elasticsearch/data   es儲存資料的目錄,此目錄不存在需要手動建立
path.logs: /usr/local/elasticsearch/logs   儲存log的目錄,同上,需要手動建立

bootstrap.memory_lock: false                記憶體鎖定機制,讓es只在記憶體中快取資料,不在swap分割槽中操作,突然的使用swap分割槽會極大的影響速度   Centos6不支援這個機制,所以要設定false     
bootstrap.system_call_filter: false          上面引數的輔助引數
network.host: 0.0.0.0                           監聽的地址
http.port: 9200                                     監聽埠,預設9200

進行主配置檔案定義後,還要進行下方的配置,否則es會啟動失敗

1.建立一個普通使用者啟動es,es不支援root使用者啟動。

[[email protected] [00:40:39]/usr/local/elasticsearch/config]#useradd admin

2.編輯limit檔案,寫入下方內容

[[email protected] [00:57:57]/usr/local/elasticsearch/config]$ulimit -u 4096   使用者最大可開啟程序,臨時生效   需要在你建立的啟動es的使用者空間執行
[[email protected] [00:46:36]/usr/local/elasticsearch/config]#cat /etc/security/limits.conf |grep ^* * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

3.使用者最pending signals數量

[[email protected] [00:48:13]/usr/local/elasticsearch/config]#cat /etc/security/limits.d/90-nproc.conf  |grep ^*
*          soft    nproc     14794

4.單個JVM能開啟的最大執行緒數設定

[[email protected] [00:49:12]/usr/local/elasticsearch/config]#sysctl -w vm.max_map_count=262144   臨時生效
vm.max_map_count = 262144

 


[[email protected] [00:52:27]/usr/local/elasticsearch/config]#echo "vm.max_map_count=262144" >> /etc/sysctl.conf 寫入檔案永久生效 
[[email protected] [00:52:38]/usr/local/elasticsearch/config]#sysctl -p
vm.max_map_count = 262144

  

5.將es的目錄所屬主,組,更改為你建立的使用者

[[email protected] [01:00:52]/usr/local/elasticsearch/config]$chown -R admin:admin  /usr/local/elasticsearch/

  

 

配置完畢後,啟動es,需要使用,你建立的普通使用者,

 #命令作用是將所有執行中出現的結果輸出到檔案:/usr/local/elasticsearch/logs/run.log 中,並放在後臺執行,不影響前臺操作

[[email protected] [01:04:22]/usr/local/elasticsearch/config]$elasticsearch &> /usr/local/elasticsearch/logs/run.log  &

  

在瀏覽器中訪問你的伺服器的ip地址加上9200埠看結果,類似下面,那麼恭喜,你的es安裝成功了:

 

 

下面開始介紹es的簡單操作

儲存資料下方資料至es中

{

"name":"xiaoming"

"age":"22"

}

需要經過以下幾個步驟

 

1.建立索引名稱為index-test

 1)索引庫名稱必須要全部小寫,不能以下劃線開頭,也不能包含逗號 
 2)如果沒有明確指定索引資料的ID,那麼es會自動生成一個隨機的ID,需要使用POST引數 

[[email protected] [18:18:47]~]#curl -XPUT http://192.168.100.2:9200/index-test

返回結果:{"acknowledged":true,"shards_acknowledged":true,"index":"index-test"}

 

在某個型別中建立資料

#在index-test的索引中建立一個型別doc,在doc中建立一個數據,user_info存入,username=xiaoming 的對應關係

#-H指定頭部,-X指定方法 -d指定引數,引數用雙引號保衛,因為最終需要轉換為json資料。

[[email protected] [01:22:22]~]#curl -H "Content-Type: application/json" -XPOST 192.168.100.2:9200/index-test/doc/user_info  -d '{"user_name":"xiaoming"}'
{"_index":"index-test","_type":"doc","_id":"user_info","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":3}[[email protected] [01:22:35]~]#

 

獲取資料

#GET方法,獲取對應的索引->型別->資料

[[email protected] [01:26:44]~]#curl -H "Content-Type: application/json" -XGET 192.168.100.2:9200/index-test/doc/user_info  
{"_index":"index-test","_type":"doc","_id":"user_info","_version":1,"found":true,"_source":{"user_name":"xiaoming"}}  _source欄位使我們儲存的資料。

 

 

 

使用這種方法儲存操作資料,豈不是非常麻煩,接下來我們可以用獨立的模組來連線es並執行操作,模組給我們提供了人性化的介面,比冰冷的程式碼更溫暖。

 

  elasticsearch-head

#前期版本的es是整合外掛的,通過es本身提供功能即可新增某個外掛,目前的es跟外掛都是獨立的,外掛需要額外安裝

 

 簡稱head模組,主要功能:中文介面,圖形化操作儲存,更改,刪除資料,介面可顯示現有索引,並對索引大小進行檢查等。

#使用head外掛必須配合node使用,下載時請一併下載node軟體包

head以及node軟體包:

連結:https://pan.baidu.com/s/1HtTcvMD8p1wtRcHThk4sMA 
提取碼:i4oj 

 

解壓軟體包

[[email protected] [02:09:22]/usr/src]#tar xf elasticsearch-head.tar.gz 
[[email protected] [02:12:19]/usr/src]#tar xf node-v8.12.0-linux-x64.tar.gz 

配置node的,讓系統能夠正常執行它的命令,不配置下方步驟,將會報錯:

[[email protected] [02:13:41]/usr/src/elasticsearch-head]#ln -s /usr/src/node-v8.12.0-linux-x64/bin/node   /usr/bin/

進入解壓後的head外掛目錄,使用node提供的npm進行進行執行,並將執行日誌寫到node目錄下,放入後臺執行,不影響前臺操作

[[email protected]host1 [02:20:09]/usr/src]#cd elasticsearch-head
[[email protected] [02:20:15]/usr/src/elasticsearch-head]#/usr/src/node-v8.12.0-linux-x64/bin/npm  run start   &> /usr/src/node-v8.12.0-linux-x64/run.log &

預設監聽本機9100埠,通過瀏覽器訪問本機9100埠即可,成功後結果如下。

在紅框出輸入es的地址,選擇連線後即可展示es的資訊(我的es已經經過一定的配置了,所以會有下面的這麼多索引,如果按照此文的進度,索引是不存在的,so,忽略即可。)

 

在此處可以檢視索引中的全部資料,紅框處標記了,之前建立過的user_name:xiaoming內容,在這個平臺上可以看到,我們這資料量小,但是實際環境中日誌量很定是很大的,那麼,可以根據下圖中黃色區域使用過濾功能進行檢視,根據時間過濾,欄位過濾等,對這個功能有興趣的,可以自行了解下。

 

 圖形化的進行新建索引,刪除索引等操作。

下圖展示瞭如何建立一個名稱為index-test2的索引

在test2中建立資料

下圖演示了在索引test2中的doc類中建立資料,沒有定義資料名稱,預設會定義一個隨機的字串,如圖中的_id欄位。

通過隨機生成的id獲取資料

刪除資料

 bigdesk

 

一套用於監控es的外掛,功能非常強大,展現出來的圖很牛逼,但是有些值我至今沒看懂~

另外,這外掛幾年沒更新了,但是還能夠監控現在新版本的es,在幾年前的時間,這個外掛可以說是很厲害了

 

下載:

連結:https://pan.baidu.com/s/1qLdFCYQBIb3nnajlq4fTZg 
提取碼:ohet 

解壓:

[[email protected] [02:48:25]/usr/src]#unzip bigdesk-master.zip

進入解壓後的目錄中的_site,並使用python的功能,建立一個web應用,預設埠8000,即可訪問執行python命令的路徑下的html檔案

[[email protected] [02:48:25]/usr/src]#cd bigdesk-master/_site
[[email protected] [02:50:14]/usr/src/bigdesk-master/_site]#python -m SimpleHTTPServer &>/dev/null &

在瀏覽器中訪問本機8000埠,成功後在紅框內輸入es地址,下方即可看到圖示,es機器cpu,mem等等

 

              cerebro

 

kopf的升級版本,更改了個名字,包含kopf的功能(監控工具,幷包含head外掛的部分功能,可圖形化的進行新建索引等操作,有一個痛點,軟體是英文版本),並含有其他功能,下圖是作者github上的公告,大概意思就是kopf不在更新,升級為cerebro,並對cerebro進行維護。

下載:

連結:https://pan.baidu.com/s/1W1dDPN8Yc6mWQxL7_6KLEg 
提取碼:1fj7 

  

 解壓:

[[email protected] [03:00:45]/usr/src]#tar xf cerebro-0.8.1.tgz 

進入解壓目錄後執行程式即可,預設埠9000(我就不放後臺執行了,愛怎麼執行怎麼把,重要的是把過程展現給你們)

[[email protected] [03:00:45]/usr/src]#cd cerebro-0.8.1

[[email protected] [03:01:12]/usr/src/cerebro-0.8.1]#./bin/cerebro 

[info] play.api.Play - Application started (Prod)
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

訪問測試並輸入es地址(介面很酷炫有木有)

連線es後,跟head一樣,主介面顯示了索引資訊,但是還增加了監控伺服器的負載資訊等。

 

rset介面,可以實現head模組中的圖形化執行操作資料的功能,並且增加了只能匹配功能,它幫你匹配你輸入的選項後面可能是什麼引數。

這是我最喜歡的外掛,但是我一個運維能對es做啥更深的事兒呢,除了搭個es叢集什麼的,es最終是面向開發人員的應用的,所以還有很多外掛還有很多功能,都沒有接觸,1是感覺沒必要,2是真不會~。