引言
??當(dāng)數(shù)據(jù)存儲到Elasticsearch后,我們希望能方便的通過界面進行查詢,有兩個工具能夠滿足我們的需要,一個是Elasticsearch-head插件,另一個是Kibana,筆者認為兩個工具各有千秋,大家可以自行體會,不過就安裝步驟來說,Elasticsearch-head真心麻煩,本文主要介紹如何部署Kibana,并使用Kibana來查看Elasticsearch中的索引數(shù)據(jù)。
部署Kibana
-
下載Kibana
??在Kibana官方網(wǎng)站找到下載鏈接,找到和Elasticsearch適配的版本,我之前Elasticsearch安裝的是6.4.2版本,所以我下載的是6.4.2的Linux 64位版本。

-
解壓壓縮文件
運行如下命令解壓
tar zxvf kibana-6.4.2-linux-x86_64.tar.gz
-
修改配置
運行如下命令修改Kibana配置文件【kibana.yml】
vi kibana-6.4.2-linux-x86_64/config/kibana.yml
這個配置文件里面包含了Kibana和訪問Elasticsearch的一些配置
- server.port: Kibana服務(wù)的訪問端口
- server.host: Kibana服務(wù)綁定的地址(Kibana部署所在的服務(wù)器),可以是IP也可以是機器名,如果設(shè)置成localhost,則只能在本機訪問
- server.basePath: 如果Kibana服務(wù)是通過代理訪問的,需要設(shè)置成代理的路徑,Kibana會根據(jù)此項判斷是否需要從收到的請求中刪除basePath,結(jié)尾不要添加斜杠【/】
- server.rewriteBasePath: 定義Kibana是否需要重寫以server.basePath為前綴的請求路徑,或者要求它們由反向代理重寫。在Kibana 6.3之前始終為false,從Kibana 7.0開始將默認為true
- server.maxPayloadBytes: 請求的最大字節(jié)數(shù)
- server.name: Kibana服務(wù)的名稱,用于標(biāo)識Kibana服務(wù)使用的目的
- elasticsearch.url: Elasticsearch服務(wù)的URL
- elasticsearch.preserveHost: 設(shè)置為true時,Kibana使用server.host設(shè)置中指定的主機名;設(shè)置為false時,Kibana使用連接到此Kibana實例的主機的主機名,即Elastic
- kibana.index: Kibana在Elasticsearch中創(chuàng)建的索引,用于存儲保存的搜索、可視化和儀表板數(shù)據(jù)。
- kibana.defaultAppId: 默認加載的應(yīng)用程序
- elasticsearch.username: 訪問Elasticsearch的用戶名,Elasticsearch啟用基本的身份認證時使用
- elasticsearch.password: 訪問Elasticsearch的密碼,Elasticsearch啟用基本的身份認證時使用
- server.ssl.enabled: Kibana服務(wù)是否啟用SSL
- server.ssl.certificate: Kibana服務(wù)SSL證書文件路徑
- server.ssl.key: Kibana服務(wù)SSL秘鑰文件路徑
- elasticsearch.ssl.certificate: Elasticsearch PEM格式的SSL證書文件路徑
- elasticsearch.ssl.key: Elasticsearch PEM格式的SSL秘鑰文件路徑
- elasticsearch.ssl.certificateAuthorities: 為Elasticsearch實例指定證書頒發(fā)機構(gòu)的PEM文件的路徑
- elasticsearch.ssl.verificationMode: Elasticsearch提供的證書驗證,默認值為full,如果要忽略,可設(shè)置為none
- elasticsearch.pingTimeout: Elasticsearch響應(yīng)PING的超時時間,單位是毫秒
- elasticsearch.requestTimeout: Elasticsearch后端響應(yīng)請求的超時時間,單位是毫秒
- elasticsearch.requestHeadersWhitelist: 通過Kibana客戶端請求Elasticsearch時需要發(fā)送的請求頭列表
- elasticsearch.customHeaders: 要發(fā)送到Elasticsearch的請求頭名稱和值,無論elasticsearch.requestHeadersWhitelist配置如何,客戶端請求頭都不能覆蓋任何自定義請求頭
- elasticsearch.shardTimeout: Elasticsearch等待分片響應(yīng)的超時時間,單位是毫秒,設(shè)置為0可以禁用
- elasticsearch.startupTimeout: 在重試之前Kibana啟動時等待Elasticsearch的超時時間,單位是毫秒
- elasticsearch.logQueries: 記錄發(fā)送到Elasticsearch的查詢,如果要啟用還需要將logging.verbose設(shè)置為true
- pid.file: Kibana的進程ID文件路徑
- logging.dest: 指定Kibana保存日志輸出文件的位置
- logging.silent: 設(shè)置是否輸出日志,設(shè)置為true時禁止所有日志輸出
- logging.quiet: 設(shè)置為true時禁止除錯誤消息之外的所有日志輸出
- logging.verbose: 設(shè)置為true以記錄所有事件,包括系統(tǒng)使用信息和所有請求
- ops.interval: 設(shè)置獲取系統(tǒng)和進程性能指標(biāo)的時間間隔,單位是毫秒,最小值是100,默認為5000
- i18n.defaultLocale: 默認區(qū)域設(shè)置,可用于國際化,國際化文件存儲位置kibana-6.4.2-linux-x86_64/src/core_plugins/kibana/translations/
??我修改了【server.host】,將這個從localhost修改為Kibana部署服務(wù)器的IP地址

??同時還修改了【elasticsearch url】,因為Elasticsearch服務(wù)部署在另外的服務(wù)器,將其修改為Elasticsearch服務(wù)部署的地址

-
啟動Kibana
運行如下命令后臺啟動
nohup kibana-6.4.2-linux-x86_64/bin/kibana &
啟動后可以看到進程ID

使用Kibana查看Elasticsearch索引數(shù)據(jù)
安裝成功之后使用瀏覽器通過訪問【http://{IP}:5601】打開Kibana界面,找到Management菜單

這里能夠查看Elasticsearch的索引,不得不說這是Kibana的一個改進,曾記得在5.6.3版本的時候是無法在Kibana中看到Elasticsearch的索引列表的,對于低版本的Kibana,我們可以在瀏覽器中輸入如下地址來查看Elasticsearch的索引列表。
http://{Elasticsearch IP}:9200/_cat/indices?v

然后點擊Kibana的【Management】菜單,創(chuàng)建Index Patterns

添加完成后就可以點擊【Discover】菜單進行查看了,還可以添加各種查詢條件進行過濾

避坑指南
-
UnhandledPromiseRejectionWarning: Error: listen EADDRNOTAVAIL xxx.xx.xx.xx:5601
如果你用的是云主機,并且碰到了啟動Kibana出現(xiàn)了上面的錯誤

這是因為云主機一般有雙IP,即內(nèi)外網(wǎng),切記:這個時候server.host一定要設(shè)置為內(nèi)網(wǎng)IP
BTW,簡書能不能支持一下標(biāo)準(zhǔn)的markdown變字體顏色的語法啊,要設(shè)置個紅色,只能用`xxx`,但是這樣字體又變小了
