Stackdriver Trace
https://github.com/googleapis/cloud-trace-nodejs/blob/master/src/index.ts
start() で開始、get で tracer をとれる
https://github.com/googleapis/cloud-trace-nodejs/blob/a8ff263f5e9c990dc4430ca229e37f8e572e937e/src/trace-api.ts#L68
runInRootSpan
cloud-trace-nodejs/trace-api.md at master · googleapis/cloud-trace-nodejs
Tracer についてのドキュメント
Tracer は start() したときに返るやつ
Cloud Functions
公式には未対応、わりと放置されていそう
Stackdriver Trace support 124761993 - Visible to Public - Issue Tracker
Tracking Issue Auto-tracing not working in Google Cloud Functions/Firebase Cloud Functions · Issue #725 · googleapis/cloud-trace-nodejs
こうすると CloudFunctions でもできる
cloud-functions-playground/stackdriver-trace-node at master · pokutuna/cloud-functions-playground
#TODO このミドルウェアいい感じにエラー時も動くかどうか調べる → Express.js のミドルウェアとエラーハンドリング
samplingRate
こういう感じでトレースのフィルタをかける
code:start
require('@google-cloud/trace-agent').start({
samplingRate: 5, // sample 5 traces per second, or at most 1 every 200 milliseconds.
ignoreUrls: /^\/ignore-me/ // ignore the "/ignore-me" endpoint.
ignoreMethods: 'options' // ignore requests with OPTIONS method (case-insensitive).
});
// ...
from https://github.com/googleapis/cloud-trace-nodejs#usage
cloud-trace-nodejs/tracing-policy.ts at master · googleapis/cloud-trace-nodejs
config 経由で作られる BuiltinTracePolicy> Sampler オブジェクトが window(1秒) 単位のトレース数を管理している
同時実行数が多い時に1秒窓の先頭側に偏ったりしないのかな?
shouldTrace でトレースするかどうかを返す
cloud-trace-nodejs/trace-api.ts at master · googleapis/cloud-trace-nodejs
runInRootSpan 内でチェックして記録するかどうか決めている
権限付与
service account の credential を渡さなくても Cloud Function の invoker(と思われるやつ)に付与したらうまくいかないかな?
→ だめそう
https://gyazo.com/26b540ba6df0ca4475f26009c1af03d6
https://gyazo.com/6e20da99e3f4a688b6daddf36acc3985
素直に service account を払い出して → Cloud IAM start 時に渡す
code:tart.js
require("@google-cloud/trace-agent").start({
projectId,
keyFilename: './key.json'
});
#GCP