Instana ホストエージェントの設定

ホストエージェントをインストールした後、必要に応じてエージェントを設定することができます。 エージェント設定オプションについては、以下のリストを参照してください:

Instana バックエンドの設定

Instana ホストエージェントは、 TLSv1.3 暗号化で HTTP/2 プロトコルを使用して Instana バックエンドに接続します。 接続は常にセキュアで暗号化された方法で確立されます。 バックエンド TLS 証明書の詳細については、 Instana バックエンド TLS 証明書のセクションを参照してください。

*instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg ファイルには、ホスト・エージェントが Instana バックエンドと通信するために使用する構成が含まれています。

*instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg ファイルの値は、以下の環境変数を使用してオーバーライドできます。

  • INSTANA_AGENT_ENDPOINT - ホストエージェントが接続する Instana バックエンド/サービスのホスト名。
  • INSTANA_AGENT_ENDPOINT_PORT - ホスト・エージェントが接続するTCPポート。 デフォルトは 443 です。
  • INSTANA_AGENT_KEY - ホストエージェントと Instana バックエンド/サービス間の関係を作成するために使用されるエージェントキー。

Instana エージェントのエンドポイントとポートの値は、エージェントログに報告されます:

2024-04-16T05:09:09.627+0000 | INFO  | ... | Backend | 55 - com.instana.agent - 1.1.718 | Connected using HTTP/2 to ingress-pink-saas.instana.rocks:443 ...
 

エンドポイント、ポート、およびエージェントのキー値は、Instana UI のエージェント展開画面に表示されます。たとえば、 Linux - 自動インストール (ワンライナー) 画面では、展開コードに ... -a aGeNTKEY0vaLuO0Eu1ABc ... -e ingress-green-saas.instana.io:443 が含まれます。

Instana バックエンド TLS 証明書

Instana SaaS, では、エージェントのバックエンド接続用の TLS 証明書は Instana が提供します。 セルフホスト型の Instana バックエンドの場合、バックエンド接続用の TLS 証明書はお客様が提供できます。 詳細については、「セルフホスト型スタンダード・エディションで 既存の証明書を使用する 」を参照のこと。

セルフホスト Instana バックエンドの場合、バックエンド TLS 証明書の証明書フィンガープリントをチェックするように Instana エージェントを設定できます。 *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg ファイルの fingerprints プロパティに、証明書フィンガープリントのカンマ区切りリストを指定する。 エージェントは指定されたフィンガープリントに一致しないバックエンドへの接続を拒否する。

構成の例は、次のようになります。

fingerprints=29:17:5A:F4:2E:35:DF:87:D6:1F:4D:C8:A8:01:D2:43:18:47:BF:6E
 

複数のバックエンドを設定する

場合によっては、エージェントが複数のバックエンドにレポートする必要があるかもしれません。 例えば、共有サービスが分離された環境で使用されている場合、これらの分離された環境の複数のバックエンドにレポートするようにエージェントを手動で設定することができます。

エージェントは、それが使用するライセンス数、およびセットアップがエージェントの帯域幅消費を効果的に乗算するため、すべてのバックエンドで別々にカウントされます。

ホストエージェントが複数のバックエンドにレポートするように設定するには、以下の手順に従います:

  1. *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg 設定ファイルの名前を *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend-1.cfg
  2. エージェントが報告する様々なバックエンドのための適切なコンフィギュレーションで、 *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend-2.cfg コンフィギュレーションファイルのコピーを作成する。

前のステップで作成された各ファイルは、異なる ホスト・エージェント・エンドポイントと エージェント・キーを記述するように調整できる。 これらのファイルには、異なるプロキシ設定を含めることもできる。

注:

  • コンフィギュレーション・ファイルには、数字または英数字のIDを使用することができます。 例: *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend-<alphanumeric>.cfg

  • *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg コンフィギュレーション・ファイルが存在する場合、他のすべてのバックエンド・ファイルは無視される。

  • Instana ホストエージェント Docker イメージは特別に設定されているので、バックエンドを追加するには、 com.instana.agent.main.sender.Backend-2.cfg のようなバックエンドファイルをマウントすることで簡単に行えます。

    dockerize したエージェントの引数の例を以下に示します。

    --volume <path-to-additional-backend-config>:/opt/instana/agent/etc/instana/com.instana.agent.main.sender.Backend-2.cfg
     

