最近のアクセス:
OpenTelemetry を使用して .NET ログを監視する方法 (SigNoz を使用)

SigNoz 可観測性バックエンドを使用したサンプルシナリオを以下に示します。
この場合、OpenTelemetry (OTel) を使って .NET アプリケーションを簡単にテストするためにコンテナを使用します。
これは、.NET で可観測性をテストするために設定できるシナリオの 1 つに過ぎません。
ドキュメンテーションによると、SigNoz Cloud にデータを送信する方法は 2 つあります:
  • 直接 SigNoz Cloud にトレースを送る
  • OTel Collector 経由でトレースを送る (推奨)
このドキュメントでは、2 つ目のオプションを使用します。
概要

前提条件

ローカルマシンに必要なのは以下の要件のみです:

GeneXus アプリケーションの設定

GeneXus 18 Upgrade 9 を使用して GeneXus Web アプリケーションを生成します。
まず、[ Observability Provider ] プロパティに値 "OpenTelemetry" を設定し、任意のオブジェクトに対して [ これだけをビルド ] を実行します。
GeneXus 側で必要な作業はこれだけです。

環境設定

ローカル環境をセットアップするためのステップ バイ ステップのガイドを以下に示します:
1. Docker にアプリケーションをデプロイします。
これによりアプリケーションをパッケージ化し、Docker イメージをビルドし、必要なときに実行できる状態にします。
デプロイフォルダの context フォルダは以下のような構造になります。Dockerfile と、バイナリとアプリケーションの実行に必要なすべてのリソースが入った temp フォルダがあります。
  • context
    • temp
    • Dockerfile
2. 以下のファイルを context フォルダ (Dockerfile がある場所) にコピーします。
  • docker-compose.yaml
version: "3"
services: 
      
  # アプリケーションからログ、メトリックスおよびトレースを受け取る OTEL Collector
  otel-collector:
    image: otel/opentelemetry-collector:latest
    command:  [  "--config=/etc/otel-collector.yaml"  ] 
    volumes:
      - ./otel-collector.yaml:/etc/otel-collector.yaml
    ports:
      - "4317:4317"
      - "4318:4318"
      - "9201:9201"

# Sample application
  otelsampleapp:
    build: 
      context: .     
    environment:
      - OTEL_EXPORTER_OTLP_PROTOCOL=grpc
      - OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
      - OTEL_RESOURCE_ATTRIBUTES=service.namespace=GeneXus,service.name=sample-app,service.version=1.0.1
      - OTEL_METRICS_EXPORTER=otlp
      - OTEL_TRACES_EXPORTER=otlp
      - OTEL_LOGS_EXPORTER=otlp,logging
      - GX_LOG_LEVEL=debug
      - ASPNETCORE_URLS=http://*:8080

    ports:
      - "9999:8080"
このファイルには「otelsampleapp」という項目があることに注意してください。
これは Web アプリケーションの定義であり、その Dockerfile は context ディレクトリーにあります。
そこで必要な環境変数を定義します。
  • otel-collector.yaml
ファイルには次の内容が含まれます:

receivers: 
  otlp: 
    protocols: 
      grpc: 
      http:

processors:
  batch:

exporters:
  debug:
    verbosity: detailed
  otlp:
    endpoint: "ingest.{your_region}.signoz.cloud:443"
    tls:
      insecure: false
    headers:
      "signoz-access-token": <your_access_token>

service:
  pipelines:

    traces: 
      receivers:  [ otlp ] 
      processors:  [ batch ] 
      exporters:  [ otlp ] 
    metrics:
      receivers:  [ otlp ] 
      processors:  [ batch ] 
      exporters:  [ otlp ] 
    logs:
      receivers:  [ otlp ] 
      processors:  [ batch ] 
      exporters:  [ otlp ] :

アクセストークンは、SigNoz UI の [ Settings ] パネルにあります。
OTel Collector の設定について詳しくは、こちらを参照してください。

アプリケーションのビルド

まず、docker-compose コマンドを実行して、コンテナを作成し起動します。
context フォルダでターミナルを開き、以下のコマンドを実行します:
- docker-compose up -d

Docker デスクトップを使用して作成したコンテナを確認できます。

アプリケーションの実行

アプリケーションを実行して、トラフィックを生成します。
SigNoz アカウントで、 [ Services ] タブを開きます。右上にある [ Refresh ] ボタンをクリックすると、アプリケーションがアプリケーションのリストに表示されます。
SigNoz UI にデータが表示されるまで数秒かかる場合があります。
アプリケーションのトレースは [ Traces ] パネルで確認できます:
イメージ:57282.png
以下に選択されたトレースの詳細を示します:
イメージ:57283.png
トレースなど他のテレメトリ信号とのログ相関は、OpenTelemetry の重要な機能です。
[ Related Logs ] をクリックして、Trace_Id でフィルタリングされるアプリケーションのログ (.NET 標準クラスのログと Log 外部オブジェクトを使用したログ) を表示できます。
イメージ:57284.png

追加の役立つヒント

以下のようなデバッグエクスポーターを設定できます:
debug:

  verbosity: detailed
実行用および設定ミスやエラーを検出するためのデバッグ情報があります。
イメージ:57286.png
さらに、ログ用のログエクスポーターを設定すると、std 出力でログ テレメトリ データを取得できます。
OTEL_LOGS_EXPORTER=otlp,logging

使用可能バージョン

GeneXus 18 Upgrade 8 以降


サブページ
Created: 24/11/07 00:56 by Admin Last update: 24/11/07 00:56 by Admin
カテゴリ
Powered by GXwiki 3.0