IDOT および OpenTelemetry プロジェクト

「 Instana 」ディストリビューションの OpenTelemetry コレクター( IDOT )は、アップストリームの OpenTelemetry コレクターというオープンソースプロジェクトを基盤として構築されています。 中核となる機能は上流プロジェクトから引き継がれていますが、 IDOT では、 Instana 向けにいくつかの機能強化が施されています:

  • Instana のバックエンドへテレメトリデータを送信するために最適化された、あらかじめ設定済みのコンポーネント
  • インストールと設定のプロセスを簡素化

さらに、 IDOT は、コミュニティ版から厳選されたコンポーネントを収録しており、エンタープライズ環境における安定性とセキュリティに重点を置いています。

  • IBM IDOT のセキュリティ修正プログラムおよびパッチを提供しています
  • IBM のサポートチャネルを通じたエンタープライズレベルのサポート
  • 定期的なセキュリティ監査と脆弱性管理
  • Instana のバックエンドサービスとの互換性テスト

IDOT OpenTelemetry Protocol ( OTLP )規格との互換性を維持し、 Instana ユーザーにスムーズな操作環境を提供します。 このディストリビューションは、アップストリーム・プロジェクトからの改善点を反映させるため定期的に更新されており、 Instana のオブザーバビリティ・プラットフォームとの確実な統合を支援します。

インストールを開始する前に、 システム要件を確認し、スムーズなインストールができるようにしてください。

Instana OpenTelemetry Collector( IDOT )の配布

Instana が、ベンダー非依存の OpenTelemetry コレクターから送信されるテレメトリデータを受信するには、 または gRPC および OTLP または HTTPOTLP のエンドポイントを正しく設定する必要があります。 IDOT は、コレクターの設定プロセスを自動化し、デフォルトで Instana がテレメトリデータを受信できるようにします。

IDOT は、以下のオペレーティングシステム、プラットフォーム、およびアーキテクチャに対応しています:

オペレーティングシステムまたはプラットフォーム アーキテクチャー エアギャップ環境でのみ有効
Linux x86-64 (amd64), s390x (IBM Z) はい
AIX ppc64 はい
Windows amd64 はい
Kubernetes amd64 はい
OpenShift amd64 はい

IDOT のインストール

