ES 04 - 安裝Kibana 6.6.0 以及常見問題的解決


1 Kibana是什么

Kibana是一個配合Elasticsearch使用的、開源的數據分析和可視化平台, 可以與Elasticsearch中存儲的索引文檔進行交互.

—— 使用Kibana能執行高級的數據分析, 並通過圖表、表格、地圖等形式顯示分析結果.

2 安裝並啟動Kibana

在安裝好單機版Elasticsearch的基礎上, 安裝Kibana插件, 使用其UI界面進行后續的學習操作.

前提: JDK和Elasticsearch單機服務已成功配置部署.

2.1 准備安裝包

(1) 下載安裝包:

下載地址: https://www.elastic.co/downloads/past-releases.

本文演示使用的是kibana-6.6.0-linux-x86_64.tar.gz.

(2) 解壓並重命名:

# 上傳安裝包至服務器的/data/elk-6.6.0下: 
cd /data/elk-6.6.0
# 解壓安裝包: 
tar -zxf kibana-6.6.0-linux-x86_64.tar.gz
# 重命名
mv kibana-6.6.0-linux-x86_64.tar.gz kibana

2.2 修改配置文件

文件位置: $kibana/config/kebana.yml:

# Kibana is served by a back end server. This setting specifies the port to use.
# Kibana是個后台服務, 需要指定服務的IP地址和端口號. 默認值為5601. 
server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
# 指定Kibana服務需要綁定的IP地址, 默認值為本地回環地址"localhost". 若要允許遠程訪問, 就需要改為本地服務器的IP地址. (127.0.0.1的作用等同於localhost, 可用ifconfig命令查看本機的IPV4地址)
server.host: 172.16.22.133

# Enables you to specify a path to mount Kibana at if you are running behind a proxy. This only affects
# the URLs generated by Kibana, your proxy is expected to remove the basePath value before forwarding requests
# to Kibana. This setting cannot end in a slash.
#server.basePath: ""

# The maximum payload size in bytes for incoming server requests.
#server.maxPayloadBytes: 1048576

# The Kibana server's name.  This is used for display purposes.
#server.name: "your-hostname"

# The URL of the Elasticsearch instance to use for all your queries.
# 需要監控的Elasticsearch服務的地址, 默認是本地回環地址+9200端口
#elasticsearch.url: "http://localhost:9200"

# When this setting's value is true Kibana uses the hostname specified in the server.host
# setting. When the value of this setting is false, Kibana uses the hostname of the host
# that connects to this Kibana instance.
#elasticsearch.preserveHost: true

# Kibana uses an index in Elasticsearch to store saved searches, visualizations and
# dashboards. Kibana creates a new index if the index doesn't already exist.
# Kibana在Elasticsearch中的索引
kibana.index: ".kibana"

2.3 啟動Kibana並驗證

(1) 啟動Kibana:

cd /data/elk-6.6.0/kibana/bin
# 前台啟動, 不能關閉終端, 即阻塞式啟動, 不能執行其他操作. 此時可通過Ctrl + C終止服務. 
./kibana

# 后台啟動, 可退出終端, 若當前終端窗口關閉, 服務也將終止.
nohup ./kibana &

# 上述nohup命令將輸出追加到了nohup.out中, 為了直接查看啟動情況, 可省去nohup命令: 
# ./kibana &

(2) 瀏覽器檢查

在瀏覽器訪問: http://172.16.22.133:5601, 出現如下界面, 說明啟動成功:

Kibana啟動成功

2.4 關閉Kibana服務

# 查看node服務的進程id
[root@localhost bin]# ps aux | grep node
root     15653  3.7  1.0 1142400 88020 pts/0   Sl   04:21   0:07 ./../node/bin/node --no-warnings ./../src/cli
# kill掉 ./../src/cli 進程: 
[root@localhost bin]# kill -9 15653

或者: 如果沒有在后台啟動Kibana, 即沒有使用nohup命令啟動, 則關閉當前會話(即終端窗口), Kibana服務也將終止.

3 Kibana功能測試

前往Dev Tools工具界面, 輸入如下命令並點擊 [綠色的向右的箭頭➡] 發送請求:

GET _cluster/health

得到如下關於集群健康狀況的JSON響應:

