はじめに
Amazon Lookout for Metricsのcontinuousモードを構築する機会がありましたので
学んだことを記載します。
前提
・AWSアカウントがあること
・Lookout for Metricsとのデータ連携にはS3を利用
・データ形式はCSV
・データ解析のインターバルは1時間
・分析モードはcontinuousモードを使用
やること
・異常検知させるデータを作成する(historical dataとcontinuous data)
・S3のバケットを作成し、データをアップロードする
・Detectorをcontinuousモードで設定する
データの作成
今回も自作したデータを使ってみます。
Continuousモードでは「historical data」と「continuous data」を使用します。
※Continuousモードではhistorical dataは任意ですが、検知できるようになるまでの時間を短縮できるため今回は設定しています。
検出器のステータス
Lookout for Metrics では通常、検出器のステータスがActiveに変わるまでに、少なくとも 300 個の累積データ ポイントが必要です。たとえば、履歴データのデータ ポイントを 200 個提供した場合、検出器がアクティブになるには、連続データのデータ ポイントを 100 個取り込む必要があります。日次間隔の場合、検出器のステータスは 14 日間の学習後にActiveに変わります。
履歴データが利用できない場合は、学習段階に次の時間がかかります。
5分間隔:25時間
10分間隔:50時間
1時間間隔:12.5日
1日間隔:14日
作成したデータは以下になります。
historical dataとしてこのようなデータを600行ほどCSVで作成しています。
continuous dataとしてこのような時間毎のデータをCSVで作成しています。
continuous dataは「今現在の日時」以降のtimestampで作成してください。
S3にバケットの作成とファイルのアップロード
Continuousモードではcontinuous dataのディレクトリ構成を、データ解析のインターバルに合わせる必要があるため、今回のS3のディレクトリ構成はこのようになります。
※historical dataはフォルダの指定は無さそうなので任意の場所で大丈夫です。
├historical data
├ yyyy/
├ MM/
├ dd/
├ hh
S3のバケットは任意の名前で作成します。
作成したS3のバケットに上記の構成でディレクトリを作成します。
作成したディレクトリに先ほど作成したhistorical data用のファイルとcontinuous data用のファイルをアップロードします。
Lookout for Metricsの設定
Detectorを設定していきます。
検索窓で「Amazon Lookout for Metrics」と検索します。
「Create Detector」を選択します。
detectorの設定画面に変わるので任意の「Detector name」を入力します。
Intervalを選択します。ここでは1時間間隔のデータで作成していますので「1 hour intervals」を選択し「Create」を押下します。
次にdatasetを設定します。
「Add a dataset」を押下します。
ここでは以下の用に入力します
Name:任意の名前
Timezone :Asia/Tokyoを選択
Datasource :S3を選択
Detector mode:Continuousを選択
Path to an object in your continuous dataset:continuous dataのファイルパスをS3のURIからコピーして貼り付けてください。
Continuous data s3 path patternではcontinuous dataを置いている
ディレクトリパスのパターンを選択します。
Use historical dataにチェックを入れて
Historical data:S3のURIからコピーしたものを貼り付けてください
Service accessでは新規作成であればCreate and use a new service roleを選択してください。
「Detect format settings」を押下します
Formatの画面が出ますがデフォルトのままで大丈夫です。
「Next」を押下します。
「Map field」sの画面では以下を設定します。
Measures:Numberを選択します
Dimensions:Productを選択します
※Backtest作成の記事でも書きましたが重要な項目ですので再度記載します。
Measuresとは異常検出を行う際の分析対象となる数値データになります。
時間に基づくデータポイントであり、異常が発生した際に検出の対象となります。
Dimensionsとは異常検出を行う際にデータを細分化するための属性やカテゴリです。Dimensionsは、Measures(測定値)と組み合わせることで、特定のデータポイントに関する分析を可能にします。
※ Lookout for Metricsの費用はメトリクス数で計算されます。
メトリクス数は「Measures×Dimensions」で計算されます。
そのため、Measuresの数やDimensionsの数が増えると費用が膨大になる可能性がありますので注意してください。
なお最初の月は100メトリクス分の無料枠があるようです。
AWS 無料利用枠
Lookout for Metrics は無料で開始できます。サービスの使用を開始すると、最初の月には 100 のメトリクスを分析するまで料金はかかりません。
設定を続けます。
Timestamp:Timestampを選択
Format では「Enter a timestamp format Timestamp format」を選択し
yyyy-MM-ddHH:mm:ss
今回はMeasuresはNumberの1つ、DimensionsはA,B,Cの3つとなります。
値を入力すると見積もりをしてくれます。
問題なければ「Next」を押下します。
確認画面になりますので内容を確認し問題なければ
「Save and Activate」を押下します。
内容を確認し問題なければ「confirm」と入力しActivateを押下します。
検出器をアクティブ化するとコストが発生し始めます。
30~40分程度待って設定に問題なければDetectorのステータスがActiveとなります。
確認
作成したDetectorを選択し「Anomalies」を押下すると検知結果が確認できます。
どのディメンションでエラーを検知しているか、検知したエラーのメトリックのグラフが確認できます。
今回はCというディメンションで異常検知しているのがわかります。
またグラフでは異常は青色で表示されます。
ここでは7/24の22:00 にCountが1003となっているのが異常として検知できているのがわかります。
まとめ
Backtestモードに続いてcontinuousモードを記事にしましたが、continuousモードではS3のフォルダ構成をインターバルに合わせる必要があることを知らず、DetectorがなかなかActiveにならず苦労しました。
なお、データ解析を1日インターバルにした場合は、設定やデータに問題がなくてもDetectorがActiveになるまでに48時間ぐらいかかりました。