使用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版本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章