Apache Kylin 入門系列目錄
- Apache Kylin 入門 1 – 基本概念
- Apache Kylin 入門 2 – 原理與架構
- Apache Kylin 入門 3 – 安裝配置引數詳解
- Apache Kylin 入門 4 – 構建 Model
- Apache Kylin 入門 5 – 構建 Cube
- Apache Kylin 入門 6 – 優化 Cube
- 基於 ELKB 構建 Kylin 查詢時間監控頁面
一、簡介
ELKB 是指 Elasticsearch、Logstash、Kibana、Beats,藉助 FileBeat 採集 Kylin 日誌,並分發到 Logstash 進行過濾處理並最終寫入到 ES 中。使用 Kinaba 可以較為快捷的構建一系列圖表,通過對 Kylin 查詢日誌進行聚合分析,從多個維度構建其查詢指標監控頁面。
二、角色分配
角色 | IP | 埠 |
---|---|---|
Elasticsearch | 192.168.3.214 | 9200 |
Logstash | 192.168.3.213 | 5044 |
Kibana | 192.168.3.214 | 5601 |
Beats | 192.168.3.213 | 5044 |
三、ElasticSearch 安裝與配置
ES 的安裝與配置可以參考文章:CentOS 7.4 下搭建 Elasticsearch 6.3 搜尋群集
1、Kibana 安裝與配置
Kibana 安裝比較簡單,主要分以下步驟:
- 下載 tar 安裝檔案,這裡使用 6.4.2 版本;
- 解壓到指定的目錄:
tar -zxvf kibana-6.4.2-linux-x86_64.tar.gz -C /opt/
; - 修改配置檔案
/opt/kibana-6.4.2-linux-x86_64/config/kibana.yml
; - 啟動 Kibana:
/opt/kibana-6.4.2-linux-x86_64/bin/kibana
。
2、Kibana 配置
Kibana 不需要做過多的配置,只需要設定節點資訊和 ES 連線資訊即可。
server.port: 5601server.host: "192.168.3.214"server.name: "kibana-edps"elasticsearch.url: "http://192.168.3.214:9200"複製程式碼
四、FileBeat 安裝與配置
1、FileBeat 安裝
CentOS 7 可以直接通過 RPM 包進行安裝:
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.2-x86_64.rpmsudo rpm -vi filebeat-6.4.2-x86_64.rpm複製程式碼
其他系統安裝方法請參考官方文件。
2、FileBeat 配置
使用 RPM 方式安裝成功後,FileBeat 的配置檔案路徑為:/etc/filebeat/filebeat.yml
,開啟配置檔案進行修改:
# 配置 Filebeat 輸入filebeat.inputs:- type: log # 開啟 log 採集 enabled: true # 設定日誌路徑 paths: - /opt/apache-kylin-2.4.0-bin-cdh57/logs/kylin.log # 設定需要排除的行(正則匹配到的內容會被捨棄) #exclude_lines: ['^DBG'] # 設定包含的行(正則匹配) include_lines: ['Query Id: '] # 設定需要排除的檔案(正則匹配) #exclude_files: ['.gz$'] # 附加的靜態欄位 #fields: # level: debug # review: 1 # 設定日誌的分割正則 multiline.pattern: '\d{4
}-\d{2
}-\d{2
}\s*\d{2
}:\d{2
}:\d{2
},\d{3
}\s*\w+\s*\[' multiline.negate: true multiline.match: after#==================== Elasticsearch template setting ==========================# 禁用自動模板載入setup.template.enabled: false#setup.template.name: "log"#setup.template.pattern: "log-*"#setup.dashboards.index: "log-*"#setup.template.settings:# index.number_of_shards: 3# index.number_of_replicas: 0# index.codec: best_compression# _source.enabled: false#============================== Kibana =====================================setup.kibana: # Kibana 地址 host: "192.168.3.214:5601"#-------------------------- Elasticsearch output ------------------------------# 使用 ES 作為輸出#output.elasticsearch: #hosts: ["192.168.3.214:9200"] #index: "log-kylin-cdh3" # Optional protocol and basic auth credentials. #protocol: "https" #username: "elastic" #password: "changeme"#----------------------------- Logstash output --------------------------------# 使用 LogStash 作為輸出output.logstash: hosts: ["192.168.3.213:5044"]#============================== Xpack Monitoring ===============================# 設定監控資訊xpack.monitoring: enabled: true elasticsearch: hosts: ["http://192.168.3.214:9200"] username: beats_system password: beatspassword複製程式碼
3、對配置檔案的幾點說明
- Filebeat 的 modules 大部分都需要藉助 ES 的 Ingest 節點對資料進行二次處理;
- 進行日誌處理的時候 multiline 這部分特別重要,一定要設定好日誌之間的分割正規表示式;
- 無論是使用 ES 還是 Logstash 作為輸出,Filebeat 都支援配置多個地址,這樣有助於實現負載均衡。
五、Logstash 安裝與配置
Logstash 安裝比較簡單:
- 下載 Logstash 安裝檔案,6.4.2 下載地址;
- 解壓到指定資料夾:
tar -zxvf logstash-6.4.2.tar.gz -C /opt/
。
1、配置 Logstash
上面已經使用 FileBeat 將 Kylin 的日誌傳送給了 Logstash,這裡需要使用 Logstash 對日誌進行過濾,並寫入到 ES。
首先新建 kylin 日誌處理的配置檔案vi /opt/logstash-6.4.2/config/kylin_log.conf
:
input {
beats {
port =>
5044
}
}filter {
grok {
match =>
{"message" =>
"(?<
query_dtm>
[^,]+),[\s\S]+?Query Id:\s*(?<
query_id>
\S+)\s*SQL:\s*(?<
sql>
[\s\S]+?)\nUser:\s*(?<
user_id>
[\s\S]+?)\nSuccess:\s*(?<
success_flg>
[\s\S]+?)\nDuration:\s*(?<
cost_ft>
[\s\S]+?)\nProject:\s*(?<
project_id>
[\s\S]+?)\n[\s\S]+?\nStorage cache used:\s*(?<
cache_flg>
[\s\S]+?)\n[\s\S]+"
} remove_field =>
[ "message", "tags", "@timestamp", "@version", "prospector", "beat", "input", "source", "offset", "host"]
} date{
match=>
["query_dtm","YYYY-MM-dd HH:mm:ss", "ISO8601"] target=>
"sql_dtm"
}
}output {
elasticsearch {
hosts =>
["192.168.3.214:9200"] index =>
"log-kylin-cdh3" document_id =>
"%{query_id
}"
} stdout {
}
}複製程式碼
2、對配置檔案的幾點說明
- 使用 gork 的正規表示式來對 kylin 的查詢 SQL 進行匹配,獲取了查詢 ID、耗時、快取命中、SQL 語句、USER 等資訊;
- 移除了 FileBeat 傳遞過來的無用的欄位:
"message", "tags", "@timestamp", "@version", "prospector", "beat", "input", "source", "offset", "host"
; - 由於 LogStash 預設使用 UTC 時間,所以使用 date 外掛新增了一個 utc 時間欄位(
sql_dtm
),同時保留了原始時間(query_dtm
); - 使用了 ES 輸出和控制檯輸出(便於監控);
- 對於日誌中的空格,控制檯輸出會使用
\n
展示,正規表示式一定不要寫為\\n
; - gork 的正規表示式不需要進行轉義(很重要)。
全部配置完成後,啟動 Logstash 即可:/opt/logstash-6.4.2/bin/logstash -f /opt/logstash-6.4.2/config/kylin_log.conf
。
六、Kibana 監控頁面
1、建立索引匹配
首先登陸 Kibana:http://192.168.3.214:5601
,登陸成功後建索引匹配:Management ->
。
Kibana ->
Index Patterns ->
Create Index Pattern
日期欄位一定要設定為 UTC 時間,否則後面查詢時候會出現日期對應不上的情況。
2、查詢日誌詳情
索引規則建立成功後,你可以點選左側的 Discover 檢視日誌詳情。
3、建立視覺化元件
如果可以正常看到日誌,則表示目前為止一切正常,下面開始建視覺化元件,點選左側選單的 Visualize 進入視覺化元件頁面(預設該頁面有很多預設的元件,沒啥用處,就全部刪除了)。
對於視覺化元件的構建步驟就不進行一一說明了,只需要對 ES 的聚合函式有了解,就可以較好的進行使用,推薦瞭解的聚合函式:
- Count、Min、Max、Avg(經常使用);
- Date Histogram、Data Range(固定日期間隔、時間範圍);
- Histogram、Range(固定數字間隔、數字範圍);
- Terms(型別分類等,非常適合用在詞雲、餅狀圖等)。
4、建立儀表盤
點選左側選單欄的 Dashboard 開啟儀表盤管理介面,點選 “Create new dashboard” 按鈕即可建立新的儀表盤,點選右上方的 “ADD” 按鈕新增剛才新建的元件,然後拖拽調整大小布局,最後儲存即可。
七、擴充套件閱讀
Any Code,Code Any!
掃碼關注『AnyCode』,程式設計路上,一起前行。