翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
stats
stats
を使用して、ログデータを棒グラフ、折れ線グラフ、積み上げ面グラフなどで視覚化します。これにより、ログデータのパターンをより効率的に特定できます。CloudWatch Logs Insights は、stats
関数と 1 つ以上の集計関数を使用するクエリの視覚化を生成します。
例えば、Route 53 ロググループの次のクエリは、Route 53 レコードの 1 時間あたりのディストリビューションをクエリタイプ別に視覚化して返します。
stats count(*) by queryType, bin(1h)
このようなクエリはすべて、棒グラフを生成できます。クエリで bin()
関数を使用して、時間の経過とともにデータを 1 つのフィールドでグループ化する場合、折れ線グラフや積み上げ面グラフも表示できます。
bin
関数では、次の時間単位と略語がサポートされています。複数の文字を含むすべての単位と略語では、s の複数形への追加がサポートされています。したがって、hr
および hrs
の両方とも時間を指定して機能します。
millisecond
ms
msec
second
s
sec
minute
m
min
hour
h
hr
day
d
week
w
month
mo
mon
quarter
q
qtr
year
y
yr
時系列データを視覚化
時系列の視覚化は、次の特性を持つクエリで機能します。
-
1 つ以上の集計関数が含まれているクエリ。詳細については、「Aggregation Functions in the Stats Command」を参照してください。
-
bin()
関数を使用して 1 つのフィールドでデータをグループ化するクエリ。
これらのクエリは、折れ線グラフ、積み上げ面グラフ、棒グラフ、円グラフを生成できます。
例
完全なチュートリアルについては、「チュートリアル: 時系列の視覚化を生成するクエリを実行する」を参照してください。
時系列の視覚化で機能するクエリの他の例を以下に示します。
次のクエリでは、myfield1
フィールドの平均値の視覚化を生成します。データポイントは 5 分間隔で作成されます。各データポイントは、それまでの 5 分間隔のログに基づく myfield1
値の平均の集約です。
stats avg(myfield1) by bin(5m)
次のクエリでは、異なるフィールドに基づく 3 つの値の視覚化を生成します。データポイントは 5 分間隔で作成されます。視覚化が生成されるのは、クエリに集計関数が含まれており、グループ化フィールドとして bin()
が使用されているためです。
stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)
折れ線グラフと積み上げ面グラフの制限
ログエントリ情報を集計するが、bin()
関数を使用しないクエリでは、棒グラフを生成できます。ただし、これらのクエリは折れ線グラフや積み上げ面グラフを生成できません。これらのタイプのクエリの詳細については、「フィールド別にグループ化されたログデータを視覚化」を参照してください。
フィールド別にグループ化されたログデータを視覚化
stats
関数と 1 つ以上の集計関数を使用するクエリの棒グラフを作成できます。詳細については、「Aggregation Functions in the Stats Command」を参照してください。
視覚化を表示するには、クエリを実行します。次に、[Visualization (視覚化)] タブを選択し、[Line (線)] の横にある矢印を選択して、[Bar (棒)] を選択します。棒グラフでは、視覚化は最大 100 本の棒に制限されています。
例
完全なチュートリアルについては、「チュートリアル: ログフィールド別にグループ化された視覚化を生成するクエリを実行する」を参照してください。次の段落では、フィールド別の視覚化のクエリに関する他の例を示します。
次の VPC フローログクエリは、各宛先アドレスについて、セッションごとに転送された平均バイト数を検出します。
stats avg(bytes) by dstAddr
また、結果の値ごとに複数の棒を含むグラフを生成することもできます。たとえば、次の VPC フローログクエリは、各宛先アドレスについて、セッションごとに転送された平均および最大バイト数を検出します。
stats avg(bytes), max(bytes) by dstAddr
次のクエリは、各クエリタイプの Amazon Route 53 クエリログの数を検出します。
stats count(*) by queryType
1 つのクエリで複数の stats コマンドを使用する
1 つのクエリで最大 2 つの stats
コマンドを使用できます。これにより、最初の集計の出力に対して追加の集計を実行できます。
例: 2 つの stats
コマンドによるクエリ
例えば、次のクエリは、最初に 5 分間のビンの合計トラフィック量を検索し、次に、その 5 分間のビンの中で最大、最低、および平均のトラフィック量を計算します。
FIELDS strlen(@message) AS message_length | STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m) | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb
例: 複数の stats コマンドを filter
、fields
、bin
などの他の関数と組み合わせます。
1 つのクエリで、2 つの stats
コマンドを、filter
や fields
などの他のコマンドと組み合わせることができます。例えば、次のクエリは、セッション内の異なる IP アドレス数を調べ、クライアントプラットフォームごとにセッション数を調べて、それらの IP アドレスをフィルタリングして、最後にクライアントプラットフォームごとのセッションリクエストの平均を求めます。
STATS count_distinct(client_ip) AS session_ips, count(*) AS requests BY session_id, client_platform | FILTER session_ips > 1 | STATS count(*) AS multiple_ip_sessions, sum(requests) / count(*) AS avg_session_requests BY client_platform
クエリでは、bin
と dateceil
の関数を複数の stats
コマンドと共に使用できます。例えば、次のクエリは、最初にメッセージを 5 分のブロックに結合し、次に 5 分間のブロックを 10 分のブロックに集約して、各 10 分ブロック内の最大、最低、および平均のトラフィック量を計算します。
FIELDS strlen(@message) AS message_length | STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t | STATS max(logs_mb) AS peak_ingest_mb, min(logs_mb) AS min_ingest_mb, avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)
注意事項と制限事項
1 つのクエリにつき、最大 2 つの stats
コマンドを持つことができます。このクォータは変更できません。
sort
または limit
コマンドを使用する場合は、2 番目の stats
コマンドの後に指定する必要があります。2 番目の stats
コマンドより前に置くと、クエリは無効になります。
クエリに 2 つの stats
コマンドがある場合、1 つ目の stats
集計が完了するまで、クエリの結果の一部は表示されなくなります。
1 つのクエリにある 2 番目の stats
コマンドでは、1 番目の stats
コマンドで定義されているフィールドのみを参照できます。例えば、最初の stats
集計以降 @message
フィールドが使用できなくなるため、次のクエリは無効です。
FIELDS @message | STATS SUM(Fault) by Operation # You can only reference `SUM(Fault)` or Operation at this point | STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message
最初の stats
コマンドの後に参照するフィールドは、すべて最初の stats
コマンドで定義する必要があります。
STATS sum(x) as sum_x by y, z | STATS max(sum_x) as max_x by z # You can only reference `max(sum_x)`, max_x or z at this point
重要
この bin
関数は常に @timestamp
フィールドを暗黙的に使用します。つまり、2 番目の stats
コマンドでは、1 番目の stats
コマンドを使用して timestamp
フィールドを伝達しないと bin
を使用できないということです。例えば、以下のクエリは有効ではありません。
FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes BY @logStream | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field
代わりに、最初の stats
コマンドで @timestamp
フィールドを定義し、次の例のように 2 番目の stats
コマンドで dateceil
と共にそれを使用できます。
FIELDS strlen(@message) AS message_length | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream | STATS avg(ingested_bytes) BY dateceil(@t, 5m)
統計と併用する関数
CloudWatch Logs Insights は、統計集計関数と統計非集計関数の両方をサポートしています。
statsaggregation 関数は、stats
コマンドで使用します。また、他の関数の引数としても使用します。
関数 | 結果タイプ | 説明 |
---|---|---|
|
数値 |
指定したフィールドの値の平均。 |
|
数値 |
ログイベントをカウントします。 |
|
数値 |
フィールドの一意な値の数を返します。このフィールドの濃度が非常に高い場合 (一意な値が多数含まれている場合)、 |
|
LogFieldValue |
クエリを実行したログにおける、このログフィールドの値の最大数。 |
|
LogFieldValue |
クエリを実行したログにおける、このログフィールドの値の最小数。 |
|
LogFieldValue |
パーセンタイルは、データセットにおける値の相対的な位置を示します。たとえば、 |
|
数値 |
指定されたフィールドの値の標準偏差。 |
|
数値 |
指定したフィールドの値の合計。 |
統計非集計関数
非集約関数は、stats
コマンドで使用します。また、他の関数の引数としても使用します。
関数 | 結果タイプ | 説明 |
---|---|---|
|
LogField |
クエリを実行したうち最も早いタイムスタンプがあるログイベントから |
|
LogField |
クエリを実行したうち最も遅いタイムスタンプがあるログイベントから |
|
LogField |
クエリを実行したログをソートすると最初に来る |
|
LogField |
クエリを実行したログをソートすると最後に来る |