使用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中。

スクリーンショット 2015-08-24 21.54.08.png

每天都会创建名为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

スクリーンショット 2015-08-24 21.58.26.png

当在head插件的浏览器选项卡中指定index/type后,可以查看数据以便轻松确认模式是否正常创建。

Kibana 可视化分析工具

索引注册

设置 > 索引中指定elasticsearch创建的索引并保存。
日期部分使用通配符。
※Indices是索引的复数形式!

スクリーンショット 2015-08-24 22.00.10.png

搜索条件设置

在”Discover”选项卡中进行导航。打开左上方显示的索引通配符名称的下拉菜单,您可以选择另一个索引。在这里,您可以粗略选择索引,并在最上面的搜索栏中仅指定”*”来进一步筛选条件(本次选择获取全部结果)。
然后,通过右上方的”Save Search”按钮,给搜索结果命名并保存。

スクリーンショット 2015-08-24 22.06.24.png

可以在「设置」>「对象」>「搜索」中查看所创建的搜索条件。

スクリーンショット 2015-08-24 22.16.27.png

可视化规则注册

选择垂直柱状图,从已保存的搜索中选择。

スクリーンショット 2015-08-24 22.18.23.png

Y轴:如果将count作为Y轴值,则简单地将日志总数作为Y轴的值。
X轴:如果将Aggregation设置为“日期柱状图”,则按@timestamp排列X轴。
点击播放按钮后,图形预览将更新。
如果图形显示不正常,请检查右上方的时间范围。

スクリーンショット 2015-08-24 22.21.02.png

可以像在注册搜索条件时一样,通过右上角的按钮给可视化命名并保存。

如果还有其他用户属性的话,当然也可以使用饼图来监视比例。

仪表板注册

请点击右上角的“+”按钮,选择“Visualize”,并将其放置在您喜欢的位置。
以同样的方式为仪表板命名,并保存。

スクリーンショット 2015-08-24 22.41.46.png

参考资料

    • 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
广告
将在 10 秒后关闭
bannerAds