バックエンド

<instana-agent>/etc/instana/com.instana.agent.main.sender.Backend.cfg を使用してひとつ以上のバックエンドにレポートするように構成する必要があります。 デフォルトでは、エージェントは環境変数 INSTANA_AGENT_ENDPOINTINSTANA_AGENT_ENDPOINT_PORTINSTANA_AGENT_KEY を使用します。 必要な値はデプロイメントによって異なります。

SaaS環境

SaaSのお客様のためのINSTANA_AGENT_ENDPOINT_PORT and INSTANA_AGENT_ENDPOINT は、環境が存在する地域によって異なります。
  • ヨーロッパ:
    • DNS名:ingress-blue-saas.instana.io
    • 宛先ポート:tcp/443
  • アメリカ:
    • DNS名:ingress-red-saas.instana.io
    • 宛先ポート:tcp/443
  • 世界のその他の地域:
    • DNS名:ingress-red-saas.instana.io
    • 宛先ポート:tcp/443

オンプレミスへのインストール

オンプレミスのお客様はインストール中に設定を構成できます。 疑わしい場合は、ポータルからエージェントをダウンロードし、ファイル/etc/instana/com.instana.agent.main.sender.Backend.cfg からオプションをコピーします。

ネットワーク要件

エージェントのセンサーの一部は、エージェントのプロセスの外側で実行されています。 これらのセンサーは、ローカルネットワークを使用してエージェントに接続します。 エージェントとセンサーが同じホストで実行されている場合、これは多くの場合問題ではありませんが、エージェントとセンサー間の正しい通信を確保するには、コンテナー化されたセットアップでの構成が必要になる場合があります。 次の表に、エージェントプロセスに到達するために開く必要があるポートを示します。 デフォルトの42699ポートに加えて、トレースする必要のある言語に基づいて他のポートが必要になる場合があることに注意してください。
センサーポート範囲構成可能
エージェントAPI42699
Javaトレーシングすべての一時ポート
Crystalセンサー42699環境変数
Envoy、NGINX、およびその他のプロキシトレース42699環境変数
Goセンサー42699環境変数
.NETセンサー42657
Node.jsセンサー42699環境変数
PHPセンサー16816PHP設定
Node.jsセンサー42699環境変数
Pythonセンサー42699環境変数
Rubyセンサー42699環境変数
Kubernetes環境では、外部センサーがエージェントに到達したり、その逆に到達したりできるように、ネットワークポリシーでエージェントポッドとサービスポッド間の接続を許可する必要があります。 参照:言語センサー

コンフィギュレーション

Instanaエージェントコンフィギュレーションは、次の場所にあるひとつの中央構成ファイルを使用して採用できます。 <agent_install_dir>/etc/instana/configuration.yaml 重要configuration-abc.yaml というファイルを作成して、ファイルシステムの順序でこのファイルとマージすることができます。 したがって、configuration-cde.yaml configuration-abc.yaml の後に来ます。 タグのようなネスト構造のみがマージされ、値は後続の構成によって上書きされます。 このファイルの形式はYAMLであり、これは空白に非常に敏感です。 すべてのインデントレベルで許可されるのは 2つの空白スペースのみです。

追加のファイルシステム

デフォルトでは、エージェントはローカルファイルシステムのみを監視します。 ファイルシステムを追加するには、ファイルシステムの名前(mtabまたはdfの最初の列)を追加します。

たとえば、次のファイルシステムを監視するには:

server:/usr/local/pub /pub nfs rsize=8192,wsize=8192,timeo=14,intr

ホストセクションのコメントされていないファイルシステムリストに次の行を追加してください:

com.instana.plugin.host:
  filesystems:
    - 'server:/usr/local/pub'

タグ

エージェントの特定のタグは、com.instana.plugin.host セクションで次の形式で指定できます。
com.instana.plugin.host:
  tags:
    - 'production'
    - 'app1'
あるいは、環境変数 INSTANA_TAGS=production,app1 を使用することもできます(環境変数と構成ファイルのタグは追加可能です)。 これにより、特定のエージェントに2つのタグが追加されるため、UIでタグの検索とフィルタリングが可能になりました。

インストール済みパッケージリスト(デフォルトでは無効)

configuration.yaml ファイルで collectInstalledSoftware
true に設定すると、オペレーティングシステムにインストールされているパッケージを1日に!回抽出できます。

現在、次のLinuxディストリビューションがサポートされています。

  • Debianベース(dpkg)
  • RedHatベース(rpmおよびyum)
com.instana.plugin.host:
  collectInstalledSoftware: false #  valid values: true, false

カスタムゾーン

Instanaは、デフォルトでAmazon Web Services、Google Compute Engine、またはOpenStack Novaのアベイラビリティゾーン情報を使用してホストをグループ化します。 このホストのグループ化をカスタマイズするには、特定のホストのグループを次の形式を使用してセクションcom.instana.plugin.generic.hardware で定義できます。
com.instana.plugin.generic.hardware:
  enabled: true
  availability-zone: 'Demozone'
