使用Fluentd、ElasticSearch和Kibana可视化KPI日志
我們將省略安裝步驟和基本設定。
以下是主要關於使用Kibana的指南,用於可視化KPI日誌。
目标
-
- KPIとなる指標をログ出力し、Kibanaで可視化する
-
- アプリケーション => fluentd => elasticsearch <- kibana
-
- KPIは複数設定され、指標はそれぞれ異なるため、KPIの種類によってデータ構造が変更できなければいけない
- 1つのKPIを様々な軸で集計可能にしたい
发送日志
这次使用fluent-logger-ruby。
https://github.com/fluent/fluent-logger-ruby
我会母语中文进行以下描述。
log = Fluent::Logger::FluentLogger.new(nil, host: 'localhost', port: 24224)
log.post("kpi.user_login", {user_id: user_id, user_email: user_email})
log.post("kpi.user_register", {user_id: user_id, user_email: user_email})
流畅的日志记录器
使用fluent-plugin-elasticsearch插件将数据存储到elasticsearch中。
链接:https://github.com/uken/fluent-plugin-elasticsearch
<match kpi.user_register>
type copy
<store>
type elasticsearch
index_name kpi
type_name user_register
include_tag_key true
tag_key @log_name
host localhost
port 9200
logstash_format true
logstash_prefix kpi.user_register
flush_interval 3s
</store>
<store>
type file
path /var/log/td-agent/kpi.user_register.log
</store>
</match>
<match kpi.user_login>
type copy
<store>
type elasticsearch
index_name kpi
type_name user_login
include_tag_key true
tag_key @log_name
host localhost
port 9200
logstash_format true
logstash_prefix kpi.user_login
flush_interval 3s
</store>
<store>
type file
path /var/log/td-agent/kpi.user_login.log
</store>
</match>
只有将 logstash_format 设置为 true,Kibana 才会按预期的格式显示。
如果不指定 logstash_prefix,user_register 和 user_login 将以相同的索引和架构存入。
由于可以用于调试,可以使用 type copy 将其写入 Elasticsearch 以外的另一个文件中,这样更方便。
弹性搜索
使用head插件等确认数据已被投入到elasticsearch中。
每天都会创建名为kpi.user_login-YYYY.MM.DD和kpi.user_register-YYYY.MM.DD的索引。
当日期望发生变化时,将创建一个新的索引,但是,这时如果 JSON 数据发生变化,就会导致模式发生变化,从而导致在 Kibana 仪表板上使用的属性被更改或删除,因此需要注意不能再查看仪表板。
如果想要更改Logstash的日期粒度,可以参考下面的文章:http://y-ken.hatenablog.com/entry/fluentd-elasticsearch-kibana-index-partitioning
当在head插件的浏览器选项卡中指定index/type后,可以查看数据以便轻松确认模式是否正常创建。
Kibana 可视化分析工具
索引注册
设置 > 索引中指定elasticsearch创建的索引并保存。
日期部分使用通配符。
※Indices是索引的复数形式!
搜索条件设置
在”Discover”选项卡中进行导航。打开左上方显示的索引通配符名称的下拉菜单,您可以选择另一个索引。在这里,您可以粗略选择索引,并在最上面的搜索栏中仅指定”*”来进一步筛选条件(本次选择获取全部结果)。
然后,通过右上方的”Save Search”按钮,给搜索结果命名并保存。
可以在「设置」>「对象」>「搜索」中查看所创建的搜索条件。
可视化规则注册
选择垂直柱状图,从已保存的搜索中选择。
Y轴:如果将count作为Y轴值,则简单地将日志总数作为Y轴的值。
X轴:如果将Aggregation设置为“日期柱状图”,则按@timestamp排列X轴。
点击播放按钮后,图形预览将更新。
如果图形显示不正常,请检查右上方的时间范围。
可以像在注册搜索条件时一样,通过右上角的按钮给可视化命名并保存。
如果还有其他用户属性的话,当然也可以使用饼图来监视比例。
仪表板注册
请点击右上角的“+”按钮,选择“Visualize”,并将其放置在您喜欢的位置。
以同样的方式为仪表板命名,并保存。
参考资料
-
- http://inokara.hateblo.jp/entry/2013/11/30/104023
-
- http://www.fluentd.org/guides/recipes/elasticsearch-and-s3
-
- http://shiro-16.hatenablog.com/entry/2014/11/30/214439
-
- https://github.com/uken/fluent-plugin-elasticsearch
- http://y-ken.hatenablog.com/entry/fluentd-elasticsearch-kibana-index-partitioning