使用Elastic Stack工具记录和展现用户使用数据

【背景】

为了以曲线图的方式展示项目每日的使用情况,包括对功能,用户部门的分类报表,从而持续改进项目。

公司的所谓架构师,当前对外提供restful接口记录项目的使用日志。后台架构是以写文件的方式记录用户对项目软件的数据,每天晚上通过chronjob定时上传到hadoop里,然后又通过hive的接口进行分类查询,最后开发一个"Dashboard"来展示。


对此方案,我心里很吐槽,不仅杀鸡用了牛刀,还增加了对Dashboard的开发工作量,且用户使用数据不能实时显示,我们其他系统对接时还要等到第二天才能看到数据。


【新方案】

最近学习了Elastic Stack相关工具,并做了相应的验证,我觉得这类需求完全就可以0开发,且这些系统的高可用,高并发,安全,监控都是可以配置出来的。  不过对于我们这种内部系统来说,前期越简单越好,不就是给自己内部看个数据吗

最精简方案:用户数据--->统一日志Rest接口(简单封装下,避免后续下游系统修改)-->Elastic Search --> Kibana

随着深入可改进为:用户数据--->统一日志Rest接口(简单封装下,避免后续下游系统修改)-->RabbitMQ-->LogStash-->Elastic Search --> Kibana

后续要求高并发,高可靠,监控之类的话,再讲这些组件配置成高可用方案



【方案细化】

1.定义用户数据的数据结构,最简单就这些数据

name:用户ID
action:操作类型
detail:详细数据

date:2018-05-18 12:00:200

因此可在kibana的Dev tools中定义Elastic Search的结构

PUT userlog
{
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "doc" : {
            "properties" : {
                "user" : { "type" : "keyword" },
"action" : { "type" : "keyword" },
                "detail" : { "type" : "text" },
                "logdate" : { "type" : "date","format": "yyyy-MM-dd HH:mm:ss" }
            }
        }
    }

}


2.在kibana的Dev tools中手工创建一些数据,试着查询

POST userlog/doc/
{
    "user" : "m00371981",
    "action" : "codeverify",
    "detail" : "hello world",
    "logdate" : "2018-06-01 12:00:00"

}


GET /_search
{
    "query": {
        "match" : {
            "user" : "m00371981"
        }
    }

}


GET /ideaclient/doc/_search
{
   "size" : 0,
    "_source": {
    "excludes": []
  },
   "aggs": {
      "2": {
         "date_histogram": {
            "field": "logdate",
            "interval": "1d",
            "format": "yyyy-MM-dd" 
         }
      }
   }
}


3.在kibana Management中Create Index Pattern,选择userlog

在Visualize和Dashboard中配置报表,我尝试了Pie,Bar,MarkDwon,Metrics相关的报表,感觉效果很好


4.改用logstash从rabbitmq中获取配置,可参考如下配置

input {
#stdin {}
rabbitmq {
    host => "localhost"
    exchange => "madixin"
    }
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {


stdout {}
}

【Elastic Stack使用说明】

网上多的是教程的,这些系统大多装个JDK 1.8+,执行下bin的启动文件就能跑了

多看官网吧:

https://www.elastic.co/guide/en/kibana/6.x/getting-started.html




PS:写这篇文章的时候,Elastic Stack工具各版本都到了6.2.4版本




PS:写这篇文章的时候,Elastic Stack工具各版本都到了6.2.4版本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值