または、代わりに環境変数 INSTANA_ZONE=Demozone を代わりに使用できます(環境変数のゾーンが構成ファイルのゾーンをオーバーライドします)。 その結果、ホストはマップ上のゾーンにグループ化されます。

カスタムプロセス

Instanaは、デフォルトでJavaやMySQLなどの高レベルセンサーのプロセスメトリックを自動的に監視します。 Instanaによって自動的にカバーされないOSプロセスを監視する場合は、プロセス名または引数、あるいはその両方を使用して設定できます。

com.instana.plugin.process:
  processes:
    - 'sshd'
    - 'slapd'
  arguments:
    - '/opt/script.sh'

シークレット

トレースデータには機密データが含まれる場合があります。 したがって、Instanaエージェントは、「シークレット」のパターンの仕様、つまり、トレースデータからエージェント側で編集されるデータの仕様をサポートしています。 シークレットとして扱われるデータは、処理のためにInstana SaaSに到達しないため、UIでの分析やAPIを介した取得には使用できません。

Instanaは、一致するシークレットの仕様をサポートしています。

  • 環境変数
  • JDBC接続文字列
  • Dockerコンテナ情報
  • HTTPクエリパラメータ(実質的にサポートされるすべてのランタイムについては、以下のサポートマトリックスを参照)、例:https://my.domain/accounts/status?account=&user=
  • HTTPマトリックスパスパラメーター。たとえば、https://my.domain/accounts/account=;user=/status (一部のランタイムでサポートを利用できます。以下のサポートマトリックスを参照してください)
LanguageHTTPクエリパラメータのシークレットHTTPマトリックスパラメーターのシークレット
Java
Go  
.NET Framework 
.NET Core  
.NET Framework 
Node.js 
PHP
Python 
Ruby  
Crystal  

:GoインスツルメンテーションはOpenTracing APIに基づいているため、シークレットの処理はインストルメント側が行います。

:Instanaは、URLがhttps://my.domain/accounts//status として構成されている場合など、URLパス内の任意のセグメントをシークレットとして扱うことをサポートしていません。 たとえば、URLパスで正規表現を実行してセグメントを破棄するオーバーヘッドは、非常に高くなります。

(さらに、実際にはシークレットに関連する問題ではありませんが、InstanaエージェントはストアドプロシージャからSQLパラメーターをキャプチャしません。任意のパスセグメントの場合と同様に、SQLクエリからリテラルを削除せず、パラメータ化されたクエリの仕様を強くお勧めします。)

シークレットは、サポートされているすべての言語に対して次の方法で指定されます。

com.instana.secrets:
  # One of: 'equals-ignore-case', 'equals', 'contains-ignore-case', 'contains', 'regex'
  matcher: 'contains-ignore-case'
  list:
    - 'key'
    - 'password'
    - 'secret'

センサーによって収集されたキーがリストのエントリと一致する場合、値は編集され、Instanaバックエンドに送信されません。 カスタムシークレット構成を指定しない場合、エージェントはデフォルトで前述のシークレット構成を使用します。

:一般に、シークレットは静的データからフィルタリングされます。 フィルタリングは最適化されており、プロセスの実行中は変更が適用されません。 シークレット構成を有効にするには、エージェントまたは実行中の監視対象コンポーネントを再起動します。これらは新しい構成を尊重する必要があります。

:選択したKubernetesリソースでの追加のシークレットリダクションについては、Kubernetesシークレットで詳細をご覧ください。

カスタムHTTPヘッダーのキャプチャ

デフォルトでは、InstanaはHTTP呼び出しをトレースするときにHTTPヘッダーを収集しませんが、この機能はオンデマンドで有効にできます。 そのためには、キャプチャするヘッダーを指定する必要があります。

com.instana.tracing:
  extra-http-headers:
    - 'x-request-id'
    - 'x-loadtest-id'
    - ...

値は大文字と小文字を区別しません。 このようにして収集されたヘッダーは、コールの詳細(「呼び出し先の詳細」セクション)に表示されます。 それらを使用して、呼び出しとトレースを検索することもできます(UI内およびAPI経由)。 最後に、サービス構成に使用できます。

制限

  • InstanaはHTTPエントリーリクエストヘッダーのみをキャプチャします (HTTPは、インストルメントされたプロセスが受け取ると呼び出します)。
  • InstanaはJavaおよびNode.jsでHTTPのエントリーのレスポンスヘッダーをキャプチャします。
  • InstanaはHTTP終了時にヘッダーをキャプチャしません(インストルメントされたプロセスがクライアントであり、HTTPサーバーがインストルメントされていない場合にHTTPが呼び出します)。
  • この機能は現在、Java、.NET、NodeJ、PHP、Python、およびRubyでサポートされています。

プロセスの無視