翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
サンプルクエリ
このセクションでは、CloudWatch コンソール
クエリ構文の詳細については、「」を参照してくださいCloudWatch Logs Insights クエリ構文。
トピック
一般的なクエリ
最近追加された 25 件のログイベントを検索します。
fields @timestamp, @message | sort @timestamp desc | limit 25
1 時間あたりの例外数のリストを表示します。
filter @message like /Exception/ | stats count(*) as exceptionCount by bin(1h) | sort exceptionCount desc
例外ではないログイベントのリストを取得します。
fields @message | filter @message not like /Exception/
server
フィールドの一意の値ごとに最新のログイベントを表示します。
fields @timestamp, server, severity, message | sort @timestamp asc | dedup server
各 severity
タイプの、server
フィールドの一意の値ごとに最新のログイベントを表示します。
fields @timestamp, server, severity, message | sort @timestamp desc | dedup server, severity
Lambda ログのクエリ
過剰にプロビジョニングされたメモリの量を確認します。
filter @type = "REPORT" | stats max(@memorySize / 1000 / 1000) as provisonedMemoryMB, min(@maxMemoryUsed / 1000 / 1000) as smallestMemoryRequestMB, avg(@maxMemoryUsed / 1000 / 1000) as avgMemoryUsedMB, max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB, provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB
レイテンシーレポートを作成します。
filter @type = "REPORT" | stats avg(@duration), max(@duration), min(@duration) by bin(5m)
遅い関数呼び出しを検索し、再試行やクライアント側コードが原因で発生する可能性のある重複リクエストを削除します。このクエリでは、@duration
はミリ秒単位です。
fields @timestamp, @requestId, @message, @logStream | filter @type = "REPORT" and @duration > 1000 | sort @timestamp desc | dedup @requestId | limit 20
Amazon VPCフローログのクエリ
ホスト間での上位 15 件のパケット転送を検索します:
stats sum(packets) as packetsTransferred by srcAddr, dstAddr | sort packetsTransferred desc | limit 15
特定のサブネットにおけるホストの上位 15 バイトの転送を検索します。
filter isIpv4InSubnet(srcAddr, "192.0.2.0/24") | stats sum(bytes) as bytesTransferred by dstAddr | sort bytesTransferred desc | limit 15
がデータ転送プロトコルUDPとして使用する IP アドレスを見つけます。
filter protocol=17 | stats count(*) by srcAddr
キャプチャウィンドウでフローレコードがスキップされた IP アドレスを検索します。
filter logStatus="SKIPDATA" | stats count(*) by bin(1h) as t | sort t
接続のたびに 1 つのレコードを検索し、ネットワークの接続問題の解決を促します。
fields @timestamp, srcAddr, dstAddr, srcPort, dstPort, protocol, bytes | filter logStream = 'vpc-flow-logs' and interfaceId = 'eni-0123456789abcdef0' | sort @timestamp desc | dedup srcAddr, dstAddr, srcPort, dstPort, protocol | limit 20
Route 53 ログのクエリ
クエリタイプ別に 1 時間あたりのレコードのディストリビューションを検索します。
stats count(*) by queryType, bin(1h)
リクエスト数が最も多い 10 個のDNSリゾルバーを見つけます。
stats count(*) as numRequests by resolverIp | sort numRequests desc | limit 10
サーバーがDNSリクエストを完了できなかったドメインとサブドメイン別のレコード数を検索します。
filter responseCode="SERVFAIL" | stats count(*) by queryName
CloudTrail ログのクエリ
サービス別、イベントタイプ別、 AWS リージョン別のログエントリ数を検索します。
stats count(*) by eventSource, eventName, awsRegion
特定の AWS リージョンで開始または停止された Amazon EC2ホストを検索します。
filter (eventName="StartInstances" or eventName="StopInstances") and awsRegion="us-east-2"
新しく作成されたARNsユーザーの AWS リージョン、ユーザー名、および IAM を検索します。
filter eventName="CreateUser" | fields awsRegion, requestParameters.userName, responseElements.user.arn
の呼び出し中に例外が発生したレコードの数を検索しますAPIUpdateTrail
。
filter eventName="UpdateTrail" and ispresent(errorCode) | stats count(*) by errorCode, errorMessage
1.0 TLS または 1.1 が使用されたログエントリを検索する
filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ] | stats count(*) as numOutdatedTlsCalls by userIdentity.accountId, recipientAccountId, eventSource, eventName, awsRegion, tlsDetails.tlsVersion, tlsDetails.cipherSuite, userAgent | sort eventSource, eventName, awsRegion, tlsDetails.tlsVersion
TLSバージョン 1.0 または 1.1 を使用したサービスあたりの呼び出し数を確認する
filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ] | stats count(*) as numOutdatedTlsCalls by eventSource | sort numOutdatedTlsCalls desc
のクエリ Amazon API Gateway
最新の 4XX エラーを 10 件検索します。
fields @timestamp, status, ip, path, httpMethod | filter status>=400 and status<=499 | sort @timestamp desc | limit 10
Amazon API Gateway アクセスロググループ内で最も実行時間が長い Amazon API Gateway リクエストを 10 件特定する
fields @timestamp, status, ip, path, httpMethod, responseLatency | sort responseLatency desc | limit 10
Amazon API Gateway アクセスロググループで最も人気のあるAPIパスのリストを返します。
stats count(*) as requestCount by path | sort requestCount desc | limit 10
Amazon API Gateway アクセスロググループの統合レイテンシーレポートを作成する
filter status=200 | stats avg(integrationLatency), max(integrationLatency), min(integrationLatency) by bin(1m)
NAT ゲートウェイのクエリ
AWS 請求額が通常よりも高い場合は、Logs Insights CloudWatch を使用して上位の寄稿者を見つけることができます。次のクエリコマンドの詳細については、 AWS プレミアムサポートページの「 でNATゲートウェイ経由のトラフィックの上位の寄稿者を見つけるにはどうすればよいですかVPC?
注記
次のクエリコマンドでは、「x.x.x.x」をNATゲートウェイのプライベート IP に置き換え、「y.y」をVPCCIDR範囲の最初の 2 オクテットに置き換えます。
NATゲートウェイ経由で送信するトラフィックが最も多いインスタンスを見つけます。
filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10
NATゲートウェイ内のインスタンスとの間で送受信されるトラフィックを決定します。
filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') or (srcAddr like 'xxx.xx.xx.xx' and dstAddr like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10
内のインスタンスがアップロードとダウンロードのために最も頻繁にVPC通信するインターネット送信先を決定します。
アップロードの場合
filter (srcAddr like 'x.x.x.x' and dstAddr not like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10
ダウンロードの場合
filter (dstAddr like 'x.x.x.x' and srcAddr not like 'y.y.') | stats sum(bytes) as bytesTransferred by srcAddr, dstAddr | sort bytesTransferred desc | limit 10
Apache サーバーのログに対するクエリ
CloudWatch Logs Insights を使用して Apache サーバーログをクエリできます。以下のクエリの詳細については、 AWS クラウド運用と移行ブログの CloudWatch 「Logs Insights を使用した Apache サーバーログの簡素化
アクセスログを確認してアプリケーションの /admin パスでトラフィックをチェックできるよう、最も関連性の高いフィールドを検索します。
fields @timestamp, remoteIP, request, status, filename| sort @timestamp desc | filter filename="/var/www/html/admin" | limit 20
ステータスコード「200」 (成功) を使用して、メインページにアクセスした一意のGETリクエストの数を検索します。
fields @timestamp, remoteIP, method, status | filter status="200" and referrer= http://34.250.27.141/ and method= "GET" | stats count_distinct(remoteIP) as UniqueVisits | limit 10
Apache サービスが再起動した回数を確認します。
fields @timestamp, function, process, message | filter message like "resuming normal operations" | sort @timestamp desc | limit 20
Amazon のクエリ EventBridge
EventBridge イベント詳細タイプ別にグループ化されたイベントの数を取得する
fields @timestamp, @message | stats count(*) as numberOfEvents by `detail-type` | sort numberOfEvents desc
解析コマンドの例
glob 式を使用して、ログフィールド @message
から、抽出フィールド @user
、@method
、@latency
を抽出し、@method
および @user
との一意の組み合わせごとに平均レイテンシーを返します。
parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
正規表現を使用して、ログフィールド @message
から、フィールド @user2
、@method2
、@latency2
を抽出し、@method2
および @user2
との一意の組み合わせごとに平均レイテンシーを返します。
parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2
フィールド loggingTime
、loggingType
、loggingMessage
を抽出し、ERROR
または INFO
文字列を含むログイベントをフィルタリングし、ERROR
文字列を含むイベントの loggingMessage
および loggingType
フィールドのみを表示します。
FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError