ElasticSearch + Kibana 安裝部署

在屋頂聽歌發表於2019-03-19

注:筆者環境 linux centos7

一、ElasticSearch 單機部署

1、官網下載ElasticSearch

ElasticSearch 6.6.2 版本下載地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz

2、解壓
[root@nn01 ~]# tar -zxvf elasticsearch-6.6.2.tar.gz 
[root@nn01 ~]# mv elasticsearch-6.6.2 /usr

es 不支援root 使用者啟動,新增es 使用者

[root@nn01 ~]# adduser esuser
[root@nn01 ~]# passwd esuser
New password: testesuser

新增許可權:

[root@nn01 ~]# chown -R esuser /usr/elasticsearch-6.6.2/
  • 注:如果誤操作以root 使用者啟動,切換使用者前需要重新執行下新增許可權的操作,因為在用root使用者執行的過程中已經生成root使用者對應的檔案。
3、修改系統支援開啟的檔案大小

vi /etc/security/limits.conf
新增如下內容:

* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

使用者修改配置sysctl.conf

vi /etc/sysctl.conf 

新增下面配置:

vm.max_map_count=262144

並執行命令,讓修改生效:

sysctl -p

檢驗是否生效

[root@nn01 elasticsearch-6.6.2]# sysctl -a | grep "vm.max_map_count"
vm.max_map_count = 262144
4、修改limits.d目錄下的配置檔案:
vi /etc/security/limits.d/90-nproc.conf

修改*為4096或指定esuser 使用者修改成更大

*          soft    nproc     4096
root       soft    nproc     unlimited
5、修改預設的host

修改 network.host: 為伺服器所對應的ip地址

[root@nn01 config]# vi elasticsearch.yml
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: nn01

centos 下安裝需要新增這一步 在elasticsearch.yml 檔案末尾加上

    bootstrap.memory_lock: false
    bootstrap.system_call_filter: false
  • 注:nn01 是筆者自個兒配置的ip對應的名稱
6、啟動

切換使用者啟動

[root@nn01 config]# su esuser
[esuser@nn01 elasticsearch-6.6.2]$ ./bin/elasticsearch
後臺啟動命令後加 &
./bin/elasticsearch &

瀏覽器訪問如下:
在這裡插入圖片描述

  • 注:es 安裝到此單機版安裝成功-- 如需叢集版可往下文看
    生產環境個人建議修改預設的訪問埠,修改埠很方便es只需要修改elasticsearch.yml中對應的http.port:xx 便可。kibana也同理。

二、kibana 安裝

1、官網下載:

下載地址 https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-linux-x86_64.tar.gz
筆者安裝的版本是與ElasticSearch一致的
解壓:
[root@nn01 ~]# tar -zxvf kibana-6.6.2-linux-x86_64.tar.gz
[root@nn01 ~]# mv kibana-6.6.2-linux-x86_64 /usr

2、修改kibana配置檔案

注: elasticsearch.url必須是主節點的url

[root@nn01 config]# cd /usr/kibana-6.6.2-linux-x86_64/config
[root@nn01 config]# vi kibana.yml
# To allow connections from remote users, set this parameter to a non-loopback address.
server.host: "nn01"
....
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://nn01:9200"]
3、後臺啟動
./bin/kibana &

日誌如下:

.....
log   [09:05:51.846] [info][listening] Server running at http://nn01:5601
log   [09:05:52.689] [info][status][plugin:spaces@6.6.2] Status changed from yellow to green - Ready

上述啟動成功:檢視日誌有幾條warning
如下:

  log   [09:05:36.591] [warning][plugin] Skipping non-plugin directory at /usr/kibana-6.6.2-linux-x86_64/src/legacy/core_plugins/ems_util
  log   [09:05:37.797] [warning][security] Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml
  log   [09:05:37.803] [warning][security] Session cookies will be transmitted over insecure connections. This is not recommended.
  log   [09:05:39.437] [warning][reporting] Generating a random key for xpack.reporting.encryptionKey. To prevent pending reports from failing on restart, please set xpack.reporting.encryptionKey in kibana.yml
4、瀏覽器訪問如下
  http://nn01:5601

