DatadogをPloneの解析に使う

はじめに

CMS Plone のアクセス解析等は,Google Analyticsなどで簡単にできる.しかし,操作状況等の異なるメトリクスが欲しい場合,取得が困難である.近年,GAオマージュのローカルで利用できるアプリとして,Piwikがある,これはカスタムメトリクスを作成することができるので,ユーザー名を渡すこと等もできる.しかし,カスタムメトリクスは非常に限定的であり,解析に非常に時間がかかる.そこで,ASP型のモニタリングツールである Datadogを使い,Ploneの操作状況を記録してみた.Datadogはカスタムメトリクスの自由度が高い.また,タグ機能を使うことでいろんな軸で解析をすることが可能である.

DogApiを使いDatadogと通信

Ploneでコンテンツの作成・編集後に発生するイベントでDogApiを使ってDatadogへ送信する.このとき,カスタムメトリクスを指定し,時間と値,ソートができるようにタグを追加したものを送信する.今回タグは,user_id, pathを渡した.また,dd-agentを使うという方法もあるが,確実に送信するには,dogapiを使う方が良い感じがする.

Datadogでダッシュボードビューの用意

datadog側でビューを作る.ビューはダッシュボードの機能で簡単に作ることが可能である.多様なグラフ等があるので選択しドラッグ&ドロップするだけである.

Datadogへの通信時間

datadogとの通信は,環境によるが多少時間がかかるので,PloneをZEO環境で使っているならば,plone.app.asyncを使って非同期で通信してやるといい.

ステートとメトリックアラート

タグにワークスフローのステートを追加することで,決めたステート,例えば「公開済み」のものが編集された際,メトリックアラート機能を使って,特定のユーザーにメールを送ることをしてみた.
下図は,メトリックスアラートを追加したもの(右上)である.

おわりに

今回は,編集後に発生するイベントで,編集をした日時・ユーザ名・コンテンツパス・ワークフローの状態をDatadogに送信し,Datadog上で可視化することをした.

これを,エラー時に発生するイベントに絡めることでエラーを検知することができる.DogApiは,Datadogに送信するだけでなく,取得することも可能である.LMSとしてPloneを使った場合,学習のログ収集と可視化ができるようになる.この辺は,今後取り組んで行きたい.