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是真不會~。