エージェントのメモリ制限の設定

環境内の監視対象エンティティの数によっては、ホストエージェントで利用可能なメモリの最大量を増やす必要があるかもしれません。 環境変数 AGENT_MAX_MEM をデフォルト値の544 MiB より大きい値に設定することで、エージェントのメモリを増やすことができます。 例えば、エージェントのメモリを1GBに設定するには、 AGENT_MAX_MEM=1024M

エージェントプロキシの設定

バックエンドと効率的に通信するために、Instanaは HTTP/2 プロトコルを使用してデータを転送します。

多くの場合、ホストエージェントからバックエンドへの直接通信は、エージェントのデプロイを簡素化するために許可することができる。

場合によっては、ネットワークの内外を行き来する専用のエントリーが1つ必要となる。 このため、Instanaをさまざまなプロキシと組み合わせて使用してください。 一般に、 HTTP、 HTTPS、 SOCKS4、 SOCKS5 のプロキシがサポートされている。 プロキシはCONNECTメソッドをサポートしていなければ通過できない。 ALPNを持つ HTTP/2 がプロキシでサポートされている限り、プロキシレベルでのTLS終端はサポー トされる。

ホスト・エージェントのコンフィギュレーションでは、以下のファイルを変更します:

  • *instanaAgentDir*/etc/mvn-settings.xml
  • *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg

*instanaAgentDir*/etc/mvn-settings.xml<settings></settings> セクションに以下の情報があり、コメントアウトされていないこと:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                              http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>data/repo</localRepository>
  <servers>
    <server>
      <id>features</id>
      <username>_</username>
      <password>insert_your_agent_key</password>
    </server>
    <server>
      <id>shared</id>
      <username>_</username>
      <password>insert_your_agent_key</password>
    </server>
    <!-- for mirrors requiring auth
    <server>
      <id>features-mirror</id>
      <username>insert_authorized_user</username>
      <password>insert_authorized_user_password</password>
    </server>
    <server>
      <id>shared-mirror</id>
      <username>insert_authorized_user</username>
      <password>insert_authorized_user_password</password>
    </server>
    -->
  </servers>

  <!-- If you want to access the Instana repository using an HTTP/Socks proxy,
       uncomment the proxies section and insert proxy details. -->
  <!-- https://maven.apache.org/guides/mini/guide-proxies.html -->
  <!--
  <proxies>
    <proxy>
      <id>agent-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <username></username>
      <password></password>
      <host></host>
      <port></port>
    </proxy>
  </proxies>
  -->

  <!-- If you want to use a company internal mirror, make sure that mirror is
       configured to use the Instana repository, uncomment the mirrors section
       and insert maven mirror details.
       If the mirror also requires auth it can be added above. -->
  <!-- https://maven.apache.org/guides/mini/guide-mirror-settings.html -->
  <!-- Repos that need to be mirrored -->
  <!-- feature: https://artifact-public.instana.io/artifactory/features-public -->
  <!-- shared: https://artifact-public.instana.io/artifactory/shared -->
  <!--
  <mirrors>
    <mirror>
      <id>features-mirror</id>
      <url>http://repo.mycompany.com/artifactory/instana-public</url>
      <mirrorOf>features</mirrorOf>
    </mirror>
    <mirror>
      <id>shared-mirror</id>
      <url>http://repo.mycompany.com/artifactory/instana-shared</url>
      <mirrorOf>shared</mirrorOf>
    </mirror>
  </mirrors>
  -->

</settings>
 

プロキシ用の構成は、 mvn-settings.xml ファイルで構成された Maven エンドポイントと通信するプロキシを持つ環境で Instana エージェントを使用します。

