トレーサのデフォルトの動作のオーバーライド
関数名およびビジネストランザクション名をカスタマイズするか、コードでトレーサ設定を維持したいときは、AppDynamics.Config.Builder オブジェクトを使用して環境変数をオーバーライドできます。このオプションでは、必要なソースから実行時に値を取得できます。
AppDynamics.Config.Builder configBuilder = new AppDynamics.Config.Builder();
configBuilder.accountName(accountName)
.applicationName(appName)
.tierName(tierName)
.controllerHost(controllerHost)
.controllerPort(controllerPort)
.defaultBtName(context.getFunctionName() + "_bt")
.controllerAccessKey(controllerAccessKey)
.lambdaContext(context);
自動か手動のインストルメンテーションメソッドに応じて、configBuilder オブジェクトの実装が少し異なります。
自動インストルメンテーション
自動インストルメンテーションは、getConfigBuilder() ファクトリメソッドを実装する MonitoredRequestStreamHandler クラスを使用し、トレーサをインストルメント化します。
このファクトリ方式をオーバーライドし、任意のビルダー方式を使用して環境変数を設定できます。
コードスニペットは、自動インストルメンテーションのコードに変数を入力する方法を示しています。
@Override
public AppDynamics.Config.Builder getConfigBuilder(Context context) {
String controllerHost = System.getenv("APPDYNAMICS_CONTROLLER_HOST");
int controllerPort = Integer.parseInt(System.getenv("APPDYNAMICS_CONTROLLER_PORT"));
String accountName = System.getenv("APPDYNAMICS_ACCOUNT_NAME");
String appName = System.getenv("APPDYNAMICS_APPLICATION_NAME");
String tierName = System.getenv("APPDYNAMICS_TIER_NAME");
String controllerAccessKey = System.getenv("APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY");
AppDynamics.Config.Builder configBuilder = new AppDynamics.Config.Builder();
configBuilder.accountName(accountName)
.applicationName(appName)
.tierName(tierName)
.controllerHost(controllerHost)
.controllerPort(controllerPort)
.defaultBtName(context.getFunctionName() + "_bt")
.controllerAccessKey(controllerAccessKey)
.lambdaContext(context);
return configBuilder;
}
手動インストルメンテーション
手動インストルメンテーションでは、AppDynamics.getTracer() メソッドのオーバーロードされたバージョンによってトレーサの設定が構成されます。オーバーロードされたメソッドは、configBuilder オブジェクトを context オブジェクトではなくパラメータとして使い、トレーサをインストルメント化します。
この AppDynamics.getTracer()のバリアントを使用する場合は、 AppDynamics.Config.Builder.lambdaContext() メソッドを介して context オブジェクトを渡す必要があります。
コードスニペットは、手動インストルメンテーションのコードに変数を入力する方法について示しています。
@Override
public void handleRequest(InputStream input, OutputStream output, Context context) throws IOException) {
String controllerHost = System.getenv("APPDYNAMICS_CONTROLLER_HOST");
int controllerPort = Integer.parseInt(System.getenv("APPDYNAMICS_CONTROLLER_PORT"));
String accountName = System.getenv("APPDYNAMICS_ACCOUNT_NAME");
String appName = System.getenv("APPDYNAMICS_APPLICATION_NAME");
String tierName = System.getenv("APPDYNAMICS_TIER_NAME");
String controllerAccessKey = System.getenv("APPDYNAMICS_AGENT_ACCOUNT_ACCESS_KEY");
AppDynamics.Config.Builder configBuilder = new AppDynamics.Config.Builder();
configBuilder.accountName(accountName)
.applicationName(appName)
.tierName(tierName)
.controllerHost(controllerHost)
.controllerPort(controllerPort)
.defaultBtName(context.getFunctionName() + "_bt")
.controllerAccessKey(controllerAccessKey)
.lambdaContext(context);
//Replace the context object with config.Builder.build()
Tracer tracer = AppDynamics.getTracer(configBuilder.build());