Go コンパイル タイム インスツルメンテーションのトラブル シューティング

概要

このガイドでは、 Orchestrion が管理するビルドのトラブル シューティング方法を説明します。これらの手順は、ビルド プロセスに関するインサイトを Datadog が収集するのに役立ち、不具合報告の支援にもなります。

生成されたファイルには、ソース コードや依存関係名など、機微なプロジェクト情報が含まれる場合があります。このような情報を公開で共有することに懸念がある場合は、Datadog サポートに連絡し、非公開でデータを共有してください。

ワーク ツリーの保持

Orchestrion は、 go build のワーク ツリーにビルド時の変換を記録します。ビルド後に go ツールチェーンがこのディレクトリをクリーンアップしないようにするには、 -work フラグを使用します :

orchestrion go build -work ./...
WORK=/tmp/go-build2455442813

ワーク ツリーの場所は、ビルドの開始時に WORK= として出力されます。このディレクトリには、ビルドされた各 go パッケージごとのサブディレクトリが含まれ、これらは ステージ ディレクトリ と呼ばれます。

ワーク ツリーの内容

Orchestrion がソース ファイルにコードを挿入すると、変更済みファイルは orchestrion/src サブディレクトリ内のパッケージのステージ ディレクトリ ( $WORK/b### ) に書き出されます。パッケージのインポート構成が変更された場合、元のファイルは .original サフィックス付きで保持されます。これらの可読なファイルを確認することで、 Orchestrion の動作を検証できます。解釈の支援が必要な場合は Datadog サポートにお問い合わせください。

ログ設定

ログ レベル

Orchestrion のログ出力は、 ORCHESTRION_LOG_LEVEL 環境変数または --log-level フラグで制御できます :

レベル説明
NONE, OFF (デフォルト)ログ出力なし
ERRORエラー情報のみ
WARNエラーと警告
INFOエラー、警告、および情報メッセージ
DEBUG詳細なロギング
TRACE極めて詳細なロギング
ORCHESTRION_LOG_LEVELDEBUG または TRACE レベルに設定すると、ビルド パフォーマンスに大きな影響を与える可能性があります。通常運用ではこれらの設定は推奨されません。

ログ ファイル出力

ORCHESTRION_LOG_FILE 環境変数または --log-file フラグに希望のファイル パスを設定すると、ログ メッセージをコンソールではなくファイルに書き出せます。

ORCHESTRION_LOG_FILE を設定すると、 ORCHESTRION_LOG_LEVEL のデフォルト値は WARN に変更されます。

ログ ファイル パスには $PID または ${PID} トークンを含めることができ、これはロギング プロセスの PID に置き換えられます。これによりファイルの競合が減りますが、大規模なプロジェクトでは複数のログ ファイルが作成されます。

ファイル パスに $PID が含まれているかどうかに関係なく、ロギングは既存のファイルを上書きせず追記します。

参考資料

お役に立つドキュメント、リンクや記事: