🆙

clue 更新情報 v0.15.0 & v0.16.0

2023/01/15に公開

概要

clue (Microservice Instrumentation) v0.15.0 の更新情報です。今回デバッグ用のパッケージが新たに追加されました。

追記: v0.16.0 が出てパラメータの指定時の名前がちょっと変わりました。合わせて記載します。

詳細

デバッグ用の debug パッケージが追加され、以下の3つのミドルウエアが使えるようになりました。clue に付属している weather というサンプルに追加部分があるのでそれで分かると思います。ちょっと差し込むだけで使えそうです。debug 云うだけあって、debug 用なのでそこのところヨロシク。

  • MountDebugLogEnabler
    • デバッグログを動的に on/off するためのハンドラを HTTP/gRPC にマウントします
  • MountPprofHandlers
    • HTTP mux に pprof ハンドラーをマウントします
  • LogPayloads
    • リクエストと結果のペイロードを記録する Goa 用のエンドポイントミドルウェアです

MountDebugLogEnabler

デバッグログを動的に on/off するためのハンドラを HTTP/gRPC にマウントします。

このミドルウエアを差し込んでおくと、HTTP なら /debug?enable=true /debug?debug-logs=onとアクセスするとデバッグログを on に出来ます。off にするときは /debug?enable=false /debug?debug-logs=offとすればいいです。

MountPprofHandlers

このミドルウエアを差し込んでおくと、pprof を以下のエンドポイントで利用できるようになります。pprof/profile にアクセスすると30秒間プロファイルをおこなって記録してくれます(注:これは pprof のデフォルト動作。記録する時間もパラメータで与えられます)。

v0.16.0 での調整:pprof/profile の prefix はオプションで変えられるようになりました。

/debug/pprof/
/debug/pprof/allocs
/debug/pprof/block
/debug/pprof/cmdline
/debug/pprof/goroutine
/debug/pprof/heap
/debug/pprof/mutex
/debug/pprof/profile
/debug/pprof/symbol
/debug/pprof/threadcreate
/debug/pprof/trace

コードへの差し込み方 はやはり簡単です。

LogPayloads

このミドルウエアを差し込んでおくと、アクセスに対する payload と response をログ出力してくれます。それぞれ payload, result というキーで結果を ログ出力してくれます。この機能はデバッグが有効の時(log.DebugEnable(ctx) == true)の時のみ有効です。payload の中には機微に触れる情報が含まれる事もあるので、やはり production で間違って有効にしないようにしておいた方がよさそうです。使い方 はこちらも簡単です。

さいごに

clue、ちょっとずつ機能が増えてますね。なかなか使う機会がないのでどっかで使ってみたいです・・・。

Happy hacking!

Discussion