Ruby 設定: Instana gem の設定

メトリクスの収集や分散トレーシングのために、 instana gem 設定を行う必要はありません。 ただし、必要に応じて個々のコンポーネントを設定することができます。

グローバルに有効化または無効化

アプリケーションの環境変数を以下のように設定することにより、実行時に gem 全体を無効にすることができます。

export INSTANA_DISABLE=true
 

その他のグローバルな有効化または無効化オプションは以下の通りです:

Instana.config[:tracing][:enabled] # default true
 

組み込みの計測機能を無効にしつつ、カスタム計測は有効にしたい場合は、アプリケーションに対して以下の環境変数を設定してください:

export INSTANA_DISABLE_AUTO_INSTR=true
 

ホスト・エージェント通信

センサーは、IPアドレス 127.0.0.1 を通じて Instana エージェントと通信を試み、コンテナ化された環境では、フォールバックとしてホストのデフォルトゲートウェイを経由して通信を試みます。 これらの場所のいずれにもエージェントが存在しない場合は、環境変数を使用して、 Instana のホストエージェントを検索する場所を設定できます。

環境変数は、実行中のプロセスの環境内で設定する必要があります。

export INSTANA_AGENT_HOST = '127.0.0.1'
export INSTANA_AGENT_PORT = '42699'
 

言語センサーに関する一般的な参考情報:環境変数 」も参照してください

個々のコンポーネントの有効化または無効化

個々のコンポーネントは、ローカル設定で有効化または無効化できます。

gem で単一のコンポーネントを無効にするには、アプリケーションの初期化指定子に以下のコードを指定して単一のコンポーネントを無効にできます。

::Instana.config[:metrics][:gc][:enabled] = false
 

現在のメトリックコンポーネントは、 :memory、、および :gc です :thread

インスツルメンテーションは、次のようにして無効にすることができます。

::Instana.config[:excon][:enabled] = false
::Instana.config[:rack][:enabled] = false
 

計測機器の完全なリストについては、以下を参照してください config.rb

バックトレースの収集を有効または無効にする

Ruby ではバックトレースの処理に負荷がかかるため、バックトレースの収集はデフォルトで無効になっています。ただし、アプリケーションの初期化関数で以下のコードを実行することで有効にすることができます:

::Instana.config[:collect_backtraces] = true
 

この設定により、ダッシュボードの「 CodeView 」でコードレベルの分析情報を取得できるようになります。

スタックトレースの設定

デフォルトでは、 Instana Ruby Tracer は、エラーが発生した EXIT すべてのスパンについて、直近の 30 フレームのスタックトレースをキャプチャします。 この値は、必要に応じて調整できます。

注: スパン ENTRY については、通常、有用なアプリケーションレベルの情報が含まれていないため、スタックトレースは収集されません。

スタックトレースの取得については、以下の点を設定できます:

スタックトレース属性 説明 サポート対象の値 デフォルト値
スタックトレースの長さ キャプチャするスタックトレースのフレーム数 1~40 30時間まで
スタックトレースのレベル スタックトレースの取得方法 -all: すべての終了スパンについてスタックトレースを収集する -error: エラーが発生したスパンについてのみスタックトレースを収集する -none: スタックトレースを収集しない error
注: エラーが発生したスパンについては、スタックトレースの長さにかかわらず完全なスタックトレースが収集されるため、根本原因を確実に特定できます。

スタックトレースの取得は、以下のいずれかのオプションを使用して設定できます:

エージェントおよび YAML の設定方法による、テクノロジー固有のスタックトレースの取得を設定するには、 「テクノロジー固有の設定」 を参照してください。

環境変数の使用

以下の例に示すように、環境変数 ` INSTANA_STACK_TRACEINSTANA_STACK_TRACE_LENGTH $STACKTRACE` および `$STACKTRACE_LENGTH` を使用して、スタックトレースをフィルタリングできます

  • エラーが発生したスパンについてのみスタックトレースをキャプチャする: この設定を使用すると、エラーが発生した場合にのみスタックトレースが収集されます。
    # Captures stack trace only for erroneous spans.
    INSTANA_STACK_TRACE=error
  • スタックトレースの収集を無効にする: この設定を使用すると、スタックトレースの収集を完全に無効にできます。
    # Disable collection of stack trace.
    INSTANA_STACK_TRACE=none
  • すべてのスパンについてスタックトレースを取得する: この設定を使用すると、すべてのスパンについてスタックトレースが収集されます。
    # Captures stack trace for all spans.
    INSTANA_STACK_TRACE=all
  • スタックトレースのフレーム数を制限する: この設定を使用すると、キャプチャされるスタックトレースのフレーム数を制限できます。
    # Limits capture of stack trace frames to 25.
    INSTANA_STACK_TRACE_LENGTH=25
     