ターゲット環境に IDOT をインストールするには、以下の手順を実行してください:

  1. お使いのアーキテクチャに適したインストーラーをダウンロードしてください:

    x86-64 または amd64 システムの場合:

    curl -Lo instana_otelcol_setup.sh https://github.com/instana/instana-otel-collector/releases/latest/download/instana-otel-collector-installer-latest-linux-amd64.sh
    chmod +x instana_otelcol_setup.sh
     

    s390x または zLinux システムの場合:

    curl -Lo instana_otelcol_setup.sh https://github.com/instana/instana-otel-collector/releases/latest/download/instana-otel-collector-installer-latest-linux-s390x.sh
    chmod +x instana_otelcol_setup.sh
     

    AIX システムの場合:

    curl -Lo instana_otelcol_setup.sh https://github.com/instana/instana-otel-collector/releases/latest/download/instana-otel-collector-installer-latest-aix-ppc64.sh
    chmod +x instana_otelcol_setup.sh
    注:Instana のUIには、システムのアーキテクチャを自動的に検出する簡易インストールスクリプト(instana-collector-installer-latest.sh)が用意されています。 UIスクリプトもアーキテクチャ固有のスクリプトも、同じコレクターをインストールします。

    Windows 用(ワンライナーによるダウンロードとインストール)

    powershell -Command "Invoke-WebRequest -Uri 'https://github.com/instana/instana-otel-collector/releases/download/<latest-version>/instana-otel-collector-installer-latest-windows-amd64.zip' -OutFile '$env:TEMP\instana-collector.zip'; Expand-Archive -Path '$env:TEMP\instana-collector.zip' -DestinationPath 'C:\Program Files\Instana\' -Force; Set-Location 'C:\Program Files\Instana\instana-collector\bin'; .\setenv.bat -a <INSTANA_KEY> -e <INSTANA_OTEL_ENDPOINT_GRPC> -H <INSTANA_OTEL_ENDPOINT_HTTP>; .\start.bat"

    Windows 用(MSIインストーラー)

    Windows 環境では、MSIインストーラーを推奨のインストール方法として使用してください。 MSIインストーラーは、対話型のGUIインストールをサポートし、 Windows サービスを自動的に登録するとともに、グループポリシーやSCCMなどのエンタープライズ展開ツールと連携します。

    詳細については、 「MSIインストーラーを使用した Windows への IDOT のインストール」 を参照してください。

    Kubernetes の「 Helm 」チャート

    helm install instana-otel-collector \
      --repo https://instana.github.io/instana-otel-collector instana-otel-collector-chart \
      --namespace instana-otel-collector \
      --create-namespace \
      --set clusterName=<CLUSTER_NAME> \
      --set instanaEndpoint=<INSTANA_OTEL_ENDPOINT> \
      --set instanaKey=<INSTANA_KEY>

    Kubernetes のインストールガイドライン(オペレーターおよび OpenShift OSのサポート情報を含む)の詳細については、 Kubernetes の「 Instana ディストリビューション版 OpenTelemetry Collectorのインストール」 を参照してください。

  2. 以下のコマンドを使用して、インストール・スクリプトを実行する:

    sudo ./instana_otelcol_setup.sh -e <INSTANA_OTEL_ENDPOINT_GRPC> -a <INSTANA_KEY> [-H <INSTANA_OTEL_ENDPOINT_HTTP>] [-u USE_SUPERVISOR_SERVICE] [<install_path>]
    インストールスクリプトを実行する際は、以下のパラメータを指定してください:
    • <INSTANA_OTEL_ENDPOINT_GRPC>: Instana に必要な gRPC エンドポイントを指定します。 この <ip_address>:<port> 形式を使用してください。
    • <INSTANA_KEY>: 認証に必要な Instana エージェントキーを指定します。
    • <INSTANA_OTEL_ENDPOINT_HTTP>: Instana のオプションの HTTP エンドポイントを指定します。 この <ip_address>:<port> 形式を使用してください。
    • <USE_SUPERVISOR_SERVICE>: 「 Instana 」スーパーバイザー・サービスが有効になっているかどうかを指定します。 デフォルト値はtrueです。 このパラメータを に設定 false すると、スーパーバイザー・サービスが無効になります。
    重要: インストーラーを実行するには、および INSTANA_KEYINSTANA_OTEL_ENDPOINT_GRPC パラメータが必須です。 これらのパラメータは、. install_path/collector/config/config.envディレクトリにあるファイル config.env で後から変更できます。 デフォルトのパスは. です /opt/instana/collector/config/config.env。 また、コレクターは通常、システムディレクトリへの書き込みやシステムレベルのサービスの設定を行う必要があるため、インストールにはルート権限が必要です。
このインストールスクリプトは、指定されたパラメータを使用して、システムに IDOT コレクターをインストールし、 Instana コレクターサービス(および必要に応じてスーパーバイザーサービス)を起動します。
  • スーパーバイザー・サービス :コレクター・プロセスのライフサイクルを管理し、リモート管理や自動再起動を可能にします。 インストール時には、スーパーバイザー・サービスがデフォルトで有効になっています。
  • コレクターサービス :テレメトリデータを受信、処理、およびエクスポートする、 OpenTelemetry のメインのコレクタープロセス。

「Supervisor Service」や「Collector Service」など、 OpenTelemetry の用語に関する詳細については、『 OpenTelemetry Collector Management 』のドキュメントを参照してください。

Instana コレクターサービスの管理

