z/OS での.NET トレースの設定

z/OS システムでは、手動によるインスツルメンテーションを使用して、.NET のトレースを設定できます。 プラットフォームの制限により、 z/OS では自動インスツルメンテーションは利用できません。

.NET の監視機能の詳細については、 「.NET の監視機能の仕組み」を参照してください。

準備

z/OS で「.NET Core 」のトレースを設定するには、以下の手順を実行してください:

  • z/OS システム上で Instana エージェントが実行されていることを確認してください。 『 Instana 』のドキュメントにある 「 z/OS へのエージェントのインストール」 を参照してください。
  • お使いの.NET Core のバージョンがサポート対象であることを確認してください。
  • サポート情報を確認してください。

.NET のトレース機能を有効にする

z/OS システムでは、 CoreCLR のプロファイリング機能( API )はサポートされていません。 その結果、このプラットフォームでは、ILの書き換えやネイティブプロファイラの接続による自動計測機能は利用できません。

こうしたアーキテクチャ上の制約があるため、 z/OS 上の.NET アプリケーションでトレースを有効にするには、手動によるインストルメンテーションを行う必要があります。

Instana z/OS での手動によるインストルメンテーションについて、2つのアプローチをサポートしています:

  • 方法 1: Instana SDK の使用 : Instana の監視のみが必要な場合は、このSDKを使用してください。直接連携が可能で、設定も簡単です。
  • 方法 2: OpenTelemetry SDK の使用 :ベンダーに依存しない計測機能や、さまざまな可観測性バックエンドを切り替える柔軟性が必要な場合は、この SDK を使用してください。

方法 1: Instana SDK を使用する

Instana のトレースSDKを使用して、カスタムスパンとトレースを作成します。

Instana SDK を使用してトレースを有効にするには、以下の手順を実行してください:

  1. プロジェクトに NuGet パッケージ Instana.Tracing.Core.Sdk を追加してください。
  2. アプリケーションのコード内でカスタムスパンを作成するには:

    using Instana.Tracing.Sdk.Spans;
    
    // Create an entry span for incoming requests
    using (var span = CustomSpan.Create(SpanType.ENTRY, "operation-name"))
    {
        span.SetServiceName("your-service-name");
        span.SetEndpointName("endpoint-name");
        span.SetData("custom.key", "custom-value");
    
        // Your application logic here
    }
    
    // Create an intermediate span for internal operations
    using (var span = CustomSpan.Create(SpanType.INTERMEDIATE, "internal-operation"))
    {
        span.SetServiceName("your-service-name");
        span.SetEndpointName("operation-name");
    
        // Your internal logic here
    }
  3. Program.csオプション:アプリケーションの起動コード(通常は)内で Instana トレーサーを設定し、トレースに表示されるデフォルトのサービス名とエンドポイント名を指定します:

    using Instana.Tracing.Sdk;
    
    // Configure Instana Tracer
    TracerConfiguration.ServiceName = "your-service-name";
    TracerConfiguration.EndpointName = "your-endpoint-name";
  4. アプリケーションをデプロイして起動します。 アプリケーションのエンドポイントへのトラフィックを生成します。
  5. トレースが収集されていることを確認してください:

    1. Go Instana のUIで、「アプリケーション 」>「 サービス 」に移動します。
    2. サービス名を探して、そのトレースとメトリクスを確認してください。

Instana .NET Core トレーシング SDK の詳細については、.NET または .NET Core トレーシング SDK を参照してください。

方法 2: OpenTelemetry SDK を使用する

OpenTelemetry SDKと OTLP エクスポーターを使用して、 Instana にトレースを送信します。

<agent-root-path>/agent/etc/instana/configuration.yamlOpenTelemetry SDK を使用する前に、エージェント設定ファイルで以下の設定を有効にし、 Instana エージェントが OpenTelemetry のデータを受け入れるように設定してください:

# Enable OpenTelemetry
com.instana.plugin.opentelemetry:
  grpc:
    enabled: true
  http:
    enabled: true

# Enable .NET Core AutoTracing
com.instana.plugin.netcore:
  tracing:
    enabled: true

OpenTelemetry SDK を使用してトレースを有効にするには、以下の手順を実行してください:

  1. プロジェクトに必要な OpenTelemetry および NuGet パッケージを追加してください:

    • OpenTelemetry.Extensions.Hosting
    • OpenTelemetry.Exporter.OpenTelemetryProtocol
    • OpenTelemetry.Exporter.Console (コンソールベースのログ出力が必要な場合)
    • OpenTelemetry.Instrumentation.AspNetCore ( ASP.NET Core ウェブアプリケーション向け)
    • OpenTelemetry.Instrumentation.Http ( HTTP のクライアント計測用)
  2. Program.csアプリケーションの起動コード(通常は 内)で ` OpenTelemetry ` を設定します:

    using OpenTelemetry.Resources;
    using OpenTelemetry.Trace;
    
    var builder = WebApplication.CreateBuilder(args);
    
    // Configure OpenTelemetry
    builder.Services.AddOpenTelemetry()
        .ConfigureResource(resource =>
        {
            resource.AddService(
                serviceName: "your-service-name",
                serviceVersion: "1.0.0",
                serviceInstanceId: Environment.ProcessId.ToString());
        })
        .WithTracing(tracing =>
        {
            tracing
                .AddSource("your-service-name")
                .AddAspNetCoreInstrumentation()
                .AddHttpClientInstrumentation()
                .AddOtlpExporter(options =>
                {
                    // Configure OTLP endpoint to point to Instana Agent
                    options.Endpoint = new Uri("http://localhost:4317");
                });
        });
  3. OpenTelemetry を使用してカスタムスパンを作成する ActivitySource:

    using System.Diagnostics;
    
    // Create an ActivitySource
    private static readonly ActivitySource ActivitySource = new ActivitySource("your-service-name", "1.0.0");
    
    // Create custom spans
    using (var activity = ActivitySource.StartActivity("operation-name"))
    {
        activity?.SetTag("custom.key", "custom-value");
        activity?.SetTag("operation.type", "business-logic");
    
        // Your application logic here
    
        activity?.AddEvent(new ActivityEvent("Operation completed"));
    }
  4. アプリケーションをデプロイして起動します。 アプリケーションのエンドポイントへのトラフィックを生成します。
  5. トレースが収集されていることを確認してください:

    1. Go Instana のUIで、「アプリケーション 」>「 サービス 」に移動します。
    2. サービス名を探して、そのトレースとメトリクスを確認してください。