YAML の設定を使用する

以下の指定を使用して、環境 INSTANA_CONFIG_PATH 変数をローカルの YAML 設定ファイルに設定します。 新しいローカルの YAML 設定ファイルを作成するか、既存のものを参照することができます。

tracing:
  global:
    stack-trace: <string>
    stack-trace-length: <int>

エージェント設定の使用

エージェント設定によるスタックトレースの取得を設定するには、次の例に示すように、エージェント設定ファイル(*instanaAgentDir*/etc/instana/configuration.yaml)の セクション com.instana.tracing.global でパラメータを定義します

com.instana.tracing:
  global:
    stack-trace-length: 15
    stack-trace: 'error'

技術固有の設定

Instana Ruby Tracer では、グローバル設定を上書きするテクノロジー固有の設定が可能です。 以下の指定を使用することで、設定を微調整し、スタックトレースの取得を制御できます:

com.instana.tracing:
  global:
    stack-trace: <string>
    stack-trace-length: <int>
  <technology>:
    stack-trace: <string>
    stack-trace-length: <int>

この設定では、` <technology> key` に対して以下の値がサポートされています:

  • action_controller
  • action_view
  • active_record
  • bunny
  • dalli
  • excon
  • grpc
  • graphql
  • nethttp
  • redis
  • resque-client
  • resque-worker
  • rest-client
  • sequel
  • sidekiq-client
  • sidekiq-worker

次の例では、すべてのスパンについてスタックトレースをキャプチャし、グローバル設定として25フレームに制限していますが、 Redis では、エラーが発生したスパンのみについて完全なスタックトレースをキャプチャします:

com.instana.tracing:
  global:
    stack-trace: all
    stack-trace-length: 25
  redis:
    stack-trace: error

カスタム・サービス名の設定

INSTANA_SERVICE_NAME 環境変数を以下のように設定することにより、アプリケーションのカスタム・サービス名を設定できます。

export INSTANA_SERVICE_NAME=my-custom-service-name
 

カスタムサービスの設定に関する詳細については、 「サービス名のグローバル設定」 を参照してください。

プロセス名の設定

環境変数 INSTANA_PROCESS_NAME を使用して、Ruby プロセスを表すインフラストラクチャー・エンティティーのカスタム・ラベルを設定します。

Web サーバーおよびジョブ処理システムの fork

PumaやResqueなど、処理を実行するためにフォークを行うソフトウェアパッケージについては、フォークが発生したことを Instana エージェントに通知するための設定を追加する必要があります。

Puma

Puma Web サーバーの場合は、以下のコードを puma.rb 構成に追加します。

on_worker_boot do
  ::Instana.agent.after_fork if defined?(::Instana)
end
 

Unicorn

fork モードの Unicorn の場合は、以下のブロックを unicorn.rb ファイルに追加します。

after_fork do |server, worker|
  ::Instana.agent.after_fork if defined?(::Instana)
end
 

Rack ミドルウェア

このGemは、 対応するフレームワークが存在する場合、 Instana のRackミドルウェアを検出し、ミドルウェアスタックに自動的に挿入します。 現在、さらに多くのフレームワークのサポートを追加しています。 まだ計測機能が実装されていないフレームワークを使用している場合は、以下の設定で Instana のRackミドルウェアを挿入できます:

require "instana/rack"
config.middleware.use ::Instana::Rack
 

または、ご使用のフレームワークに適した特定のミドルウェア呼び出しを使用できます。

エージェントのバックグラウンド・スレッドの管理

このエージェントは、メトリクスとトレースを定期的に収集・報告するための軽量なバックグラウンドスレッドを作成します。 デフォルトでは、これは標準の Ruby スレッドを使用します。 より詳細な制御を行いたい場合や、手動でレポートを送信しているエージェントを別のスレッドシステム(アクターベースのスレッドなど)で起動したい場合は、以下の設定を行うことで実現できます:

gem "instana", :require => "instana/setup"
 