IDOT Collectorのインストールスクリプトは、デフォルトでサービスをインストールし、起動します。 Instana コレクターサービスは、 bin ディレクトリ内で以下のコマンドを実行することで、さらに管理することができます:

  • サービスをインストールします:

    ./instana_collector_service.sh install
     
  • サービスをアンインストールする:

    ./instana_collector_service.sh uninstall
     
  • 以下の方法でサービスを開始します。

    ./instana_collector_service.sh start
     

    それとも

    service instana-collector start
     
  • サービスを停止します。

    ./instana_collector_service.sh stop
     

    それとも

    service instana-collector stop
     
  • サービスを再起動する:

    ./instana_collector_service.sh restart
     

    それとも

    service instana-collector restart
     
  • サービスのステータスを表示します:

    ./instana_collector_service.sh status
     

    それとも

    service instana-collector status
     

Instana スーパーバイザー・サービスの管理

Instana コレクター・サービスと同様に、 Instana スーパーバイザー・サービスも、 IDOT のインストールプロセス中にインストールおよび初期化されます。 Supervisor サービスの管理は、コレクターのサービス管理と同様(前のセクションで説明した通り)、`` の代わりに ./instana_collector_service.sh` ./instana_supervisor_service.sh ` を使用することで行います。

OpenTelemetry コレクターの設定

/opt/instana/collector/config/config.yaml ファイルを変更することで、業務要件に従ってコレクタを設定できます。 必要に応じて、遠隔測定データのパイプラインを定義し、変更することもできます。 すべてのタイプの遠隔測定データのデータフローをサポートするために、以下の構成例を参照してください:

receivers:
    # Configure OTLP/gRPC endpoint
    otlp:
        protocols:
            grpc:
                endpoint: 0.0.0.0:24317
    # Specifies a file log receiver to include logs from a given path
    filelog:
        include: ["path/to/logs/*.log"]
processors:
    # Set a limit for batch size
    batch:
        send_batch_size: 5000
        send_batch_max_size: 10000
        timeout: 180s
    # Specify a transform processor to add a processed attribute for logs
    transform:
        log_statements:
            - set(log.body, log.attributes["processed"])
exporters:
    # Configure OTLP exporter for telemetry data to be sent to
    otlp:
        endpoint: INSTANA_OTEL_ENDPOINT_GRPC
    headers:
      x-instana-key: INSTANA_KEY
      x-instana-host: INSTANA_HOST
    tls:
      insecure: true
# Assemble the data pipeline from the configured components
service:
    pipelines:
        traces:
            receivers: [otlp]
            processors: [batch]
            exporters: [otlp]
        metrics:
            receivers: [otlp]
            processors: [batch]
            exporters: [otlp]
        logs:
            receivers: [filelog]
            processors: [transform]
            exporters: [otlp]

オプション:OTELシェルレシーバーの設定

Shellレシーバーは、シェルコマンドを実行し、その出力をメトリクスまたはログとして収集する OpenTelemetry のCollectorコンポーネントです。 このレシーバーは、コマンドラインツールやスクリプトをオブザーバビリティ・パイプラインに組み込む際に役立ちます。

セキュリティー警告

重要: このレシーバーは、ユーザーが設定した任意のシェルコマンドを実行します。 この機能は、信頼できない第三者によって設定が改ざんされるおそれのない、信頼できる環境でのみ使用してください。 悪意のあるコマンドにより、システムが侵害される可能性があります。

構成オプション

シェルレシーバーは、以下の設定オプションをサポートしています:

receivers:
  shell:
    collection_interval: 60s  # How often to execute commands (default: 60s)
    commands:
      - name: disk_usage       # Required: Unique identifier for this command
        command: df -h /       # Required: Shell command to execute
        shell: /bin/sh         # Optional: Shell to use (default: /bin/sh)
        args: []               # Optional: Additional arguments to pass to the shell
        timeout: 5s            # Optional: Maximum time the command can run
        metric_name: disk.usage # Required for metrics: Name for the metric
        log_name: disk_check   # Optional: Name for log records (defaults to metric_name)
        description: "Check disk usage" # Optional: Human-readable description
        labels:                # Optional: Additional key-value pairs as attributes
          filesystem: "root"
        output_type: both      # Optional: How to process output (metric, log, or both; default: metric)

コマンド設定パラメータ

