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』,编程路上,一起前行。