Yuichi Murata's Engineering Blog

Go / App Engine / GCP とか書いていきます

タスクキューのリクエストのログを分ける

StackDriver Logging でログを見るときや、ログメトリクスを定義する時にタスクキューのリクエストを別途扱いたい時がある。たとえば、通常のユーザーリクエストはレスポンスタイムの遅延を許容したくないが、タスクキューの場合は問題ないなどのケースである。

一番思いつきやすいのが、タスクキューのパスをログフィルターで除外することだが、もっと簡単な方法があった。以下でタスクキューを除いたログを閲覧したり、ログメトリクスを定義できる。

resource.type = gae_app AND resource.labels.module_id = "xxxx" AND logName = "projects/xxxx/logs/appengine.googleapis.com%2Frequest_log" AND NOT protoPayload.taskName:*

Task Queue の処理には必ず protoPayload.taskName が入る。フィールドがあるかないかのチェックは protoPayload.taskName:* のようにすれば良い。

フィールド内の特定の値をテストせずにフィールドの有無をテストするには、:* 比較を使用します。 Advanced Logs Filters  |  Stackdriver Logging  |  Google Cloud Platform

つまりこれで OK。