リスト内の各コマンド commands は、以下のオプションに対応しています:

フィールド タイプ 必須 Default 説明
name string はい このコマンドの一意の識別子
command string はい 実行するシェルコマンド
shell string いいえ /bin/sh 実行に使用するシェル
args []string いいえ [] シェルに渡す追加の引数
timeout duration いいえ コマンドの実行可能時間の上限
metric_name string 「ismetric 」または「is」の場合output_type に必要both メトリクスの名前。 単純な出力の場合、完全なメトリック名となります。 表形式の出力では、列名と組み合わせて単位接頭辞として機能します(例:prefix.column_name)。
log_name string 「islog 」が設定されている場合output_typemetric_name 設定されていない場合 metric_name ログ記録の名称
description string いいえ コマンドの機能に関する、人間が理解しやすい説明
labels map[string]string いいえ {} 属性として追加するその他のキーと値のペア
output_type ストリング いいえ metric コマンドの出力をどのように処理するかを指定します:metric,log, またはboth
row_regex string いいえ 各出力行に一致して解析を行う正規表現(カスタマイズされた解析を可能にします)
metric_names []string いいえ(「is」が設定されている場合はrow_regex 必須) 各キャプチャフィールドの名称はrow_regex
descriptions []string 「is」が設定されている場合はrow_regex 必須 各フィールドの読みやすい説明(任意、文字数は一致させるmetric_names 必要があります)
field_types []string いいえ 各フィールドの処理方法:Attribute またはGauge

出力処理モード

このレシーバーは、以下の解析モードに対応しています:

自動解析(デフォルト)

が指定されていない row_regex 場合、受信側は出力形式を自動的に検出します:

メトリクスについて (が metric または output_type の場合 both):

  • 出力が数値として解析できる場合、その値を使用してゲージメトリクスが作成されます。
  • 出力が表形式(複数列)の場合、数値列ごとに個別のゲージメトリクスが作成されます。
  • 出力が数値として解析できない場合、値が 1 の合計メトリクスが作成され、その出力は属性として含まれます。

対数関数 (が log または output_type の場合 both):

  • コマンドの出力を本文としてログレコードを作成します。
  • デフォルトで深刻度 INFO を設定します。
  • コマンド名、説明、およびラベルを属性として含みます。
  • 出力が数値として解析できる場合、それを 属性 value として追加します。

正規表現を用いた解析(カスタマイズ版)

が指定された row_regex 場合、レシーバーは正規表現を使用して出力を解析し、フィールドの型を完全に制御します:
  • row_regex: 各フィールドに対するキャプチャグループを含む正規表現
  • metric_names: 各キャプチャフィールドの名前
  • field_types: 各フィールドが (文字列 Attribute 識別子) であるか、 Gauge (数値メトリクス) であるかを指定します
  • descriptions: 各フィールドの任意の説明
このモードでは、変動的かつ不規則な出力形式に対応し、どのフィールドを属性または指標とするかを制御し、フィールドの型を明示的に定義する柔軟性が提供されます。

構成例

以下の例は、さまざまな設定オプションを示しています:

基本使用

receivers:
  shell:
    collection_interval: 30s
    commands:
      - name: cpu_temperature
        command: cat /sys/class/thermal/thermal_zone0/temp
        metric_name: system.cpu.temperature
        description: "CPU temperature in millidegrees Celsius"

出力形式が異なる複数のコマンド

receivers:
  shell:
    collection_interval: 60s
    commands:
      - name: memory_free
        command: free -m | grep Mem | awk '{print $4}'
        metric_name: system.memory.free
        description: "Free memory in MB"
        labels:
          unit: "MB"
        output_type: metric

      - name: disk_usage
        command: df -h / | grep / | awk '{print $5}' | sed 's/%//'
        metric_name: system.disk.usage
        description: "Root filesystem usage percentage"
        labels:
          filesystem: "root"
          unit: "percent"
        output_type: both

      - name: last_logins
        command: last -n 5
        log_name: system.logins
        description: "Last 5 system logins"
        output_type: log