さらに、エージェントと Instana バックエンド間の通信にプロキシを使用するために、 *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.Backend.cfg 設定ファイルを再設定する必要があります。

以下の行が存在し、コメント化されていないことを確認します。

proxy.type=http
proxy.host=your-proxy-address-goes-here
proxy.port=your-proxy-port-goes-here
proxy.user=user-if-needed
proxy.password=password-if-needed
proxy.dns=true
 

環境変数からプロキシのユーザー名とパスワードを参照する

機密性の高いプロキシ認証の詳細を非公開にするには、環境変数を使用してプロキシ設定をリンクすることができます。

環境変数を使用してバックエンド・プロキシ・プロパティを設定するには、 <instana-agent-dir>/etc/instana/com.instana.agent.main.sender.Backend.cfg ファイルに以下の例を使用できます。 ユーザ名とパスワードを環境変数 BACKEND_PROXY_USERBACKEND_PROXY_PASSWORD でエージェントに公開しなければならない。

proxy.user=${env:BACKEND_PROXY_USER}
proxy.password=${env:BACKEND_PROXY_PASSWORD}
 

環境変数を使用して Maven リポジトリ・プロキシを設定するには、 mvn-settings.xml ファイルに次の例を使用できます。 ユーザ名とパスワードを環境変数 MAVEN_PROXY_USERMAVEN_PROXY_PASSWORD でエージェントに公開しなければならない。

<proxies>
  <proxy>
    <id>agent-proxy</id>
    <active>true</active>
    <protocol>http</protocol>
    <username>${env.MAVEN_PROXY_USER}</username>
    <password>${env.MAVEN_PROXY_PASSWORD}</password>
    <host></host>
    <port></port>
  </proxy>
</proxies>
 

Squid プロキシー構成の例

Instanaと組み合わせてsquidプロキシ( www.squid-cache.org ) を Instana と組み合わせて設定することができます。

Squid をシステムにインストールするには、いくつかの方法がある。 ほとんどの Linux® ディストリビューションのリポジトリーには Squid が含まれており、優先パッケージ・マネージャーを使用してソフトウェアをインストールできます。

利用可能なパッケージがない場合、または Microsoft® Windows® 上で Squid を実行したい場合は、( Squid Web Cache documentation ) から Squid のバイナリ・ファイルを入手できる。

Squid。 squid.conf が作成され、デフォルトのコンフィギュレーションが設定されます。 Instana通信専用にプロキシを使用したい場合は、デフォルトの設定をバックアップして、次のようにします。 squid.conf 設定を使用します:

# The tcp port squid is listening on
http_port 3128

# Please specify subnet with instana agents
acl instana_agent_net src 10.0.0.0/8

# This is the ip of the instana backend
acl instana_backend dstdomain saas-eu-west-1.instana.io
#acl instana_backend dstdomain ec2-54-144-114-141.compute-1.amazonaws.com
#acl instana_backend dstdomain saas-us-east-1.instana.io
#acl instana_backend dstdomain saas-us-east-1.instana.io

# This is the port used by Instana
acl instana_backend_port port 443

# This is the repo to download updates and additional sensors
acl instana_repo dstdomain artifact-public.instana.io
acl instana_repo_port port 80
acl instana_repo_port_secure port 443

# Protocol used for instana backend
acl instana_backend_proto proto HTTP

# Protocol used for instana backend
acl instana_repo_proto proto HTTP
acl instana_repo_proto_secure proto HTTPS

http_access allow instana_agent_net instana_backend instana_backend_port
http_access allow instana_agent_net instana_repo instana_repo_port
http_access allow instana_agent_net instana_repo instana_repo_port_secure

# DO NOT REMOVE THIS RULE!
http_access deny all
 

エージェント・エンドポイントにTLS暗号化を設定する

デフォルトでは、ポート 42699 のエージェントへの HTTP ネットワーク接続とポート 4317 の gRPC 接続は暗号化されない。

TLSで暗号化されたリクエストを受け付けるようにエージェントを設定できます。

以下の TLS バージョンが有効です: TLSv1 TLSv1.1TLSv1.2TLSv1.3。 利用可能なTLSバージョンは、エージェントが外部のメトリクス・リソースに接続するときなど、エージェント自身がセキュアな要求を発行するときにも適用されます。

<agent_installation>/etc/certs/ ディレクトリに証明書を追加することで、ポート 42699 と 4317 のエージェント・エンドポイントで TLS 暗号化を有効にできます。 デフォルトでは、エージェントは以下のファイルを検索します。

  • <agent_installation>/etc/certs/tls.crt
  • <agent_installation>/etc/certs/tls.key

<agent_installation>/etc/certs/ ディレクトリに各ファイルが1つしかない場合、 .crt.key ファイルには、 <agent_installation>/etc/certs/<your_certificate_name>.crt<agent_installation>/etc/certs/<your_key_name>.key といった他の名前も許される。

証明書を追加したら、エージェントを再起動してネットワーク接続を初期化します。

重要 :ホスト・エージェントは _enforcing_TLS 暗号化を許可しない。 TLSは、クライアントからの要求があった場合のみ、コネクション上で有効になる。

モニタリングの問題

エージェントのエンドポイントに TLS 暗号化を設定する際に、以下のような監視上の問題が発生する可能性があります。 これらの問題は、Instana UI のエージェントダッシュボードに表示されます。 先に進む前に、それらを解決する必要がある。

モニタリングの問題タイプ: agent_tls_cert_expired

エージェントエンドポイントのTLS暗号化を設定するために使用される証明書の有効期限が切れる。 期限切れの証明書を新しい証明書ファイルに置き換えてください。

モニタリングの問題タイプ: agent_tls_cert_about_to_expire

エージェント・エンドポイントのTLS暗号化に使用されている証明書の有効期限が数日後に迫っています。 証明書を新しい証明書ファイルに置き換えてください。

ホスト・エージェント・モードの構成

注: One-Liner ホストエージェントのインストール方法と Instana ホストエージェント Docker イメージは、 AWS モードである追加モードを受け入れます。

ホスト・エージェントの AWS モードは、ホストのモニタリングには使用されません。 ホストの監視には、 AWS エージェントのドキュメントに記載されているように、 INFRASTRUCTURE モードと、 AWS データ収集のいくつかの自動設定が使用されます。

ホストエージェントモードは、 *instanaAgentDir*/etc/instana/com.instana.agent.main.config.Agent.cfg コンフィギュレーションファイルで設定できます:

mode = APM
# APM, INFRASTRUCTURE or OFF
 

*instanaAgentDir*/etc/instana/com.instana.agent.main.config.Agent.cfg 設定ファイルを変更した後、変更を有効にするにはホストエージェントを再起動する必要があります。

ダイナミックホストエージェントの更新の設定

動的ホスト・エージェントはそれ自体を更新できるため、管理オーバーヘッドを減らすことができます。 更新間隔の設定など、動的ホストエージェントの更新を設定するには、 動的ホストエージェントの更新の設定を参照してください。

UIからのエージェントモードのオーバーライドを防ぐ

エージェントモードは Instana UI からも設定できるため、設定ファイルにはこのオーバーライドを無効にするフラグがあります。 このように、エージェントモードは、インストールされたエージェントにローカルな設定ファイルまたは環境変数のみを使用して設定することができます。

UIからエージェントモードを設定したくない場合は、 *instanaAgentDir*/etc/instana/com.instana.agent.main.config.Agent.cfg 設定ファイルに以下の行を追加してください:

mode.web-override.allowed = false
 

エージェント設定ファイルによるホストエージェントの設定

ほとんどのホストエージェント設定は、エージェント設定ファイル(*instanaAgentDir*/etc/instana/configuration.yaml)を使用して適用されます。