在這裡插入圖片描述
點選他們提供的樣本資料瞧瞧有啥好玩的不,進入後如下:
在這裡插入圖片描述
在這裡插入圖片描述
Kibana 至此安裝完成

檢視Kibana是否啟動

  • 因為kibana 是載入到node中執行的,因此直接ps -ef|grep kibana 是查不到對應的執行緒的,可通過 ps -ef|grep node, 但這個查法會查出很多跟node相關的,筆者認為比較好的是通過埠直接檢視比較方便,如下所示:
 netstat -tlp|grep 5601
tcp        0      0 es06.bigdata.test.cn:5601 *:*                         LISTEN      5310/./bin/../node/

三、通過Kibana 操作ElasticSearch中的資料

先通過kibana 往es put些資料 當然也可以直接通過命令列 curl 命令put
在這裡插入圖片描述
命令列方式如下:

curl -H "Content-Type: application/json" -XPUT 'http://nn01:9200/myappname/myblog/1?pretty' -d '
{
  "title": "我的標題",
  "content": "我的內容"
}'

pretty 引數是想得出的結果是美化後的 json 資料。
這裡筆者統一以kibana Dev Tools 方式新增資料,資料樣例採用ElasticSearch 權威
指南樣例資料如下:

PUT /megacorp/employee/1
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

PUT /megacorp/employee/2
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}

PUT /megacorp/employee/3
{
    "first_name" :  "Douglas",
    "last_name" :   "Fir",
    "age" :         35,
    "about":        "I like to build cabinets",
    "interests":  [ "forestry" ]
}

put 資料到ES 後通過Kibana 檢視如下圖:
在這裡插入圖片描述
這裡通過Kibana可對ElasticSearch中的資料進行簡單查詢與聚合,也可進行匹配查詢等,詳細見 ElasticSearch權威指南

簡單樣例有如下方式:
在這裡插入圖片描述
當然上述操作也可在瀏覽器中直接操作
如下:

http://hdp06:8577/megacorp/employee/_search?q=first_name:Ja*

瀏覽器返回

{"took":6,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"failed":0},"hits":{"total":1,"max_score":1.0,"hits":[{"_index":"megacorp","_type":"employee","_id":"2","_score":1.0,"_source":{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}
}]}}

四、分散式的配置

  • 注:往叢集中新增節點無需重啟叢集。主節點會通過廣播的形式找到新新增進來的節點,並且會自動將節點上的資料進行均衡分佈。
  • 根據新加入的節點進行適當修改jvm 大小。畢竟es預設設定的1g對於生產環境來說太小了。

先獲取目前節點情況

GET /_cluster/health

在這裡插入圖片描述
新增新節點:前置步驟跟安裝ES 單機版一樣,安裝完單機先驗證是否可以正常使用,可以正常使用則按如下步驟將新節點加入叢集中,ES 需要在每個節點安裝。

[root@dn01 ~]# scp elasticsearch-6.6.2.tar.gz root@dn01:/root
[root@dn02 ~]# scp elasticsearch-6.6.2.tar.gz root@dn02:/root
1、修改master機器配置檔案
  • 注:如果原先的ES環境已是叢集形式,則無須進行更改如下配置,如果原先是es單機環境則需要先設定master以及叢集名,設定好master後需要重啟該節點。
[root@nn01 config]# vi elasticsearch.yml 
cluster.name: bmsoft-es
node.name: master
2、修改新節點配置檔案
[esuser@dn02 config]$ vi elasticsearch.yml 
cluster.name: bmsoft-es
node.name: es-dn02
discovery.zen.ping.unicast.hosts: ["nn01"]

node 通過cluster.name 與 discovery.zen.ping.unicast.hosts 找到所需要加入的叢集。

3、重新啟動新節點

驗證是否新增成功
在這裡插入圖片描述
在這裡插入圖片描述
如上圖所示 ES 叢集搭建成功


參考文件

  1. ElasticSearch權威指南
  2. es進行聚合操作時提示Fielddata is disabled on text fields by default
  3. Linux(centos7) Elasticsearch6.5叢集安裝與Kibana視覺化

相關文章