alfresco study29 activitymonitoring

15
戸谷 2014 © Alfresco勉強会#29 ユーザのアクティビティを可視化してみる 2015.08.26

Upload: takeshi-totani

Post on 15-Apr-2017

4.291 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Alfresco study29 activitymonitoring

戸谷

2014©

Alfresco勉強会#29 ユーザのアクティビティを可視化してみる

2015.08.26

Page 2: Alfresco study29 activitymonitoring

2015.08.26 2015©

はじめに

2

●Alfresco上のユーザアクティビティを可視化できたら面白いかもしれない。 ●はやりのElasticsearch + kibanaが使えるかも。

●使用するAlfrescoバージョン ●Community Edition 5.0.d

Page 3: Alfresco study29 activitymonitoring

2015.08.26 2015©

やりたいこと

3

●こんなことが可視化できないか

●一番活発なShareサイトはどれか

●どの文書が一番注目されている?

●どのユーザが一番活動してる?

Page 4: Alfresco study29 activitymonitoring

2015.08.26 2015©

システム構成

4

アクティビティ 取得

アクティビティ プッシュ

こんな感じに連携できたらいいはず

Page 5: Alfresco study29 activitymonitoring

2015.08.26 2015©

各プロダクト紹介とインストール(1)

5

Alfresco●この勉強会の(一応)主役 ●Alfresco社により開発されているオープンソースECM ●今回はCE 5.0.dをインストール: Macだとインストーラを使って簡単にインストールできます。

Elasticsearch●Elastic社により開発されているリアルタムのデータ検索/分析ソフトウェア ●検索用エンジンとしてApache Luceneを使用 ●今回はhomebrewでインストールできる1.5.2を利用

$ brew install elastic search

Page 6: Alfresco study29 activitymonitoring

2015.08.26 2015©

各プロダクト紹介とインストール(2)

6

logstash●ログファイルを主にElasticsearchに送り込むためのクローラー ●Elastic社により開発 ●Elastic社サイトより最新版のzipをダウンロードして展開 ●以下のプラグインを追加

Kibana●Elasticsearchのデータを可視化して分析するためのI/F ●Elastic社によりry) ●Elastic社サイトより最新版のzipをダウンロードして展開

$ cd <LOGSTASH_HOME> $ bin/plugin install logstash-input-http_poller $ bin/plugin install logstash-codec-json_lines

Page 7: Alfresco study29 activitymonitoring

2015.08.26 2015©

デモ!

7

Page 8: Alfresco study29 activitymonitoring

2015.08.26 2015©8

サイトごとの活発度比率

サイトごとのユーザ活動量のランキング

全サイト横断での注目文書のランキング

Page 9: Alfresco study29 activitymonitoring

2015.08.26 2015©

Alfrescoのユーザアクティビティ収集機能

9

監査証跡(Auditing)

監査証跡(Auditing)とActivityServiceの2種類が用意されている。

●Alfresco APIコールの切片でユーザ操作を記録 ●取得のためのREST APIが用意されている

ActivityService●Alfresco Share上の操作を含めたイベントを記録 ●おもにShare Dashletに表示するためのREST APIが用意されている。

→今回はShare上での文書に対するユーザアクションをトラックしたいのでActivityServiceを使ってみる

Page 10: Alfresco study29 activitymonitoring

2015.08.26 2015©

設定およびカスタマイズ(1)

10

Alfresco●ActivityServiceにアクセスし文書関連アクティビティを全て取得するWebScriptを新規に作成

private static final String[] FILTERED_EVENTS = {"org.alfresco.documentlibrary.file-liked","org.alfresco.documentlibrary.file-added","org.alfresco.documentlibrary.file-previewed","org.alfresco.documentlibrary.file-downloaded","org.alfresco.comments.comment-created"

};… List<ActivityFeedEntity> feeds = activityService.getUserFeedEntries("admin", null, false, false, minId);

List<String> feedsData = new ArrayList<String>();for(ActivityFeedEntity feed : feeds) {

try {for(String eventType : FILTERED_EVENTS) {

if ( eventType.equals(feed.getActivityType())) {JSONObject obj = new JSONObject(feed.getActivitySummary());JSONObject feedJSON = new JSONObject(feed.getJSONString());

…feedsData.add(feedJSON.toString());

}}

文書関連アクティビティ - 文書へのLiking - 文書追加 - 文書プレビュー - 文書ダウンロード - コメント追加

Page 11: Alfresco study29 activitymonitoring

2015.08.26 2015©

設定およびカスタマイズ(2)

11

Logstash

以下を行う設定ファイルを作成 • AlfrescoのWebScriptをpolling • 一回のアクセスで複数のjsonを処理 • 結果をElasticsearchに流し込み • アクティビティイベントのIDをElasticsearchのドキュメントIDとして使用

Page 12: Alfresco study29 activitymonitoring

2015.08.26 2015©

設定およびカスタマイズ(3)

12

Logstashつづきinput { http_poller { urls => { alf => { method => get url => "http://localhost:8080/alfresco/service/study/activitylist" headers => { Accept => "application/json" } } } request_timeout => 60 interval => 5 codec => json_lines

# A hash of request metadata info (timing, response headers, etc.) will be sent here metadata_target => "http_poller_metadata" }}output { elasticsearch { host => "localhost" protocol => "http" document_id => "%{id}" } stdout {codec => rubydebug}}

Page 13: Alfresco study29 activitymonitoring

2015.08.26 2015©

システム構成: 追記版

13

アクティビティ 取得

アクティビティ プッシュ

アクティビティ一覧 WebScript

logstash-activity.conf

Page 14: Alfresco study29 activitymonitoring

2015.08.26 2015©

まとめ

14

●Alfresco上のユーザアクティビティをほぼリアルタイムで集計できた。 ●logstashのWebサービスへのpolling方法について情報が少ない!Logstashとの格闘が9割!

●エンハンス余地 ●Alfresco

●今は全件アクティビティを取得しているので取得件数を絞る。 ●監査証跡ログをソースとして利用する。

●その他 ●Kibana上のダッシュボードや各可視化レポートをAlfresco Shareのダッシュボード上に埋め込む。 ●Kibanaだけに頼らずに、もっと気の利いたレポートを作る

Page 15: Alfresco study29 activitymonitoring