エージェント・コンフィギュレーション・ファイルを使用することで、以下の目標を達成することができます:

  • 複数の設定ファイルを作成する
  • ホストエージェントとシークレットマネージャーの統合
  • プロセス環境とファイルから設定を取得する
  • 追加ファイルシステムの監視
  • ホストタグの指定
  • インストール済みパッケージ・リストの抽出
  • カスタムゾーンの設定
  • カスタム・プロセスのモニター
  • 秘密の設定
  • カスタム HTTP ヘッダーのキャプチャー
  • Kafka トレース相関ヘッダーを設定する
  • プロセスの無視
  • Instana UIによってトリガーされたエージェント機能の停止
  • コードソースファイルをInstanaにアップロードする
  • エラーレポートイベントの設定( AIX オペレーティングシステムのみ)

詳細については、 エージェント設定ファイルを使用したホストエージェントの設定のトピックを参照してください。

エージェントのロギング

デフォルトでは、Instana エージェントは *instanaAgentDir*/data/log/agent.log ログファイルにログを記録します。このログファイルは、ファイルサイズが大幅に増加した場合にローテーションされます。 コンテナでエージェントを実行している場合、Instana エージェントは代わりにコンソールにログを記録します。コンソールは Docker によって管理され、 Docker ログを使用してアクセスできます。

*instanaAgentDir*/etc/org.ops4j.pax.logging.cfg 設定ファイルのレベルを log4j2.logger.instana.level=INFO から log4j2.logger.instana.level=DEBUG に変更することで、ログレベルをデバッグに上げることができる。

重要: 行末に空白がないことを確認してください。

古いエージェントのインストールでは、この行を log4j.logger.com.instana=INFO, out, osgi:* から次のように変更する必要があります。 log4j.logger.com.instana=DEBUG, out, osgi:*

ログ・ローテーション

デフォルトでは、エージェントは5MBのエージェントログファイルを10回ローテーションします。 つまり、5MBごとにファイルがローテーションされ、10ファイルが保持され、11ファイルが削除される。

log4j2.appender.rolling.policy.type = SizeBasedTriggeringPolicy
log4j2.appender.rolling.policy.size = 5MB
log4j2.appender.rolling.strategy.type = DefaultRolloverStrategy
log4j2.appender.rolling.strategy.max = 10
 

Syslog

このエージェントは Log4j2 を使用している。これは近代的で柔軟なロギング機能である。 syslogを設定するには、以下の例を参照のこと:

log4j2.rootLogger.appenderRef.Syslog.ref = Syslog
log4j2.rootLogger.appenderRef.Syslog.level = ERROR
log4j2.appender.syslog.type=Syslog
log4j2.appender.syslog.name=Syslog
log4j2.appender.syslog.layout.type=PatternLayout
log4j2.appender.syslog.layout.pattern = ${log4j2.pattern}
log4j2.appender.syslog.facility=SYSLOG
log4j2.appender.syslog.host=localhost
log4j2.appender.syslog.port=514
log4j2.appender.syslog.protocol=UDP
 

STDOUT へのログ記録

カスタム・コンテナ・イメージでは、 STDOUT にログを記録する。 そのためには、 <instana-agent-install-dir>etc/org.ops4j.pax.logging.cfg コンフィギュレーション・ファイルで以下のコンフィギュレーションを指定する:

log4j2.rootLogger.appenderRef.Console.ref = Console

log4j2.appender.console.type = Console
log4j2.appender.console.name = Console
log4j2.appender.console.layout.type = PatternLayout
log4j2.appender.console.layout.pattern = ${log4j2.pattern}
 

メトリクスまたはトレースのファイルへのログ記録

エージェントは、このエージェントを通じて送信されたメトリクスまたはトレースを、一時的にディスク上のファイルに記録することができます。 メトリクスやトレースをファイルに記録する機能は、メトリクス、トレース、トレース、スパンに関連するさまざまな問題をデバッグするためによく使用されます。

この機能を有効にするには、 *instanaAgentDir*/etc/instana/com.instana.agent.main.sender.File.cfg コンフィギュレーション・ファイルを探し、以下のコマンドでその内容を更新する:

# Configuration of local logging. Changes will be hot-reloaded.
# Activate logging of outgoing payloads to local disk by setting a non-empty
# prefix. The log file will be written to data/log, and the file will have the
# defined prefix followed by a timestamp.
# Note: There is no automatic rotation of those files.
prefix=locallog

