本文へスキップ

トラブルシューティング

whatap-go-inst使用時に発生する可能性のある問題と解決方法を案内します。

計測が適用されない場合

ステップ1: ビルドキャッシュの削除

# ビルドキャッシュを削除
go clean -cache

# 再ビルド
whatap-go-inst go build ./...

ステップ2: デバッグモードの確認

# デバッグ出力で計測過程を確認
GO_API_AST_DEBUG=1 whatap-go-inst go build ./...

一般的な問題解決

特定のファイルのみ計測されない

原因:

  • ファイルが除外パターンに含まれる
  • 生成されたコードファイル (*.pb.go, *_generated.goなど)

確認方法:

# スキップされたファイルを確認
GO_API_AST_DEBUG=1 whatap-go-inst go build ./... 2>&1 | grep "SKIP"

解決方法:

除外パターンを調整するか、特定のファイルの除外を解除します。詳細は設定ガイド - 除外パターンを参照してください。


ビルドは成功するがデータが表示されない

1. エージェント実行の確認

ps -ef | grep whatap_agent

ない場合:

# エージェント起動
/usr/whatap/agent/whatap_agent -d

2. main()初期化の確認

# main()関数にtrace.Initがあるか確認
GO_API_AST_DEBUG=1 whatap-go-inst go build ./... 2>&1 | grep "trace.Init"

3. whatap.conf設定の確認

cat /usr/whatap/agent/whatap.conf

必須設定:

license={アクセスキー}
whatap.server.host={収集サーバーIP}

Docker環境で計測されない

問題: マルチステージビルドでwhatap-go-instがインストールされない

解決方法:

FROM golang:1.21 AS builder

# whatap-go-instをインストール
RUN go install github.com/whatap/go-api-inst/cmd/whatap-go-inst@latest

# 初期化およびビルド
COPY . .
RUN whatap-go-inst go build -o /app/myapp .

詳細はDockerインストールガイドを参照してください。


実行モード比較

whatap-go-instは複数の実行モードを提供します。状況に合ったモードを選択してください。

モード比較表

モードコマンド元の変更依存関係自動推奨用途
基本wrapモードwhatap-go-inst go build推奨
injectモードwhatap-go-inst inject別途出力コードレビュー/CI

基本wrapモード (推奨)

# initなしで直接ビルド
whatap-go-inst go --wrap build ./...

特徴:

  • ✅ 元のファイルを全く変更しない
  • ✅ 変更されたファイルを./whatap-instrumentedに保存。エラー分析が容易。

使用事例:

  • CI/CDでの選択的計測

injectモード

# 計測されたコードを別ディレクトリに出力
whatap-go-inst inject -s ./src -o ./instrumented

# 出力されたコードでビルド
cd instrumented
go build ./...

特徴:

  • ✅ 計測されたコードを別途保存
  • ✅ 元と計測コードを比較可能
  • ⚠️ 依存関係の手動インストールが必要
  • ⚠️ ビルド前にinject実行が必要

使用事例:

  • 計測結果のレビュー
  • CI/CDパイプラインでの事前計測
  • 元と変換コードのdiff確認

go-apiからの移行

既存のgo-apiを直接使用したプロジェクトをwhatap-go-instに移行する方法です。

ステップ1: 既存のwhatapコードを削除

# 自動挿入パターンのみ削除
whatap-go-inst remove -s . -o ./cleaned

# 手動挿入パターンも削除を試行
whatap-go-inst remove --all -s . -o ./cleaned

ステップ2: 変更事項の確認

# diffで差異を確認
diff -r . ./cleaned

# またはgit diff
cp -r ./cleaned/* .
git diff

ステップ3: カスタムコードの復元

remove --allで削除されなかったパターンや必要なカスタムコードを手動で復元します。

// 例: カスタムトランザクションコードは保持
ctx, _ := trace.Start(context.Background(), "CustomTx")
defer trace.End(ctx, nil)

ステップ4: whatap-go-instでビルド

whatap-go-inst go build ./...
注意

自動削除されないパターン:

  • 変数割り当て: ctx := trace.Start(...)
  • クロージャーパターン: whatapsql.Wrap(...)
  • 複雑なカスタム計測

これらのパターンは警告メッセージが出力され、手動で削除する必要があります。

追加サポート

上記の方法で解決しない場合:

  1. デバッグログを収集
   GO_API_AST_DEBUG=1 whatap-go-inst go build ./... > debug.log 2>&1
  1. 環境情報を収集
   go version
whatap-go-inst version
cat .whatap/config.yaml
  1. **WhaTapサポートセンター**にお問い合わせ
    • デバッグログ
    • 環境情報
    • 再現可能な最小例
まだ解決しませんか?

基本計測で処理できない場合は、ユーザー定義計測を参照してください。