次に、任意のバックグラウンドスレッドで、以下を呼び出します:

::Instana.agent.start
 

この通話は保留中です。 この呼び出しは、メトリックとトレース・データを定期的に収集してレポートするタイマーのループを開始します。 この関数は、すでに初期化済みのバックグラウンドスレッド内からのみ呼び出す必要があります:

Thread.new do
  ::Instana.agent.start
end
 

ロギング

Instana ロガーは、デバッグ、警告、または情報メッセージを記録する標準的な Ruby ロガーであり、次のように設定できます:

require "logger"
::Instana.logger.level = ::Logger::WARN
 

代わりに、ご使用のアプリケーション・ロガーを使用するように gem を構成できます。

::Instana.logger = ::My.logger
 

デフォルトでは、 Instana gem は、Rails が使用されている場合、Rails のログ出力モジュールである ` Ruby ` を継承して使用します。

スパンフィルタリング

この機能を使用すると、不要なトレースや呼び出しを除外して、データ取り込みの総量を削減できます。 たとえば、 Redis の特定のメソッド(例 redis.get:)のトレースをフィルタリングすることができます。

この機能は、 Redis において、 Instana Ruby gem バージョン 2.1.0 以降でのみ利用可能です。 現在、 Ruby gem は、 Redis 操作に対するフィルタリングのみをサポートしています。

ルールのフィルタリング

スパンをフィルタリングする際は、以下のルールに従ってください:

  • あるスパンがフィルタリングされると、その下流にあるすべてのスパンも同様にフィルタリングされます(抑制)。
  • ワイルドカードを使用して * 、すべての Redis メソッドをフィルタリングします。
  • メソッド名は、プログラミング言語や技術によって異なる場合があります。 「 Instana 」のUIを参照し、 Redis の操作に適した方法を確認してください。
注: スパンフィルタリング機能は、メソッド名が完全に一致する場合にのみ動作します。 フィルタリング対象として、正しいメソッド名を使用していることを確認してください。

スパンフィルタリングの設定

Redis のスパンフィルタリングは、以下のいずれかのオプションを使用して設定できます:

注: 複数のアプローチを同時に使用する場合、 Ruby gem は、環境変数、設定ファイル、エージェント設定の順に優先順位を付けます。

スパンフィルタリング用の環境変数

以下の環境変数を使用して、スパンフィルタリングを設定できます:

  • INSTANA_CONFIG_PATH : ` YAML ` 設定ファイルのパスを指定してください
  • INSTANA_TRACING_FILTER_<policy>_<name>_ATTRIBUTES=<rule> : フィルタリングルールを直接定義する
INSTANA_CONFIG_PATH の使用

この環境変数を使用すると、外部の YAML ファイルを通じてフィルタリングを設定できます:

INSTANA_CONFIG_PATH=/path/to/config.yaml
 

YAML スパンフィルタリングの設定

YAML の設定ファイルは、2つの形式に対応しています:

形式 1: シンプルな Redis フィルタリング

tracing:
  filter:
      exclude:
        - name: "Redis Operations"
          attributes:
            - key: "type"
              values: ["redis"]
 

この設定では、 Redis を含むすべてのスパンがフィルタリングされます。

形式 2: 高度な属性ベースのフィルタリング

tracing:
  filter:
    deactivate: false  # Optional, defaults to false
    exclude:
      - name: "Redis Operations"
        suppression: true  # Optional, defaults to true
        attributes:
          - key: "category"
            values: ["databases"]
          - key: "type"
            values: ["redis"]
            match_type: "strict"  # Optional, defaults to "strict"
 

この設定では、すべての Redis スパンが除外されます。

Redis のフィルタリングにおいて、` key attribute`には以下の値を設定できます:

  • category: テクノロジーカテゴリ(データベース)
  • type: ライブラリ ( redis )
  • Redis - 特定の属性( redis.command )

には match_type 、次のようなものがあります:

  • strict: 完全一致(デフォルト)
  • startswith: 文字列は指定された値で始まる
  • endswith: 文字列は値で終わる
  • contains: 文字列にその値が含まれている
環境変数を使用した直接設定

環境変数を使用して、フィルタルールを直接定義することができます:

# Filter all Redis operations
INSTANA_TRACING_FILTER_EXCLUDE_REDIS_ATTRIBUTES="type;redis;strict"

# Filter specific Redis commands
INSTANA_TRACING_FILTER_EXCLUDE_REDIS_ATTRIBUTES="redis.command;get,set;strict"

 

