UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Stackdriver Trace API】Redisをトレースしないようにする

Googleの Stackdriver Trace API で child span上限1000個の警告エラーがでていて、ループ内で実行していたredis-set をやめて、redis-msetにするように修正した

uga-box.hatenablog.com

uga-box.hatenablog.com

しかし、今度は span 200個以上 の警告がでてしまい解決しなかった

@google-cloud/trace-agent ERROR TraceApi#createChildSpan: [redis@2.8.0] Adding child span [redis-mset] will cause the trace with root span [/] to contain more than 200 spans. This is likely a memory leak. @google-cloud/trace-agent ERROR TraceApi#createChildSpan: Please see https://github.com/googleapis/cloud-trace-nodejs/wiki for details and suggested actions.

mset についてよくわかっていなかったので、それは今度調べるとして

そもそもredisのRPCはStackdriver でトレースする必要もないと思うので除外することにした

やり方

ソースコードを読むとredisはpluginが用意されており、デフォルトでトレースされるようになっているため、pluginsコンフィグからredisを抜いてあげる必要がある

https://github.com/googleapis/cloud-trace-nodejs/blob/e357efcb87e4b69332a7e7c354d8ee84c3298d10/src/config.ts#L345

後続処理でpluginsのkeyに対するvalueをif文で判定しているので、null""をセットしておけばよく

ちょっとブサイクだけどこんな感じで除外することができた

require("@google-cloud/trace-agent").start({
  plugins: {
    redis: null,
  },
});