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: 5601
server.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.rpm
sudo 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』,程式設計路上,一起前行。