はじめに
IBM Cloudでは Activity Trackerというサービスでユーザーの操作やAPIの使用状況を記録することができます。サービスからのイベントをキャプチャして「いつ誰がどこで何をしたか」を記録し、検索、アーカイブ保存、アラート通知、グラフ描画などの機能により監査、セキュリティ監視、運用トラブルシューティングに利用できます。
Activity Trackerに対応したサービスにはWatson DiscoveryやWatson AssistantなどのWatson APIも含まれています。既存のWatson Discoveryのインスタンスを対象としてどんなことができるのか試してみました。
目次
Activity Trackerイベントを生成するWatson Discovery関連のアクティビティ
Activity Trackerインスタンスをデプロイする
Activity Trackerを使ってみる
Watson Discoveryのイベントに絞り込んで表示する
ログをエクスポートする
参考リンク
Activity Trackerイベントを生成するWatson Discovery関連のアクティビティ
ユーザーによる成果物の作成、変更、削除などの操作やAPIの使用についてイベントが生成されます。対象アクティビティの一覧はこちら。
Activity Trackerインスタンスをデプロイする
IBM Cloudコンソールにログインし、ダッシュボード左上角のメニューアイコン をクリックし、線グラフのアイコン「プログラム識別情報」 > 「Activity Tracker」を選択します。
日本語のUIで「プログラム識別情報」となっていますが、マニュアル原文と英語UIでは"Observability"です(同じものと分からずちょっと迷いました...)。
リージョンには今回対象とするWatson Discoveryのインスタンスと同じリージョンを、プランは有料プランから7日間を選択し、同意のチェックボックスをチェックして「作成」をクリックします。
リアルタイムにユーザの操作イベントを受信できるかどうか動作確認するなら無料のLite Planでも可能です。イベントログの保存・検索やアラート通知など本格的に利用するための機能は有料プランで提供されています。プランについては詳しくはこちら。
デプロイが完了するとリソース一覧にも表示されます。Activity Trackerが開始すると、追加の設定などをすることなく、同じリージョン内の全ての対応サービスインスタンスからのイベントがキャプチャされ記録されていきます。
Activity Trackerを使ってみる
IBM Cloudコンソールにログインし、ダッシュボード左上角のメニューアイコン をクリックし、「プログラム識別情報」 > 「Activity Tracker」で表示されるインスタンスの「ダッシュボードを開く」をクリックします。
ダッシュボードを開くと記録されたイベントが1イベント1行ずつメインのペインに表示されています。データ項目によっては色分けされています。各イベントにマウスオーバーし左に表示される右向きの三角▶をクリックすると、イベント詳細が表示されます。またデフォルトでは直近60分に記録されたイベントが表示されていますが、期間は右上のToggle timelineをクリックしてウィンドウ右にTimelineペインを開き変更できました。
Timelineペインではイベント数の棒グラフも表示されます。スパイク的な傾向があるなど気になる期間をクリックし「Jump to」と進むと、メインペインの表示をその期間にジャンプし、ガイドとして使える区切り線を追加表示してくれます。
イベントが記録されることを確認する目的で、Watson Discoveryでダミーの分析プロジェクトを削除してみました。Criticalなアクティビティとして記録され、日時、ユーザー名、削除したプロジェクトのIDなどが確認できました。
イベントを絞り込んで表示する
同じリージョンにある全てのActivity Tracker対応サービスインスタンスのアクティビティがキャプチャされているので、Watson Discovery関連のみ表示するよう絞り込んでみます。
Appsで表示される検索窓に「discovery」と入力するとWatson Discoveryインスタンスがリストされました。「SELECT ALL」、「APPLY」をクリックしてWatson Discoveryインスタンスからのイベントのみを表示させるようにしました。
この絞り込み設定を次回以降もすぐに利用できるように、viewとして保存してみます。左のペインでViewsをクリックし、Unsaved Viewのドロップダウンから「Save as a new view」をクリックしviewの名前を入力して保存しました。
ログをエクスポートする
Viewで絞り込んだ状態で、View名 > 「Export lines」でエクスポートしてみました。
アーカイブ目的の場合IBM Cloud Object Storageへのアーカイブ機能を使うのが良さそうです。アーカイブしたログを検索するにはIBM Cloud Data Engine serviceを別途デプロイして使います。
これ以降の手順はブラウザ上で直接ダウンロードする方法ではなく、よりセキュリティを考慮した方法となっていました。
指定したイベントのJSONLファイルが圧縮されてIBM Cloud Object Storage上に保存され、ダウンロードのためのURLがエクスポートを実行したユーザーのEメールアドレス宛てに送付されてきます。
Eメール内のリンクをクリックしてダウンロードすることでエクスポートしたログを取得できました。ダウンロードリンクは12時間の期限付きでした。
JSONL(JSON Lines)は改行区切りで1行にJSONの1レコードを記述することで複数のJSON レコードを構造化して格納できるファイル形式です。JSONLファイルは、たとえばJQコマンドで絞り込みや整形、JSON、CSVへの変換などが可能です。