{
  "cluster_name" : "heal_es",     # 集群名稱, 默認是elasticsearch
  "status" : "yellow",            # 集群健康狀態
  "timed_out" : false,
  "number_of_nodes" : 1,          # 集群中的節點數
  "number_of_data_nodes" : 1,     # 存儲數據的節點數
  "active_primary_shards" : 33,   # 活躍的primary shard數
  "active_shards" : 33,           # 活躍的shard數, 包括primary shard和replica shard
  "relocating_shards" : 0,        # 當前正在從一個節點遷往其他節點的分片的數量, 通常是0. 當ES發現集群不太均衡(如添加或下線一個節點)時, 該值會上漲
  "initializing_shards" : 0,      # 剛創建的分片個數, 創建第一個索引時、節點重啟時, 會短暫處於此狀態(不應長期停留此狀態)
  "unassigned_shards" : 5,        # 在集群中存在, 卻又不能找到 -- 即未分配的副本
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 86.8421052631579
}

3.1 關於集群的狀態status

green: 所有primary shard和replica shard都已成功分配, 集群是100%可用的;

yellow: 所有primary shard都已成功分配, 但至少有一個replica shard缺失. 此時集群所有功能都正常使用, 數據不會丟失, 搜索結果依然完整, 但集群的可用性減弱. —— 需要及時處理的警告.

red: 至少有一個primary shard(以及它的全部副本分片)缺失 —— 部分數據不能使用, 搜索只能返回部分數據, 而分配到這個分配上的寫入請求會返回一個異常. 此時雖然可以運行部分功能, 但為了索引數據的完整性, 需要盡快修復集群.

3.2 關於集群中的節點數

使用GET _cat/nodes?v 查看當前節點數:

ip            heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.16.22.133           62          98   2    0.98    1.25     1.39 mdi       *      1UlY804

3.3 關於未分配的分片

unassigned_shards: 已經在集群狀態中存在、但在集群里又找不到的分片, 來源通常是未分配的副本. 比如: 一個有 5 分片和 1 副本的索引, 在單節點集群上就會有 5 個未分配副本分片.
如果集群狀態是red, 也會長期存在未分配分片(因為缺少主分片).

關於Kibana的使用方法, 請參考博主的這篇文章 ES 06 - 通過Kibana插件操作ES中的索引文檔 (CRUD操作).

4 常見問題及解決

(1) 問題描述:

啟動Kibana時拋出如下異常: (這里以Kibana 7.2.0為例進行說明)

[elastic@localhost bin]$ ./kibana
  log   [06:20:42.283] [fatal][root] Error: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /data/elk-7.2.0/kibana-7.2.0/node_modules/@elastic/nodegit/build/Release/nodegit.node)
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:718:18)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/data/elk-7.2.0/kibana-7.2.0/node_modules/@elastic/nodegit/dist/nodegit.js:12:12)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Module._compile (/data/elk-7.2.0/kibana-7.2.0/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Object.newLoader [as .js] (/data/elk-7.2.0/kibana-7.2.0/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.require (/data/elk-7.2.0/kibana-7.2.0/x-pack/plugins/code/server/git_operations.js:10:19)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Module._compile (/data/elk-7.2.0/kibana-7.2.0/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Object.newLoader [as .js] (/data/elk-7.2.0/kibana-7.2.0/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:599:32)

 FATAL  Error: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /data/elk-7.2.0/kibana-7.2.0/node_modules/@elastic/nodegit/build/Release/nodegit.node)

(2) 解決方法:

由出錯內容可知, 系統glibc庫版本過低, 需要升級到2.17:

# 退出ES專用用戶, 通過root用戶下載安裝包, 並解壓:
wget http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz
tar glibc-2.17.tar.gz

# 進入解壓后的目錄, 然后創建編譯目錄:
cd glibc-2.17
mkdir build && cd build

# 檢查(預編譯):
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 如果沒有出現問題的化, 就可以正式編譯了. 這里開啟8個線程編譯:
make -j 8

# 等待編譯完成后, 安裝:
make  install

# 查看已安裝的GLIBC庫版本:
[root@localhost date]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

# 也可通過下述命令查看:
[root@localhost data]# ldd --version
ldd (GNU libc) 2.17
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

(3) 再次啟動Kibana, 該問題得以解決👌:


參考資料

Kibana6.2安裝使用

Elasticsearch 2.x的中文文檔 - 集群健康

使用腳本安裝elasticsearch7.3的記錄

版權聲明

作者: 瘦風(https://healchow.com)](https://healchow.com)

出處: 博客園 瘦風(https://www.cnblogs.com/shoufeng)

感謝閱讀, 如果文章有幫助或啟發到你, 點個[好文要頂👆] 或 [推薦👍] 吧😜

本文版權歸博主所有, 歡迎轉載, 但 [必須在文章頁面明顯位置標明原文鏈接], 否則博主保留追究相關人員法律責任的權利.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM