一、前言
主要來講述一下Kibana使用以及上生產時候的一些配置,要是大家對這塊比較感興趣我到時候也可以在結合Grafana做一些圖表方面的介紹,后面等介紹完Beats以后我去阿里雲租幾台機器,給大家來個ELK方面的實戰,然后要是時間充分在和大家一起學習下Elasticsearch源碼,廢話不多說開始嘍;
二、Kibana配置
主要介紹一些常用的配置,剩下一些冷門的大家可以查看下官方配置;
server.port:
默認值: 5601 該配置指定Kibana 使用的端口號;
server.host:
默認值: "localhost" 指定后端服務器的主機地址;
server.maxPayloadBytes:
默認值: 1048576 服務器請求的最大負載,單位字節;
server.name:
默認值: "主機名" Kibana 實例對外展示的名稱;
elasticsearch.url:
默認值: "http://localhost:9200" 用來處理所有查詢的 Elasticsearch 實例的 URL ;
kibana.index:
默認值: ".kibana" Kibana 使用 Elasticsearch 中的索引來存儲保存的檢索,可視化控件以及儀表板。如果沒有索引,Kibana 會創建一個新的索引;
elasticsearch.requestTimeout:
默認值: 30000 等待后端或 Elasticsearch 的響應時間,單位微秒,該值必須為正整數;
logging.dest:
默認值: stdout指定 Kibana 日志輸出的文件;
以上基本就是常用的甚至一些都用不到,如果大家想啟用SSL大家去參考下官方配置,我將這塊的都已經默認關閉了;接下來我們主要來介紹下生產線上一些相關方面的配置,之前我們介紹Elasticsearch 的時候只介紹兩種主要的節點,還有一個節點類型沒有介紹,他就是協調節點,該節點作用負載平衡器,該節點處理傳入的HTTP請求,根據需要將操作重定向到群集中的其他節點,並收集並返回結果;我們主要利用這個特性來搭建Kibana生產的部署架構,當然你直接配置也是可以,這個只是推薦,我們主要利用這個節點來協調Kibana 的請求,獲取返回我們需要數據,官方有個名字Coordinating only node,整體架構如下圖:
接下來我們結合上面架構我們需要如何配置Elasticsearch,
1.在與Kibana相同的計算機上安裝Elasticsearch客戶端節點;
2.通過設置將節點配置為僅協調節點:
node.master: false;
node.data: false;
node.ingest: false;
3.將客戶端節點添加到elasticsearch集群;
cluster.name: "my_cluster";
4.配置network.host(對Kibana HTTP連接)和transport.host(需要連接的到集群上的節點):
network.host: localhost;
http.port: 9200;
transport.host: YOUR_IP;
transport.tcp.port: 9300;
5.配置kibana;
elasticsearch.url: "http://localhost:9200";
接下來我們思考下這樣架構的好處,協調節點不參與選主環節,減少了選主時間,通過協調節點專門處理監控或者我們需要的一些數據的請求,使其他節點專注於線上請求,提升了效率,要說有什么不好,那就是需要多一台機器;接下來我們來通過Kibana做一些圖表;
三、Kibana入門實戰
Elasticsearch集群搭建和Logstash相關下載和安裝就不講解了,我們主要借助Kibana來分析120年奧運會運動員或者國家一些情況,數據我是在這個網址下載的,准確性方面我沒去核對,我們主要借助這些數據來學習Kibana就好了。整體流程是通過Logstash講CSV文件導入到Elasticsearch,然后借助Kibana分析,我把Logstash配置粘貼到下面,通過使用logstash.bat -f ../config/logstash.conf啟動起來就可以將文件導入到Elasticsearch中,在啟動起來之前我們還需要在Elasticsearch建立模板,當然也可以通過Logstash指定模板這個有興趣自己百度下,我也將Mapping模板放到下面;

input { file{ path => ["C:/Users/wangt/Desktop/athlete_events.csv"] # 設置多長時間檢測文件是否修改(單位:秒) stat_interval => 1 # 監聽文件的起始位置,默認是end start_position => beginning # 設置多長時間會寫入讀取的位置信息(單位:秒) sincedb_write_interval => 5 } } filter { #去除每行記錄中需要過濾的NA,替換為空字符串 mutate{ gsub => [ "message", "NA", "" ] } csv { # 每行記錄的字段之間以,分隔 separator => "," columns => ["name","sex","age","height","weight","team","noc","games","year","season","city","sport","event","medal"] # 過濾掉默認加上的字段 remove_field => ["host", "path","message"] } } output { elasticsearch { hosts => ["127.0.0.1:9200","127.0.0.1:9201","127.0.0.1:9202"] index => "olympicawards" } }

{ "mappings":{ "doc":{ "properties":{ "@timestamp":{ "type":"date" }, "@version":{ "type":"keyword" }, "name":{ "type":"keyword" }, "sex":{ "type":"keyword" }, "age":{ "type":"integer" }, "weight":{ "type":"float" }, "team":{ "type":"keyword" }, "noc":{ "type":"keyword" }, "games":{ "type":"keyword" }, "year":{ "type":"integer" }, "season":{ "type":"keyword" }, "sport":{ "type":"keyword" }, "event":{ "type":"keyword" }, "medal":{ "type":"keyword" } } } } }
以上就是大家需要的模板,這里不做特別復雜儀表盤等ELK實戰的時候我們來做一些比較復雜東西,但是本質上是不變的,只要對DSL足夠了解,構建儀表盤都是分分鍾的事,我們先來整體介紹下Kibana的整體界面,然后在做一個簡單的儀表盤就完成這篇博客;
主要有7大模塊,介紹下每個模塊的作用:
Discover:以頁面的形式展示Elasticsearch中的數據,可以做一些過濾、搜索等等操作;
Visualize:根據Elasticsearch創建可視化的界面;
Dashboard:儀表盤可以將可視化界面組合在一些,類似現在的比較流行的大屏界面一樣;
Timelion:時間序列數據可視化工具,按照時間檢索數據;
Dev Tools:通過DSL進行查詢數據的工具;
Monitoring:監控數據Elasticsearch、Logstash和Beats運行狀況的工具;
Management:Kibana管理索引以及一些參數配置地方;
接下來我們使用Visualize和Dashboard做圖表,通過Visualize構建相關類型的圖表,有如下類型:
選中想要構建類型,通過添加一些類型或者增加一些過濾條件來展示數據;
最終通過保存按鈕保存起來,在構建Dashboard時候使用,
點擊增加按鈕,選擇在Visualize保存的圖表,然后通過調整位置得到自己想要的界面,最終保存下來;
最終就完成對整個索引信息的圖表化展示。
四、結束
歡迎大家加群438836709,歡迎大家關注我!