LoginSignup
5
4

More than 5 years have passed since last update.

BigQuery標準SQLでAppEngineのエラーメッセージログを検索する

Posted at

背景

AppEngineはStackDriver Loggingにログが蓄積されますが、それをBigQueryにストリーミングさせることができます。
私も普段この設定を入れて過去のログ保管や検索を行なっているのですが、エラーメッセージはArrayになっており単純に WHERE しただけではエラーになるため備忘としてここに記します。

クエリー内容

UNSET()でArray部分を展開し別名(この例では l (アルファベットの小文字エル)を付ける。
その l に対してWHEREをかける。
下記の例では2017年11月中に発生したOOMのログ、且つURLが /example で始まるものを日付順で抽出する。

SELECT
  timestamp,
  l.logMessage,
  protoPayload.resource 
FROM
  `appengine_request.appengine_googleapis_com_request_log_201711*`,
  UNNEST(protoPayload.line) as l
WHERE
  l.logMessage LIKE 'Exceeded soft private memory limit%'
  AND
  protoPayload.resource LIKE '/example%'
ORDER BY
  timestamp ASC

出力イメージ

timestamp logMessages resource
2017-11-11 00:12:02 UTC Exceeded soft private memory limit of 128 MB with 152 MB after servicing 56 requests total /example?url=xxxxx
2017-11-30 00:13:03 UTC Exceeded soft private memory limit of 128 MB with 132 MB after servicing 11 requests total /example?url=yyyyy

注意点

例によって時刻はUTCが基準なので、キッチリ抜き出したい場合は 期間指定クエリー の要領でJSTベースにすると楽。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4