# The file can be filtered to either "metrics" or "traces".
# If empty or absent, there will be no filtering.
type=traces
 

前述の通り、変更はホットロードされ、即座に有効にすることができる。 この機能を有効にしたままにしておくと、十分な時間とトラフィックが与えられた場合、利用可能なディスク領域をすべて占有する可能性があるため、この機能は一時的にのみ有効にする必要がある。

問題をトレースする際、コンポーネントへのトラフィックが発生している間、ロギングを1~2分間継続させる。 次に、変更を元に戻すか、そのファイル内のすべての行をコメント化します。 この場合も、ディスクに書き込まれた変更は、Instana エージェントによってホットロードされます。

サポート・チケットを処理する場合は、結果のログ・ファイルをサポート・チケットに添付します。 ログファイルは、 *instanaAgentDir*/data/log/locallog_*.log ログファイルにあります。

ホスト・エージェントの CPU とメモリーの制限

特定のシナリオでは、プロセスのリソース消費を綿密にコントロールすることが重要である。 この制御は、リソース共有を使用する環境や、リソースの少ないシステムで特に役立つ。 Instana エージェントは、可能な限りリソースを使用しないように設計されていますが、明確なリソース制限を尊重するためのもう 1 つの保護措置として、以下の指示に従うことで、リソースをさらに制限することができます。

以下の例はすべて、エージェントのCPUをCPUの半分に相当する計算資源に制限し、メモリを最大512MBに制限しています。 しかし、すべてのリソースが同じCPUから供給されるとは限らない。

Systemd

  1. /etc/systemd/system/instana-agent.service.d/20-resource_limits.conf という名前の設定ファイルを作成し、以下の内容を追加する:

    [Service]
    CPUAccounting=true
    CPUQuota=50%
    MemoryAccounting=true
    MemoryMax=512M
     
  2. systemctl daemon-reload を実行します。

  3. instana-agent サービスを再始動します。

Docker

以下の追加のパラメーターを指定して、instana-agent コンテナーを実行します。

Docker 1.13 以降用:

--cpus=0.5 --memory=512m
 

Docker 1.12 以前用:

--cpu-period=100000 --cpu-quota=50000 --memory=512m
 

Kubernetes

ホスト・エージェントのコンテナ構成に、以下の構成スニペットを追加する:

livenessProbe:
  httpGet: # Agent liveness is published on localhost:42699/status
    path: /status
    port: 42699
  initialDelaySeconds: 75
  periodSeconds: 5
resources:
  requests:
    memory: "256Mi"
    cpu: "0.5"
  limits:
    memory: "512Mi"
    cpu: "1.0"
 

このコンフィギュレーションは、 instana-agent コンテナに対して、より少ないメモリと CPU を要求する。

静的エージェントを動的エージェントに変換する

静的エージェントを動的エージェントに変更するには、以下の設定ファイルを更新します:

  • <agent-dir>/etc/org.ops4j.pax.url.mvn.cfg ファイルを図のように更新する:

    org.ops4j.pax.url.mvn.repositories=https://artifact-public.instana.io/artifactory/features-public@id=features@snapshots@snapshotsUpdate=always,https://artifact-public.instana.io/artifactory/shared@id=shared@snapshots@snapshotsUpdate=always
     
  • <agent-dir>/etc/instana/com.instana.agent.main.config.UpdateManager.cfg ファイルを図のように更新する:

    mode=AUTO
     
  • <agent-dir>/etc/instana/com.instana.agent.bootstrap.AgentBootstrap.cfgversion または pin を無視または削除してください:

    #version=<hash>
     
  • 以下のコマンドを実行し、システム・ディレクトリに存在するBOMのバージョンへの参照をすべて削除する:

    find <agent-dir>/system/ -type d -name '1.0.0-SNAPSHOT' -exec rm -rv {} \;
     

注意ダイナミック・エージェントを最初にインストールした場合、スタティック・エージェントに変更することはできません。