ルールの形式は次のとおりです key;values;match_type : ここで:

  • key: 確認すべき属性
  • values: 一致させる値のカンマ区切りリスト
  • match_type: オプションのマッチング戦略(デフォルトは strict

複数のルールはパイプ記号を使って組み合わせることができます:

INSTANA_TRACING_FILTER_EXCLUDE_REDIS_ATTRIBUTES="type;redis;strict|redis.command;get,set;strict"
 

スパンフィルタリングのためのエージェント設定

エージェントの設定方法を使用してスパンフィルタリングを設定するには、エージェントの `configuration configuration.yaml ` ファイル filter に設定を追加します。 詳細については、 「スパンフィルタリング 」のセクションを参照してください。

例 1: すべての ` Redis ` 操作をフィルタリングする

tracing:
  filter:
    exclude:
      - name: "Redis Operations"
        attributes:
          - key: "type"
            values: ["redis"]
 

例 2: Redis の特定のコマンドをフィルタリングする

tracing:
  filter:
    exclude:
      - name: "Redis GET and SET"
        attributes:
          - key: "type"
            values: ["redis"]
          - key: "redis.command"
            values: ["get", "set"]
 

例 3:パターンマッチングによる ` Redis ` 操作のフィルタリング

tracing:
  filter:
    exclude:
      - name: "Redis GET operations"
        attributes:
          - key: "redis.command"
            values: ["get"]
            match_type: "startswith"
 

これにより、 Redis コマンドのうち、で get 始まるもの(例: get、および set)がフィルタリングされます。

スパンの無効化の設定

Instana Ruby Tracer のスパンフィルタリング機能を使用することで、スパンを無効にすることができます。

「span無効化」機能を使用すると、アプリケーション内でのspanの生成を完全に無効にすることができます。 この機能は、次のような場面で役立ちます:

  • アプリケーションによって生成されるスパン数を減らしたいと考えています。
  • 監視の対象外となる操作があります。
  • アプリケーションのパフォーマンスに関しては、他の部分に注力したいと考えています。

サポートされるカテゴリー

フィルタリングできる操作には、いくつかのカテゴリがあります。

カテゴリとは、 共通の技術やプロトコルによってグループ化されたライブラリの集合です。 以下のカテゴリについて、スパン機能を無効にすることができます:

  • logging
  • databases

構成オプション

次のいずれかのオプションを使用して、span要素を無効にすることができます:

オプション 1: YAML の設定を使用する

YAML 設定ファイルを作成し、以下の例に示すように、環境 INSTANA_CONFIG_PATH 変数をパッケージを指すように設定します

tracing:
  disable:
    - redis: true
 

この disable キーには、カテゴリまたは type 名前のリストを指定できます。 「 type 名前」とは、 Instana Ruby Tracer でサポートされているフレームワーク、ライブラリ名、または計測対象名の参照を指します。

個々の type 設定は、定義順序にかかわらず、親 category の設定よりも優先されます。 このアプローチにより、より広範なカテゴリが無効化されている場合でも、特定の計測機能を有効にしておくといったきめ細かな制御が可能になります。

次の設定例では、 Redis 用のものを除き、すべてのデータベーススパンを無効にします:

tracing:
  disable:
    - databases: true
    - redis: false
 

方法 2:環境変数の使用

次の INSTANA_TRACING_DISABLE 環境変数を使用できます:

# Disable only Redis spans
INSTANA_TRACING_DISABLE=redis

# Disable all database spans (including Redis)
INSTANA_TRACING_DISABLE=databases

# Disable multiple technologies
INSTANA_TRACING_DISABLE=redis,databases
 

方法 3:プログラムによる方法

また、 Redis のspan要素をプログラムで無効にすることもできます:

# Disable Redis spans
Instana.config[:redis][:enabled] = false

# Disable logging category
Instana.config[:logging][:enabled] = false

オプション 4: エージェントの設定

エージェントの設定を使用して Redis のspanを無効にするには、エージェントの configuration.yaml ファイルに以下の disable 設定を追加します:

tracing:
  disable:
    - databases: true
 

エージェントの設定を使用してカテゴリのスパン databases を無効にするには、エージェント configuration.yaml ファイルに以下のカテゴリ設定を記述してください:

詳細については、 「エージェントの設定 」のセクションを参照してください。