自動解析と複数表形式の出力

receivers:
  shell:
    collection_interval: 60s
    commands:
      - name: system_metrics_auto
        command: hyptop -b -n 1 | awk 'BEGIN {printf "%-12s %-10s %-8s %-12s\n","system","cpucount","cpu%","memoryinGB"}$2 ~ /^[0-9]+$/ {printf "%-12s %-10s %-8s %-12s\n",$1,$2,$3,$5}'
        metric_name: system.metrics.shell.hypervisor
        description: "System CPU and Memory metrics"
        output_type: metric

カスタムコントロールのための正規表現ベースの解析

receivers:
  shell:
    collection_interval: 60s
    commands:
      - name: system_metrics_regex
        command: hyptop -b -n 1 | awk 'BEGIN {printf "%-12s %-10s %-8s %-12s\n","system","cpucount","cpu%","memoryinGB"}$2 ~ /^[0-9]+$/ {printf "%-12s %-10s %-8s %-12s\n",$1,$2,$3,$5}'
        metric_name: system.metrics.shell.hypervisor
        description: "System CPU and Memory metrics"
        output_type: metric
        row_regex: '^\s*(\S+)\s+(\d+)\s+([\d.]+)\s+([\d.]+)\s*$'
        metric_names:
          - system
          - cpucount
          - cpu
          - memoryinGB
        descriptions:
          - System Name
          - CPU Count
          - CPU Usage Percentage
          - Memory Usage in GB
        field_types:
          - Attribute  # system is an identifier, not a metric
          - Gauge      # cpucount is a numeric metric
          - Gauge      # cpu is a numeric metric
          - Gauge      # memoryinGB is a numeric metric
        labels:
          source: "hyptop"

      - name: process_stats
        command: ps aux | grep myapp | awk '{print $2, $3, $4}'
        metric_name: process.metrics
        description: "Process CPU and Memory usage"
        output_type: metric
        row_regex: '^\s*(\d+)\s+([\d.]+)\s+([\d.]+)\s*$'
        metric_names:
          - pid
          - cpu_percent
          - mem_percent
        descriptions:
          - Process ID
          - CPU Usage Percentage
          - Memory Usage Percentage
        field_types:
          - Attribute  # PID is an identifier, not a gauge
          - Gauge      # CPU percentage is a metric
          - Gauge      # Memory percentage is a metric
        labels:
          app: "myapp"

解析モードの選択

以下の場合には、自動解析を使用してください:

  • 単純な数値データや標準的な表形式のデータがあります。
  • 正規表現の設定をせずに、すぐにセットアップしたい。
  • すべての数値フィールドは指標として扱う必要があります。

以下の場合には、正規表現を用いた構文解析を使用してください:

  • 識別子(PIDやシステム名など)と実際のメトリクスを区別する必要があります
  • 出力形式が不規則または一定ではありません。
  • フィールドの型や名前を明確に制御したい。
  • カスタムフィールドの説明が必要です。

IDOT をさまざまな Instana 環境に接続する

自社管理環境

IDOT を使用する場合、 OTLP エクスポーターを設定して、デフォルトのオプションである Instana バックエンドにデータを送信するようにする必要があります。

OTLP へのすべてのトラフィックは、以下のサブドメインを使用し、ポート 443 のゲートウェイを経由する必要があります:
  • otlp-grpc.<base_domain> → OTLP/gRPC
  • otlp-http.<base_domain> → OTLP/HTTP

デフォルトでは、 Instana バックエンドは自己署名証明書を使用します。 CAファイルを使用してコレクターを設定しない場合は、検証を無効にする必要があります。 そうしないと、 TLS のハンドシェイクが失敗します。

証明書検証を行わない設定例:

exporters:
  otlp:
    endpoint: https://otlp-grpc.<base_domain>:443
    tls:
      insecure: false
      insecure_skip_verify: true
    headers:
      x-instana-key: <your_instana_key>
      x-instana-host: <your_instana_host>
 

スーパーバイザーの設定を確認してください。 正しいエンドポイントを指定し、自己署名証明書が正しく処理されるようにしてください。

IDOT をローカルエージェントに接続する

あるいは、同じホスト上のローカル Instana エージェントを通じてデータを報告することもできます。 このオプションを使用するには、インストール時および設定ファイル内で特定の設定を行う必要があります。

ローカルエージェントのインストールコマンド

ローカルの Instana エージェント経由でデータを送信するために IDOT をインストールする場合は、エンドポイントパラメータとして (localhost) を使用 127.0.0.1 してください:
sudo ./instana_otelcol_setup.sh -e 127.0.0.1:4317 -a <INSTANA_KEY> -H http://127.0.0.1:4318 -o <INSTANA_OPAMP_ENDPOINT> -u true
重要: サーバーのIPアドレスの代わりに を使用 127.0.0.1 してください。 Instana エージェントは、ローカルホスト上のポート 4317 および 4318 でのみリスニングを行います。
注: スーパーバイザー・サービス(-u true)を有効にする際は、コマンドラインで を設定 INSTANA_OPAMP_ENDPOINT-o する必要があります。

インストール後の構成

インストール後、localhostへの接続で HTTP プロトコルを使用するように、以下の /opt/instana/collector/config/config.env ファイルを確認および更新してください:
INSTANA_OTEL_ENDPOINT_GRPC=http://127.0.0.1:4317
INSTANA_OTEL_ENDPOINT_HTTP=http://127.0.0.1:4318
重要: localhostへの接続には、の https:// 代わりにを使用 http:// してください。 ローカルの Instana エージェントは、localhostへの接続において TLS 暗号化を使用しません。 HTTPS を使用すると、 SSL のハンドシェイクエラーが発生します。
INSTANA_OPAMP_ENDPOINT=wss://<opamp-endpoint-url>:443/v1/opamp
注: コレクターのリモート管理を可能にするには、スーパーバイザー・サービスが有効になっている場合に が必要です INSTANA_OPAMP_ENDPOINT

YAML ローカルエージェントの設定

OTLP エクスポーターの設定で、 config.yaml ターゲットをlocalhostに設定してください:
exporters:
  otlphttp:
    endpoint: http://127.0.0.1:4318
    tls:
      insecure: true

Kubernetes への OpenTelemetry Collector の「 Instana 」ディストリビューションのインストール

Kubernetes 環境では、 Helm のチャートまたは YAML のマニフェストを使用して、 IDOT を集中型コレクターとしてデプロイできます。 この展開モデルでは、以下のタスクを実行できます:

  • クラスタ内の複数のアプリケーションからテレメトリデータを収集する
  • 複数のコレクターインスタンスを使用して高可用性を設定する
  • Kubernetes のネイティブツールを使用してコレクターの設定を管理する

Kubernetes への「 IDOT 」のインストールおよび設定に関する詳細な手順については、 Kubernetes の「 Instana 」ディストリビューション版「 OpenTelemetry Collector」のインストール方法をご覧ください。

Kubernetes での ` IDOT ` のオペレーターベースの導入および管理については、 「オペレーターを使用した ` IDOT ` のインストール」 を参照してください。

OpenTelemetry コレクターのアンインストール

デフォルトでは、インストールスクリプトは install_pathcollector/bin の下にアンインストールスクリプトも追加します。

./uninstall.sh
 

このスクリプトを実行すると、 Instana コレクターサービスが停止し、システムからすべてのコレクターファイルが削除されます。

リリース・ノート

最新の更新情報、新機能、およびバグ修正については、『 IDOT 』 のリリースノートをご覧ください。

OpenTelemetry に関するその他のリソース

コミュニティが厳選した OpenTelemetry サンプル、ベストプラクティス、および統合パターンについては、 Instana 向け OpenTelemetry リポジトリを参照してください。 この資料では、以下の情報を提供しています:
  • 実際の設定例。
  • トラブルシューティングガイド。
  • さまざまなテクノロジーの統合パターン。
  • コミュニティから寄せられた解決策。