PHP のトレース機能を有効にして設定する
デフォルトでは、エージェントの設定ファイルで PHP のトレース機能が有効になっています。 PHP のトレース機能が有効になっている場合、 PHP センサーは、 PHP ランタイムに PHP Tracer( Instana の PHP トレース拡張機能とも呼ばれます)を自動的にインストールします。
要件
PHP センサーは、検出した PHP ランタイムが JSON 拡張機能をサポートしている場合にのみ、トレースを有効にします。 PHP ランタイム内で以下の拡張機能のいずれかが検出された場合、 PHP Tracerのインストールは自動的に無効化されます:
- SourceGuardian
- New Relic
- Dynatrace
- Datadog
PHP ランタイムで ionCube Loader拡張機能が検出された場合、 PHP Tracerがインストールされ、 PHP のユーザーランドトレースは無効化されます。
PHP トレース工程
エージェントの設定ファイルで PHP トレースが有効になっている場合、 PHP センサーは、以下の手順に従って、 PHP トレース拡張機能のインストールと設定を自動的に管理します
PHP センサーは、 PHP のTracing拡張機能をダウンロードし、 PHP ランタイムのINI設定で次のように有効にします:
- PHP ランタイムが、追加のINIファイル用に別のディレクトリを使用するように設定されている場合、 PHP センサーは、 PHP
zzz-instana.iniトレース拡張機能のINI設定を含むファイルをこのディレクトリに配置します。 - それ以外の場合、 PHP センサーは、INI設定をメイン
php.iniファイルに追加することで、 PHP Tracerを設定します。
このファイルは
zzz-instana.ini変更しないでください。 PHP センサーは、 Instanaconfiguration.yamlエージェントファイルの設定に基づいて、インストールごとにこのファイルを上書きします。- PHP ランタイムが、追加のINIファイル用に別のディレクトリを使用するように設定されている場合、 PHP センサーは、 PHP
その後、 PHP センサーは、 PHP 環境を正常に再起動し、 PHP トレース拡張機能をメモリに読み込もうとします。
PHP ランタイムの再起動に成功すると、 PHP トレース拡張機能が PHP ランタイム内でトレースの収集を開始します。
PHP ランタイムのSAPIタイプが原因で自動再起動が機能しない場合は、 PHP を手動で再起動し、 PHP トレース拡張機能をメモリに読み込む必要があります。 PHP のランタイム再起動の自動化に関する詳細については、 「自動再起動」 を参照してください。
PHP センサーは、 PHP トレース拡張機能のINI設定に対して、妥当なデフォルト値を生成します。 ただし、非常に具体的なニーズに対応するために、これらの設定を調整することができます。 詳細については、 「詳細なカスタマイズ」 を参照してください。
PHP の「Tracing」拡張機能の自動インストールで問題が発生した場合は、手動でインストールすることも可能です。 詳細については、 「 PHP トレース拡張機能の手動インストール」 を参照してください。
高度なカスタマイズ
PHPzzz-instana.iniセンサーは頻繁に上書きを行うため、このINIファイルを変更しないでください。 その代わりに、. ディレクトリ内のデフォルトの zzz-instana.iniInstana.ini設定を上書きする、独自のINIファイルを追加することができます。 PHP INIファイルを英数字順に読み込み、各設定項目について最後に読み込まれた値が有効な値となります。 カスタムINIファイルの設定が、 zzz-instana.iniのINI設定よりも優先されるようにするには、カスタムINIファイルの名前を(接頭辞に zzzzz-instana-extras.ini 注意 zzzzz-)として、が読み込まれた後に読み込まれる zzz-instana.iniようにしてください。 コンテナ環境では、カスタムINIファイルを動的にマウントするか、イメージの一部として組み込むことができます。
以下の設定は、 PHP のすべてのバージョンで利用可能です:
instana.batch_threshold_us: スパンのバッチ処理が実行される長さと距離のしきい値。 デフォルト値は10000マイクロ秒です。instana.backtrace_limit: スタックトレースの深さを指定します。1許容値の範囲は -25(デフォルト)です。 スタックトレースの設定機能は、スタックトレースの収集を完全に無効にしたり、エラーが発生したスパンに対してのみ有効にしたりすることができるため、INI設定instana.backtrace_limitよりもスタックトレースの収集をより細かく制御できます。 詳細については、 「スタックトレースの設定」 のセクションを参照してください。instana.disabled_instrumentation(非推奨): 無効にする計測機能のビットマスクを指定します。 デフォルト値は 0 (なし) です。 詳細については、 「計測機能の無効化」 のセクションを参照してください。 このINI設定は非推奨となっており、より柔軟な計測機能の無効化設定が可能な「 span無効化機能」に置き換えられています。instana.disable_userland_tracing: ネイティブではない PHP 拡張機能や、フレームワークなどの PHP ユーザーランドコードに対するすべてのトレースを無効にします。 デフォルト値は 0 (オフ) です。instana.enable_cli: CLI SAPI のトレースを有効または無効にします。 1 = オン。 0 = オフ。 デフォルト値は 0 (オフ) です。instana.log_level: ログに記録するレベル: 0 = オフ、1 = エラー、2 = 警告、3 = 情報、および 4 = デバッグ。 デフォルト値は 0 (オフ) です。instana.segfault_error_log: セグメンテーションフォルトが発生した際、 PHP のエラーログにバックトレースを記録するか、または記録しないようにする。 デフォルト値は 0 (オフ) です。instana.span_chunk_size: PHP のメモリに保持し、エージェントに送信するまでのスパン数。 この数はバッチ処理に直接影響します。 例えば、1 つのチャンクを使用すると、実質的にバッチ処理が無効になります。
以下の設定は、 PHP 5にのみ搭載されています:
instana.socket: Instana PHP センサーの TCP ソケットのアドレス。 ソケットのアドレスは、インストール時に決定します。デフォルトは tcp://127.0.0.1:16816 です。
以下の設定は、 PHP 7.0 以降専用です。
instana.buffer_hard_limit: エージェントが応答しなくなった場合にバッファーに保持されるスパンの最大数。 バッファーがこの制限内に含まれるまで、最も古いものから順にスパンがドロップされます。 デフォルト値は 1000 です。instana.buffer_maximum_delay_ms: スパン・バッファーの後続のクリアランス間の最大間隔。 デフォルト値は 1000 ミリ秒です。instana.buffer_soft_limit: スパン・バッファーがクリアされる前にバッファーに入れられるスパンの最大数。 デフォルト値は 500 です。
以下の設定は、 PHP ( 8.1 以降)にのみ適用されます:
instana.span_filter_config_file: トレースの無効化やスパンのフィルタリングに関する設定が含まれる YAML ファイルの絶対パスを指定します。 PHP センサーは、エージェントconfiguration.yamlファイルのこの設定を更新し、スパンの無効化とフィルタリングを有効にします。 デフォルト値は<System_Temp>/instana-php/instana_span_filter_config.yamlです。 この設定の詳細については、 「 YAML の設定に関する追加手順」 のセクションを参照してください。
以下の表は、 PHP 拡張機能を設定するための環境変数の完全な一覧です:
| 環境変数 | デフォルト値 |
|---|---|
INSTANA_AGENT_HOST |
127.0.0.1 |
INSTANA_AGENT_PORT |
42699 |
INSTANA_SERVICE_NAME |
空 |
INSTANA_DEBUG |
OFF |
INSTANA_STACK_TRACE_LENGTH |
25 |
INSTANA_EXTRA_HTTP_HEADERS |
なし |
INSTANA_SECRETS |
password, key, secret |
INSTANA_LOG_LEVEL |
なし |
これらの環境変数は、. zzz-instana.ini内の設定よりも優先されます。 詳細については、 「環境変数」 を参照してください。
これらの設定についてサポートが必要な場合は、 IBM サポートまでお問い合わせください。
HTTP のカスタムヘッダーの取得
PHP Tracerは、エントリおよびエグジットスパンにおいて、カスタム HTTP ヘッダーをキャプチャすることができます。 これらのヘッダーを取得するには、以下のいずれかの設定でヘッダーのリストを指定してください:
PHP INI設定:
instana.extra_http_headers=HEADER1,HEADER2環境変数の設定:
INSTANA_EXTRA_HTTP_HEADERS=HEADER1;HEADER2
あるいは、agent configuration.yaml ファイルでヘッダーリストを設定することで、追跡対象となるすべてのリクエストまたはレスポンスの HTTP ヘッダーを取得することもできます。 詳細については、 「 HTTP のカスタムヘッダーの取得」 を参照してください。
PHP のTracerは、ヘッダーのキーと値の両方でスペースを保持します。
この機能は、 PHP Tracer 4.7.0 以降で利用可能です。
スパンを無効にする
PHP Tracer では、特定のスパンタイプ(フレームワーク、ライブラリ、および計測機能)や、ライブラリのグループ全体(スパンカテゴリ)に対して、トレースやスパンの無効化を行うことができます。 このスパン無効化機能を使用すると、アプリケーションの要件に合わせてトレースをカスタマイズできます。 アプリケーションに不可欠なトレースのみを報告することで、ネットワークコストを削減できます。
この機能は、 PHP Tracer 5.3.0 以降で利用可能です。
構成方式
トレースを無効にする設定を行うには、以下のいずれかの方法を使用してください:
設定の優先順位に関する詳細については、 「スパンの無効化に関する設定の優先順位」 を参照してください。
オプション 1:カスタム設定ファイルによるスパン機能の無効化
カスタム設定ファイルを使用してスパンを無効にするには、環境変数を INSTANA_CONFIG_PATH 、設定が記述された YAML ファイルの絶対パスに設定してください。
- カスタム設定ファイルはシンボリックリンクであってはなりません。 そのディレクトリには「読み取り(
r)」権限が設定されており、そのすべての親ディレクトリには、 PHP ランタイムまたは PHP ワーカープロセスが実行されているユーザーまたはグループに対して「実行(x)」権限が付与されている必要があります。 - この機能を初めて有効にする場合、または YAML の設定が空の状態から開始する場合は、設定を更新した後、 PHP ランタイムを再起動してください。 その後の設定変更は、再起動をしなくても反映されます。
スパンの無効化設定の詳細については、 「スパンの無効化設定」 を参照してください。
例 :すべてのデータベース呼び出し( MongoDB を除く)およびすべてのロギングフレームワークのトレースを無効にするには、以下の手順を実行してください
別の YAML ファイルを作成し、以下の設定をそのファイルにコピーしてください:
tracing: disable: - databases: true - mongodb: false - logging: trueコンテンツが配置されている YAML ファイルの絶対パスを、次のように環境変数
INSTANA_CONFIG_PATHに設定してください:INSTANA_CONFIG_PATH=<your YAML file>
オプション 2: Instana エージェントの設定によるスパン機能の無効化
Instana エージェントの設定でスパン無効化を設定するには、エージェントの configuration.yaml `agent.conf` ファイル内の `span` com.instana.tracing.disable セクションを作成または更新し、スパン無効化の設定を記述してください。
この方法でスパンフィルタリングを設定する場合、一部の PHP ランタイムでは追加の手順が必要となります。 詳細については、 「 YAML の設定に関する追加手順」 を参照してください。
スパンの無効化設定の詳細については、 「スパンの無効化設定」 を参照してください。
例 :すべてのデータベース呼び出し( Redis を除く)およびすべてのロギングフレームワークのトレースを無効にするには、次のスニペットを使用してエージェント configuration.yaml を更新してください:
com.instana.tracing:
disable:
- databases: true
- redis: false
- logging: true
スパン無効化の設定
スパン無効化の設定構文に関する詳細については、 「トレースの無効化」 を参照してください。
カテゴリのトレース機能を無効にすると、そのカテゴリに属するすべてのライブラリでのスパン生成が無効になります。 PHP Tracer でサポートされているカテゴリの一覧は以下の通りです:
「自動インスツルメンテーションが適用されたライブラリおよびフレームワーク」 の表に記載されているすべてのインスツルメンテーション識別子を使用して、特定のスパンタイプに対するスパン無効化ルールを設定できます。
スパンの無効化に関する設定の優先順位
スパン無効化ルールは、優先順位の高い順から低い順に、以下の順序で適用されます:
- 環境変数
INSTANA_CONFIG_PATHを通じて渡されるカスタム設定ファイルから、無効化ルールを適用します。 - INI
instana.disabled_instrumentation設定でスパン無効化が設定されています。 - エージェント
configuration.yamlファイルから無効化ルールを適用する。
PHP ランタイムが複数の設定を検出した場合、優先順位が最も高い設定に含まれるスパン無効化ルールのみを適用します。
たとえば、 PHP のランタイムで、環境変数を通じて INSTANA_CONFIG_PATH 次のようなスパン無効化ルールが設定されている場合:
com.instana.tracing:
disable:
- logging: true
- databases: true
- redis: false
また、同じランタイムには以下のINI設定があります:
instana.disabled_instrumentation=24 ; disables redis (16) and curl (8) instrumentations
この設定例では、 PHP Tracerは次のように動作します:
- すべてのロギングライブラリのトレースが無効になっています。
- Redis を除き、すべてのデータベースのトレースは無効になっています。
環境 INSTANA_CONFIG_PATH 変数が優先されるため、INI設定 instana.disabled_instrumentation は無視されます。 したがって、環境 INSTANA_CONFIG_PATH 変数で指定された設定ファイルを通じて無効化されていないすべての計測機能は有効になります。
環境 INSTANA_CONFIG_PATH 変数とエージェント configuration.yaml 設定ファイルの両方でspan無効化ルールが設定されている場合、設定 configuration.yaml ファイルのルールは無視されます。
スパンをフィルタリングする
スパンフィルタリング機能を使用することで、 Instana が収集・取り込むトレースデータの量を削減できます。 フィルタリングルールをカスタマイズすることで、スパン属性に基づいて、関係のないスパンやトレースを除外し、重要なものを含めることができます。 これらのフィルタリングルールを使用することで、スパンを選択的に監視する設定をより細かく制御できます。
この機能は、 PHP Tracer( 5.8.0 )以降で利用可能です。一方、 HTTP のスパンフィルタリングは、 PHP Tracer( 5.7.1 )以降でサポートされています。
構成方式
スパンフィルタリングルールを設定するには、以下のいずれかの方法を使用してください:
スパンの無効化とスパンのフィルタリングの間の設定の優先順位に関する詳細については、 「スパンのフィルタリングに関する設定の優先順位」 を参照してください。
オプション 1: カスタム設定ファイルによるスパンフィルタリング
カスタム設定ファイルを使用してスパンフィルタリングを設定するには、環境変数を INSTANA_CONFIG_PATH 、設定が記述された YAML ファイルの絶対パスに設定してください。
- カスタム設定ファイルはシンボリックリンクであってはなりません。 そのディレクトリには「読み取り(
r)」権限が設定されており、そのすべての親ディレクトリには、 PHP ランタイムまたは PHP ワーカープロセスが実行されているユーザーまたはグループに対して「実行(x)」権限が付与されている必要があります。 - この機能を初めて有効にする場合、または YAML の設定が空の状態から開始する場合は、設定を更新した後、 PHP ランタイムを再起動してください。 その後の設定変更は、再起動をしなくても反映されます。
フィルタリング設定の詳細については、 「Spanフィルタリング設定 」を参照してください。
spanフィルタリングの設定で使用できるspan属性の一覧については、 「spanフィルタリングの設定」 を参照してください。
例 : HTTP のエンドポイントが または /health で終わるスパン /pingを除外するには、以下の手順を実行してください:
別の YAML ファイルを作成し、以下の設定をそのファイルにコピーしてください:
tracing: filter: exclude: - name: ignore status checks attributes: - key: http.url values: [/health, /ping] match_type: endswithコンテンツが配置されている YAML ファイルの絶対パスを、次のように環境変数
INSTANA_CONFIG_PATHに設定してください:INSTANA_CONFIG_PATH=<your YAML file>
オプション 2: Instana エージェントの設定によるスパンフィルタリング
Instana のエージェント設定を通じてスパンフィルタリングを設定するには、エージェントの configuration.yaml `agent.conf` ファイル内の `span_filtering` com.instana.tracing.filter セクションを作成または更新し、そこにスパンフィルタリングの設定ルールを記述します。
この方法でスパンフィルタリングを設定する場合、一部の PHP ランタイムでは追加の手順が必要となります。 詳細については、 「 YAML の設定に関する追加手順」 を参照してください。
スパンフィルタリングの設定の詳細については、 「スパンフィルタリングの設定」 を参照してください。
spanフィルタリングの設定で使用できるspan属性の一覧については、 「フィルタリング用のspan属性」 を参照してください。
スパン無効化ルールとスパンフィルタリングルールの設定優先順位に関する詳細については、 「設定の優先順位」 を参照してください。
例 :上のすべてのPDOスパン tempdbを除外するには、次のスニペットを使用して configuration.yaml エージェントを更新してください:
com.instana.tracing:
filter:
exclude:
- name: exclude PDO spans for tempdb
attributes:
- key: pdo.dsn
values: [dbname=tempdb]
match_type: contains
スパンフィルタリングの設定
スパンフィルタリングのルールでは、以下の YAML 構文を使用します:
filter:
deactivate: <boolean>
<policy>: exclude | include
- name: <string>
suppression: <boolean> # only applicable to exclude rules
attributes:
- key: <string> # category | kind | type | span attribute (like http.url, pdo.stmt, etc.)
values: List <string>
match_type: <string> # strict | startswith | endswith | contains
| フィールド | 必須 | 説明 |
|---|---|---|
filter |
必須 | すべてのフィルタリングルールのルートノード。 |
deactivate |
オプション | この設定を「オフ」にすると、設定済みのフィル true タルールは削除されずに、フィルタ設定が無効になります。 デフォルト値は false (フィルタリングが有効になっています)。 |
policy |
必須 | exclude このポリシーには、トレースからスパンを除外する除外ルールが定義されています。 include このポリシーには、トレースにスパンを含めるためのインクルードルールが定義されています。 include ルールはルール exclude に優先する。 |
name |
必須 | フィルタルールを説明する、人間が読みやすい名前。 |
suppression |
オプション | スパンが除外ルールに一致した場合、子スパンおよび下流のトレースを抑制するかどうかを指定します。 デフォルト値は. です true。 に設定すると false、親のspanはトレースから除外されますが、下流のトレースは抑制されません。 |
attributes |
必須 | ルールが適用されるために、すべて一致しなければならないspan属性のリスト。 |
key |
必須 | Span属性のキー。 |
values |
必須 | span属性に指定する key値の一覧。 属性は、そのいずれかに values 一致する場合に一致とみなされます。 ワイルドカードおよび正規表現はサポートされていません。 |
match_type |
オプション | span属性の values 範囲がどのように照合されるかを定義します。 有効な値: strict (既定値)、 startswith、 endswith、および contains。 |
フィルタリング用のスパン種別
` exit span` 要素を使用すると、さまざまな出口スパンに一致させることができます。
フィルタリング用の範囲カテゴリ
フィルタリングには、以下のスパンカテゴリを使用できます: databases, frameworks, messaging, http, logging, templating。特定の技術やスパンタイプがどのカテゴリに属するかは、 「自動インスツルメンテーション対応のライブラリおよびフレームワーク 」を参照してください。
フィルタリング用のスパンタイプ
自動インスツルメンテーションが適用されたライブラリやフレームワークにリストされているすべてのインスツルメンテーション識別子を、フィルタリング用のスパン型として使用できます。
フィルタリング用のSpan属性
以下の各節では、フィルタリングに使用できる各スパンタイプに対応するスパン属性について説明します。
php の属性| span属性 | 説明 | 値の例 |
|---|---|---|
php.script |
ドキュメントルートからの PHP スクリプトへの相対パス。 値は常に「 /.」で始まります。 |
/index.php |
php.version |
PHP のバージョン | 8.5.1 |
「span」カテゴリの http span属性
curl, pecl_http, soap, および は streams スパン http 型であり、 スパン http カテゴリに属します。HTTP のエンドポイントフィルタリングには、span タイプ http における以下の span 属性を使用できます:
| span属性 | 説明 | 値の例 |
|---|---|---|
http.url |
URL | http://www.example.com/items |
http.method |
HTTP メソッド | GET |
http.status |
HTTP レスポンスステータスコード | 200 |
http.host |
ホスト名 | www.example.com |
http.header.<header-name> |
HTTP ヘッダー | header-value |
http.params |
HTTP 照会ストリング | action=edit&id=5 |
http.route_id |
ルートID。 Laravel、Symfony、またはLaminasの呼び出しで名前付きルートが使用される場合、ルート PHP スパンで利用可能です。 | home |
http.path_tpl |
ルートURI。 Laravelの呼び出しにルーティングが含まれる場合、ルート PHP スパンで利用可能です。 | /products/{category}/item/{item} |
soap.action |
SOAP エンドポイントに対して呼び出すアクション | http://www.example.com/item/#delete |
frameworks span属性| フレームワーク | スパン・タイプ | スパン属性 |
|---|---|---|
| Laminas | laminas |
laminas.controller, laminas.action, laminas.route_name. laminas.module, laminasview.template, laminasview.subtemplate_count, laminasview.renderer |
| Laravel | laravel |
laravel.action, laravel.controller, laravel.route |
| Symfony | symfony |
symfony.action, symfony.controller, symfony.route, symfony.api_collection_operation, symfony.api_item_operation, symfony.api_subresource_operation_name, symfony.api_resource_class, symfony.route_params, symfony.event_count |
| WordPress | wordpress |
wp.action, wp.view, wp.post_title |
| Zend Framework | zf |
zf.controller, zf.action, zf.route_name. zf.module, zfview.template, zfview.subtemplate_count, zfview.renderer |
databases span属性| データベース | スパン・タイプ | スパン属性 |
|---|---|---|
| Cassandra | cassandra |
cassandra.cluster, cassandra.keyspace, cassandra.query, cassandra.error |
| Couchbase | couchbase |
couchbase.hostname, couchbase.bucket, couchbase.type, couchbase.stmt, couchbase.error, couchbase.error_code |
| Elasticsearch | elasticsearch |
elasticsearch.id, elasticsearch.index, elasticsearch.type, elasticsearch.action, elasticsearch.address, elasticsearch.endpoint, elasticsearch.error, elasticsearch.hits, elasticsearch.port, elasticsearch.query |
| IBM Db2 | db2 |
db2.dsn, db2.stmt, db2.error |
| LDAP | ldap |
ldap.url, ldap.query, ldap.error |
| Memcache | memcache |
memcache.command, memcache.connection |
| Memcached | memcache |
memcached.connection, memcached.operation, memcached.resultCode, memcached.resultMessage |
| MongoDB | mongo |
mongo.command, mongo.service, mongo.filter, mongo.namespace, mongo.error, mongo.error_code |
| MS SQL | mssql |
mssql.host, mssql.port, mssql.user, mssql.db, mssql.stmt, mssql.error |
| MySQL | mysql |
mysqli.dsn, mysqli.stmt, mysqli.error |
| OCI8 | oci8 |
oci8.conn, oci8.stmt, oci8.error, oci8.error_code |
| PDO | pdo |
pdo.driver, pdo.dsn, pdo.stmt, pdo.error, pdo.error_code |
| Redis | redis |
redis.command, redis.connection, redis.driver, redis.key, |
messaging span属性| メッセージング | スパン・タイプ | スパン属性 |
|---|---|---|
| AMQP | amqp |
amqp.connection, amqp.command, amqp.routingkey |
| Google Cloud Pub/Sub | gcpsa |
gcps.op, gcps.projid, gcps.sub, gcps.top, gcpsa.op, gcpsa.projid, gcpsa.snap, gcpsa.sub, gcpsa.top |
gcpsa注:Google Cloud Pub/Sub の計測機能では、サブスクリプションやトピックに関連するスパンの属性には接頭 gcps 辞 が付き、スナップショットに関連するスパンの属性には接頭辞 が付きます。logging span属性| ロギング | スパン・タイプ | スパン属性 |
|---|---|---|
| Drupal ロガー | log.drupal |
log.message |
| Monolog | log.monolog |
log.message |
| Yii ロガー | log.yii |
log.message |
| Zend Logger | log.zendlog |
log.message |
templating span属性| テンプレート処理 | スパン・タイプ | スパン属性 |
|---|---|---|
| Blade | blade |
blade.view, blade.path, blade.subtemplate_count |
| Twig | twig |
twig.name, twig.path, twig.subtemplate_count |
| インスツルメンテーション | スパン・タイプ | スパン属性 |
|---|---|---|
| シェル | shell |
shell.cmd, shell.exitCode |
| 例外数 | exceptions |
error.file, error.msg, error.type |
| セッション数 | sessions |
session.save_handler |
スパンフィルタリングの設定例
次の例は、スパンフィルタリングの設定を示しています:
# Use 'tracing' section if using custom configuration file
# Use 'com.instana.tracing' section if using agent configuration.yaml file
com.instana.tracing:
filter:
exclude:
- name: exclude HTTP spans based on URL attribute
attributes:
- key: http.url
values: [http://service.app.com]
match_type: startswith
- name: exclude HTTP spans based on HTTP header attribute
suppression: false
attributes:
- key: http.header.X-APPNAME
values: [MyApp]
match_type: strict
- name: exclude logging spans
attributes:
- key: category
values: [logging]
include:
- name: include HTTP spans based on HTTP method and HTTP URL attributes
attributes:
- key: http.method
values: [GET, POST]
- key: http.url
values: [/login, /cart/add, /payment/checkout]
match_type: endswith
- name: include monolog spans related to errors
attributes:
- key: type
values: [monolog]
- key: log.message
values: [error, fail]
match_type: contains
前の例では、フィルタリング設定により以下のルールが適用されます:
- URL が で始まる
http://service.app.comHTTP のスパンを除外し、子スパンおよび下流のトレースを抑制します。 - リクエストヘッダーを含む
X-APPNAME:MyAppHTTP スパンを除外し、子スパンおよび下流のトレースを抑制しない。 - スパンをログから除外する。
/payment/checkout/cart/add/loginHTTP のスパンを、`orPOST`GETメソッドを使用して含め、末尾が`、`、`、`、または`。`で終わる URL を指定してください。- 「」または「」
errorを含むメッセージを含むfailMonologのスパンを含める。
スパンのフィルタリングにおける設定の優先順位
スパンの無効化およびフィルタリングに関する設定ルールは、以下の優先順位に従って適用されます:
- カスタム設定ファイルによるSpan無効化の設定
- カスタム設定ファイルを使用したスパンフィルタリングの設定
- エージェント
configuration.yamlファイルによるSpan無効化の設定 - エージェント
configuration.yamlファイルによるスパンフィルタリングの設定
カスタム設定ファイルが使用される場合、エージェント configuration.yaml ファイル内のルールは無視されます。 同じファイル内で無効化とフィルタリングの両方が設定されている場合、両方が適用されますが、フィルタリングルールと同じスパンに影響を与える無効化ルールが優先されます。
instana.disabled_instrumentation 設定によって無効化されたspanは、フィル includeタルールに含めることはできません。スパンフィルタリングの限界
- 以下のケースでは、子スパンおよび下流のトレースの抑制はサポートされていません:
- HTTP リクエストが完了するまで判明しないspan属性に基づくルールは除外する。 たとえば、`or` または
http.header.<response-header-name>`http.statusspan` 属性を持つ除外ルールでは、表示の抑制を強制することはできません。 - 「or」属性または
http.path_tpl「http.route_idspan」属性に基づくルールを除外する。
- HTTP リクエストが完了するまで判明しないspan属性に基づくルールは除外する。 たとえば、`or` または
- ルートおよび HTTP 以外のスパンに対する除外ルールでは、下流のトレースの抑制はサポートされていません。
スタックトレースの設定
Instana によって収集および取り込まれるトレースデータの量を制御するために、スタックトレースの収集設定を行います。
デフォルトでは、 PHP Tracer は、エントリスパンを除くすべてのスパンのスタックトレースを、スタックトレースの深さを 25 フレームとしてキャプチャします。 スタックトレースの設定を使用することで、 Instana が収集・取り込むトレースデータの量を制御できます。具体的には、 PHP Tracerをカスタマイズして、エラーが発生したスパンのスタックトレースのみを収集するように設定したり、スタックトレースの収集を完全に無効にしたりできるほか、スタックトレースの深さも制御可能です。
PHP Tracer は、スタックトレースの収集が無効になっている場合でも、例外スパンに関するスタックトレースを常に収集します。これは、 PHP アプリケーションにおける実行時例外のデバッグに役立つ情報となるためです。
この機能は、 PHP Tracer 5.9.0 以降で利用可能です。
構成方式
カスタム設定ファイル、環境変数、または Instana エージェントの設定を使用して、スタックトレースを設定します。
スタックトレースを設定するには、以下のいずれかの方法を使用してください:
異なる設定方法間の設定の優先順位に関する詳細については、 「スタックトレースの設定優先順位」を参照してください。
オプション 1: カスタム設定ファイルによるスタックトレースの設定
INSTANA_CONFIG_PATH 環境変数を、 YAML 設定ファイルを指すように設定することで、スタックトレースを構成します。
カスタム設定ファイルを使用してスタックトレースを設定するには、環境変 INSTANA_CONFIG_PATH 数を、設定が記述された YAML ファイルの絶対パスに設定してください。
- カスタム設定ファイルはシンボリックリンクであってはなりません。 PHP ランタイムまたは PHP ワーカープロセスを実行するユーザーまたはグループに対して、そのディレクトリには読み取り(
r)権限が、またそのすべての親ディレクトリには実行(x)権限が付与されている必要があります。 - この機能を初めて有効にする場合、または YAML の設定が空の状態から開始する場合は、設定を更新した後、 PHP ランタイムを再起動してください。 その後の設定変更は、再起動をしなくても反映されます。
スタックトレースの設定に関する詳細については、 「スタックトレースの設定」 を参照してください。
12例 :スタックトレースの深さが のエラーが発生したスパンについてのみスタックトレースを収集するには、以下の手順を実行してください:
- 別の YAML ファイルを作成し、以下の設定をそのファイルにコピーしてください:
tracing: global: stack-trace: error stack-trace-length: 12 - INSTANA_CONFIG_PATH 環境変数を、コンテンツが配置されている YAML ファイルの絶対パスに、次のように設定してください:
INSTANA_CONFIG_PATH=<your YAML file>
オプション 2: 環境変数によるスタックトレースの設定
INSTANA_STACK_TRACE および INSTANA_STACK_TRACE_LENGTH 環境変数を使用して、スタックトレースのレベルと深さを設定します。
INSTANA_STACK_TRACE_LENGTHまた、環境変数 INSTANA_STACK_TRACE および を使用して、スタックトレースのレベルや長さを設定することもできます。
| 環境変数 | 説明 | サポートされる値 |
|---|---|---|
| INSTANA_STACK_TRACE | スタックトレースのレベル | all (デフォルト): すべてのスパンについてスタックトレースを収集する
|
| INSTANA_STACK_TRACE_LENGTH | スタックトレースの深さ | 1 – 25 |
オプション 3: Instana エージェントの設定によるスタックトレースの設定
エージェントの ` configuration.yaml ` ファイル内の ` com.instana.tracing.global ` セクションを更新して、スタックトレースを設定します。
Instana エージェントの設定でスタックトレースを設定するには、エージェントの configuration.yaml `agent.conf` ファイル内のスタックトレース設定を含むセクション com.instana.tracing.global を作成または更新してください。
この方法でスタックトレース機能を設定する場合、一部の PHP ランタイムでは追加の手順が必要となります。 詳細については、 「 YAML の設定に関する追加手順」 を参照してください。
スタックトレースの設定に関する詳細については、 「スタックトレースの設定」 を参照してください。
4例 :スタックトレースの深さが のすべてのスパンについてスタックトレースを収集するには、エージェント configuration.yaml を以下のスニペットで更新してください:
com.instana.tracing:
global:
stack-trace: all
stack-trace-length: 4
スタックトレースの設定
YAML という構文を使用して、スタックトレースのレベルと深さの設定を行います。
スタックトレースの設定を行うには、以下の YAML 構文を使用してください:
# Use 'tracing' section if using custom configuration file
# Use 'com.instana.tracing' section if using agent configuration.yaml file
tracing:
global:
stack-trace: <string>
stack-trace-length: <int>
| フィールド | 説明 | サポートされる値 |
|---|---|---|
stack-trace |
スタックトレースのレベル | all (デフォルト): すべてのスパンについてスタックトレースを収集する
|
stack-trace-length |
スタックトレースの深さ | 1 – 25 |
スタックトレースの設定の優先順位
スタックトレースの設定は、カスタム設定ファイルからエージェント設定へと、優先順位の高い順に適用されます。
スタックトレースの設定は、優先順位の高い順から低い順に、以下の順序で適用されます:
- INSTANA_CONFIG_PATH 環境変数を通じて渡されるカスタム設定ファイルからのスタックトレース設定。
- スタックトレースの設定は、環境変数 INSTANA_STACK_TRACE および INSTANA_STACK_TRACE_LENGTH を通じて行われます。
- スタックトレースの長さは、INI設定で
instana.backtrace_limit指定します。 - エージェント configuration.yaml のファイルからのスタックトレースの設定。
前のセクションで挙げたさまざまな設定方法において、スタックトレースモードおよびスタックトレースの長さに関する設定の優先順位は、それぞれ個別に評価され、適用されます。
YAML の設定に関する追加手順
globalPHP センサーは、エージェント configuration.yaml ファイルの変更を検知し、ファイル内の com.instana.tracing 、 disable、および filter セクションのコピーを、別のファイルとして <System Temp>/instana-php/instana_span_filter_config.yamlに保存します。 生成されたファイルの絶対パスがINI設定 instana.span_filter_config_file に割り当てられるため、 PHP Tracerは、 PHP ランタイムを再起動することなく、その configuration.yaml ファイルに対するその後の変更を検出して適用することができます。 PHP の実行環境は、設定を読み込むために、システムの一時フォルダへの読み取りアクセス権を持っている必要があります。
以下の各セクションでは、 PHP ランタイムがシステムの一時フォルダに十分なアクセス権を持つために、一部の環境で必要となる追加の手順について説明します。
Linux PHP PrivateTmp ディレクティブを使用してsystemdサービスとして実行されるランタイム
PrivateTmp ディレクティブを使用してsystemdサービスを設定し、 PHP Tracerが YAML の設定にアクセスできるようにします。
PHP のランタイムが、`directive` PrivateTmp で設定された systemd サービスである場合、 PHP のプロセスには、ホストのシステム一時ディレクトリとは分離された独自の一時ディレクトリが割り当てられます。 PHP センサーはプロセスの一時ディレクトリに書き込みができないため、このような PHP ランタイム環境では、 PHP Tracerが YAML の設定を読み取ることができません。
PrivateTmpPHP のsystemdサービスでこの設定を無効化することが要件に合わない場合は、代わりにカスタム設定ファイルを使用して、 PHP のsystemdサービスで設定を無効化することなく PrivateTmp 、 スパン無効化ルール、 スパンフィルタリングルール、 およびスタックトレースを設定することができます。
あるいは、 PHP の実行環境において、設定 PrivateTmp によって提供される一時ファイルシステムの分離機能が必要ない場合は、以下の手順に従って PHP のsystemdサービスでを無効 PrivateTmp にし、 スパン無効化ルール、 スパンフィルタリングルール、 およびスタックトレースの設定には引き続きエージェント configuration.yaml ファイルを使用することができます:
- 次のコマンドを実行して、 PHP の systemd サービスユニットファイルを編集します
sudo systemctl edit <systemd-service-unit-name> # systemd service names are usually named like apache2.service, php8.3-fpm.service, etc., - セクション
[Service]内の ディレクティブをPrivateTmpにfalse設定します:[Service] PrivateTmp=false - systemd 構成の再ロード
systemctl daemon-reload - 変更を反映させるには、systemd サービスを再起動してください。
Windows IISサーバー
IISのワーカープロセスが、 Windows の一時フォルダにアクセスできない場合があります。 一時フォルダへのアクセス権限が不十分な原因は、ワーカープロセスを実行するために使用されているアプリケーションプールの識別子に、一時フォルダに対する十分な読み取りまたは書き込み権限がないためです。 このアクセスに関する問題を解決するには、以下の手順を実行してください:
PowerShell のターミナルで次のコマンドを実行し、アプリケーションプールのIDを確認してください:
& $env:windir\system32\inetsrv\appcmd.exe list apppool <your AppPool> /text:processModel.identityTypeIDが異なる場合は
ApplicationPoolIdentity、次のコマンドを実行してIDを更新してください:& $env:windir\system32\inetsrv\appcmd.exe set AppPool <your AppPool> -processModel.identityType:ApplicationPoolIdentity変更を反映させるには、アプリケーションプールを再起動してください:
& $env:windir\system32\inetsrv\appcmd.exe recycle apppool <your AppPool>IISサーバーは、
ApplicationPoolIdentityそのIDで実行されているアプリケーションプールを検出し、そのアプリケーションプールの名前を持つ仮想ユーザーを作成します。PHP ランタイム(つまり、IISワーカープロセス)に
<SYSTEM_TEMP>ディレクトリへの読み取りアクセス権を付与するには、次のコマンドを実行しますicacls "<SYSTEM_TEMP>" /grant "IIS APPPOOL\<your AppPool>:(OI)(CI)R" /T /C
計測機能の無効化
PHP のINI設定で、特定のライブラリまたはライブラリのセットに対するインスツルメンテーションを無効にするには、設定 instana.disabled_instrumentation を使用します。 トレースを無効にしたいライブラリのビットマスク値を指定します。 ライブラリのビットマスク値を確認するには、 「Instrumented libraries and frameworks 」セクションにある該当の Instrumentation flag 列を参照してください。
複数のライブラリのインスツルメンテーションを無効にするには、それぞれの Instrumentation flag 値を追加してください。 たとえば、 MongoDB への呼び出し(計測フラグ: 32)および Redis データストアへの呼び出し(計測フラグ: 16)のトレースを無効にするには、INI設定ファイルに次の行を追加してください:
instana.disabled_instrumentation=48 ; 32 + 16 = 48
PHP Tracerでのスパン生成をより細かく制御するには、設定 instana.disabled_instrumentation の代わりに 「スパンの無効化」 機能をご利用ください。
自動再始動
PHP Tracerは、 PHP ランタイムに読み込まれる PHP 拡張機能であるため、 PHP のトレース機能を有効または無効にしたり、インストール済みの PHP Tracing拡張機能のバージョンを変更したりするには、変更を反映させるために PHP ランタイムを再起動する必要があります。
PHP センサーは、 Apache および PHP -FPMランタイムを自動的かつスムーズな方法で再起動することができます。 ただし、以下の PHP ランタイムのシナリオでは、手動での再起動が必要です:
- PHP CGI SAPI を使用したランタイム: PHP ランタイムを手動で再起動する必要があります。
- PHP プリフォークされたワーカプロセスを使用するランタイム: PHP のマスタープロセスを手動で再起動する必要があります。
前述のケースで必要となる手動での再起動を自動化できるほか、エージェントの `agent configuration.yaml .conf` ファイルの com.instana.plugin.php `notification` セクション tracing.notificationScript に通知スクリプトを指定することで、 PHP センサーによる ` PHP `ランタイムの再起動方法を変更することも可能です。
この設定では、実行可能なシェルスクリプト( Linux )または PowerShell スクリプト( Windows )への絶対パスを指定します。 PHP のランタイムを再起動する必要がある場合、 PHP センサーは、デフォルトの再起動コマンドを使用する代わりに、 tracing.notificationScript に定義されているスクリプトを実行します。
通知スクリプトの設計における考慮事項
通知スクリプトは、 PHP の実行ごとに1回実行されます。つまり、同じ PHP 実行ファイルを実行しているすべてのプロセスで、このスクリプトがトリガーされるとは限りません。 PHP のトレース拡張機能をメモリに読み込むには、スクリプトで、 PHP 実行ファイルから起動されるすべてのプロセスを再起動するように設定する必要があります。
このスクリプトが構成されて正常に実行されると、自動再始動のデフォルト・メカニズムがオーバーライドされます。 デフォルトの仕組みとは異なり、このスクリプトはどのSAPIでも実行されるため、 PHP のCGI環境における再起動の自動化に利用できます。 自動再始動を完全に無効にする場合は、空のスクリプトを構成します。
PHP センサーは、スクリプトの実行のために以下の環境変数を設定します:
INSTANA_EXT_VERSION_OLD = the version of the tracing extension currently in memory
INSTANA_EXT_VERSION_NEW = the version of the tracing extension after a restart
INSTANA_PID_HOST = the PID of the process on the host, e.g. your Apache, PHP-FPM or PHP-CGI
INSTANA_PID_CONTAINER = the PID the host process has in a container (if applicable)
INSTANA_CONTAINER = the ID/name of the container the process is running in (if applicable)
以下の例は、拡張機能の変更をファイルに記録し、 Apacheを再始動するスクリプトを示しています。
#!/bin/bash
echo "Found new tracing extension." >> php_update.log;
echo "INSTANA_EXT_VERSION_OLD=$INSTANA_EXT_VERSION_OLD" >> php_update.log;
echo "INSTANA_EXT_VERSION_NEW=$INSTANA_EXT_VERSION_NEW" >> php_update.log;
echo "INSTANA_PID_HOST=$INSTANA_PID_HOST" >> php_update.log;
echo "INSTANA_PID_CONTAINER=$INSTANA_PID_CONTAINER" >> php_update.log;
echo "INSTANA_CONTAINER=$INSTANA_CONTAINER" >> php_update.log;
echo "restarting apache" >> php_update.log;
apachectl -k graceful >> php_update.log;
Apache がコンテナー内で実行される場合は、サンプル・スクリプトの最後の行を以下の行に置き換えます。
docker exec $INSTANA_CONTAINER apachectl -k graceful;
PHP -FPM の場合、次の例に示すように、 SIGUSR2 を送信することで、正常に再起動させることができます
docker exec $INSTANA_CONTAINER kill -USR2 $INSTANA_PID_CONTAINER;
グレースフル・リスタートでは、マスタープロセスを再起動することなく、 PHP 拡張機能をメモリに読み込みます。 そのため、このロードは、プロセスがコンテナー内で PID 1 として実行される場合でも機能します。 再始動アプローチを使用できない、または使用しない場合は、実行中のコンテナー・インスタンスのスナップショットを作成し、それを停止して、新規インスタンスを簡単に開くこともできます。
#!/bin/bash
IMAGE_HASH=$(docker inspect --format='{{.Config.Image}}' $INSTANA_CONTAINER)
IMAGE_NAME=$(docker images | grep $IMAGE_HASH | awk '{print $1}')
IMAGE_TAG="instana-php-$INSTANA_EXT_VERSION_NEW"
docker commit $INSTANA_CONTAINER $IMAGE_NAME:$IMAGE_TAG &&
docker stop $INSTANA_CONTAINER &&
docker run -d --rm $IMAGE_NAME:$IMAGE_TAG
このアクションは、スクリプトに渡されたコンテナー ID を使用して、コンテナー・イメージの名前を検索します。 その後、現在実行中のコンテナを、新しい PHP 拡張子付きのバージョン番号でタグ付けされた新しいイメージにコミットします。 その後、元のコンテナーを停止し、新しくタグ付けされたイメージからコンテナーを開始します。 この操作により、 PHP センサーのインストールルーチンが再度実行されますが、拡張機能はすでにインストールされているため、通知スクリプトは再度実行されません。
これらの例では、コンテナエンジンとして Docker を使用していることを前提としています。 ただし、起動されたシェル・スクリプトは完全にユーザーの制御下にあるため、セットアップのために自動再始動を機能させるために必要なロジックを指定することができます。
PHP のトレース機能を無効にする
PHP のトレース機能を無効にするには、以下の手順を実行してください:
エージェント
configuration.yamlファイルの セクションでcom.instana.plugin.php、 をtracing.enabledに設定してくださいfalse。 agent ファイルconfiguration.yamlに セクションcom.instana.plugin.phpがない場合は、次のように追加する必要があります:com.instana.plugin.php: tracing: enabled: false注: このcom.instana.plugin.phpセクションをコメントアウトしても、 PHP のトレースは無効になりません。これはデフォルトで有効になっているためです。「 PHP 」センサーは、「 PHP Tracing」拡張機能のINI設定を、「 PHP 」のINI設定から自動的に削除します。 その後、 PHP ランタイムを正常に再起動し、メモリから PHP トレース拡張機能を削除しようとします。 PHP ランタイムの再起動が正常に完了すると、 PHP のトレース機能は完全に無効化されます。
PHP センサーが PHP ランタイムを自動的に再起動できない場合は、 PHP ランタイムを手動で再起動し、 PHP のトレース機能を完全に無効にしてください。 PHP センサーが PHP ランタイムを自動的に再起動できるかどうかは、SAPIのタイプによって異なります。 この動作を制御し、 PHP Tracerをメモリから削除するために必要な PHP のランタイム再起動を自動化することができます。 詳しくは、 自動再始動を参照してください。
注: 必ず 「自動再起動」 の項目をお読みいただき、メモリから PHP トレース拡張機能を削除するために、 PHP ランタイムを手動で再起動する必要があるかどうかを慎重に検討してください。PHP のINI設定ファイルで有効になっている拡張機能の一覧に PHP
instanaトレース拡張機能が含まれていないことを確認し、 PHP ランタイムでこの拡張機能が有効になっていないことを確認してください。 PHP ランタイムで使用されている PHP バイナリを、オプションを指定して実行-mすることで、有効になっている PHP 拡張機能のリストを取得できます。 次の例は、バイナリを使用して有効になっている PHPphp-fpmの拡張機能を一覧表示する方法を示しています:$> php-fpm -m [PHP Modules] curl json PDO sqlite3 Zend OPcache zlib [Zend Modules] Zend OPcache注:Apache (ランmod_phpタイム環境)で PHP トレース拡張機能が無効になっているかどうかを確認するには、Webサーバーのドキュメントルートに<?php phpinfo();以下の内容の PHP スクリプトを作成し、 Apache からそのスクリプトを配信するように設定してください。 その後、ブラウザでこのスクリプトの URL を開き、有効な PHP 拡張機能のリストにこのスクリプトが含まれていないinstanaことを確認してください。この手順の途中でエラーが発生した場合は、 PHP のトレース機能を手動で無効にし、「 PHP Tracing」拡張機能をアンインストールしてください。 詳細については、 「 PHP のトレースを手動で無効にする」 を参照してください。
Instana エージェントをアンインストールしても、すでに計測対象となっている PHP ランタイムから PHP トレース拡張機能が自動的に削除されることはありません。 Instana エージェントをアンインストールする前に、 PHP のトレース機能を無効にして、ホスト内のすべての PHP ランタイムから PHP トレース拡張機能をアンインストールしてください。 詳細については、 「 Instana エージェントのアンインストール」 を参照してください。
PHP トレース拡張機能のインストールを無効にする
新しく検出された PHP ランタイムへの PHP トレース拡張機能の自動インストールを無効にするには、エージェントの`agent configuration.yaml .conf`ファイル内の`Tracing` com.instana.plugin.php セクションで false 、 tracing.installExtension `Tracing`を`false`に設定します
com.instana.plugin.php:
tracing:
enabled: true
installExtension: false
トラブルシューティング
Instana のUIに PHP の痕跡が見られない
Plesk を使用する場合は、 plesk bin php_handler --rereadを実行する必要があります。
PHP アプリケーションの Instana UIにトレースが表示されない場合は、以下の手順を実行してください:
以下の前提条件を確認します。
- PHP センサーが有効になっています。 詳細については、 「 PHP のトレース機能を無効にする」 を参照してください。
- PHP のトレース拡張機能のバイナリが利用可能です。 詳細については、 「 PHP トレース拡張機能の無効化」 を参照してください。
- エージェントの設定ファイルで、 PHP のトレース拡張機能が有効になっています。 詳細については、 「 PHP トレース拡張ファイルの削除」 を参照してください。
PHP アプリケーションを実行しているサービス上で、次の
reloadコマンドを実行して、 PHP トレース拡張機能を再読み込みします:Apacheの場合:
systemctl reload apache2PHP -FPM 向け:
systemctl reload php<version>-fpm再ロード・コマンドの < version> を、システムにインストールされている実際のバージョンに置き換えます。
それでも Instana のUIに何の痕跡も見当たらず、お使いのOSがデフォルトでSELinuxを搭載しているか、セキュリティ上の理由で環境にSELinuxを追加している場合は、SELinuxがこの問題の原因である可能性があります。
PHP のTracer拡張機能は、 Unix TCP ソケットを介して PHP デーモンと通信し、 <socket path>TCP/IP のポート42699を介して Instana エージェントと通信します。 SELinuxが強制モードに設定されている場合、SELinuxで許可するように設定されていない限り、 PHP 拡張機能とデーモン間の通信は阻止されます。
この問題がSELinuxに起因するものかどうかを確認するには、 PHP/var/log/audit/audit.log デーモンに対して記録されているサイレント拒否がないか確認してください。 あるいは、以下の手順に従ってスモークテストを行うこともできます:
- SELinuxを一時的に無効にしてください。
- PHP デーモンを再起動します。
SELinuxが問題の原因であると特定された場合、以下のいずれかの方法により解決できます:
PHP のTracerが通信できるようにSELinuxを設定する:SELinuxを使用すれば、独自のセキュリティポリシーに従って、通信を許可するカスタムポリシーを設定できます。 SELinuxポリシーの作成および変更に関する詳細については、以下のリンクを参照してください:
SELinuxを許容モードに設定します。このモードでは、サービスは制限なく動作します。 サーバーを再起動することで、デフォルト設定に戻すことができます。 SELinuxを許容モードに設定するには、 「SELinuxの許容モード」 を参照してください。
SELinux を無効にする: Instana は、セキュリティソフトウェアを無効にするよう積極的に推奨しているわけではありません。 適切かつ安全な方法は、SELinuxポリシーを作成することです。 ただし、SELinuxを無効にする場合は、 「SELinuxの無効化」 を参照してください。
ロギングの有効化
デフォルトでは、ロギングはオフになっています。 有効にするには、以下の手順を参照してください。
- 環境変数を使用してログ記録を有効にします。
- ログレベルをデバッグに設定するには、をに
INSTANA_DEBUG設定TRUEするか、INSTANA_LOG_LEVEL=4
- ログレベルをデバッグに設定するには、をに
- INI ファイルを使用してログ記録を有効にします。
PHP
zzz-instana.iniのインストール先のスキャンディレクトリ内で、という名前のファイルを探してください。 例えば、php --ini | grep zzz-instana.iniまたはphp-fpm<version> -i | grep zzz-instana.iniを実行すると、その場所が表示されます。行
instana.log_level=4をzzz-instana.iniに追加します。選択した PHP ランタイムを実行する際は、出力に何らかのログが記録されていること、および拡張機能が有効になっていることを確認してください。 例えば、
php --ri instanaまたはphp-fpm<version> -i | grep instanaを実行して検証することができます。例:
[instana.INFO] Initializing, logging at level 4こちらの説明に従って、 PHP トレース拡張機能を再読み込みしてください。 この手順を省略すると、結果としてログが記録されなくなります。
/var/log/apache2/error.log/var/log/php<version>-fpm.logPHP -FPM の場合です。PHP のトレース拡張機能を手動でインストールする
「 PHP 」トレース拡張機能を手動でインストールするには、以下の手順に従ってください:
「 Instana 」の「 PHP 」トレース拡張機能を、以下の手順でダウンロードしてください:
以下のリポジトリからシェルスクリプトをダウンロードしてください:
https://artifact-public.instana.io/artifactory/shared/com/instana/php/instana-ext-download-script/php-instana-ext-download-script.shお使いの環境に適した拡張機能をダウンロードするには、シェルスクリプトを実行してください。 次のコマンドを実行すると、利用可能なオプションが表示されます:
./php-instana-ext-download-script.sh -a <aarch64/x86_64> -l <musl/glibc> -p <PHP version> -t <NTS/ZTS> -d <serverless/native> -s <OpenSSL version> -v <Instana extension version>PHP 版については、メジャーバージョン番号とマイナーバージョン番号を指定してください。 たとえば、 PHP 用の Instana 拡張機能( 8.4.12 )をダウンロードするには、フラグを指定してシェ
-p 8.4ルスクリプトを実行します。OpenSSL 版の場合は、 OpenSSL 1.1
-s ssl1に対応した拡張機能をダウンロードするにはオプションを使用するか、 OpenSSL に対応した拡張機能をダウンロードするには 3.x-s ssl3を使用してください。Instana 拡張機能の場合、デフォルト値は であり
release、利用可能な最新バージョンがダウンロードされます。 特定のバージョンのアーティファクトをダウンロードするには、`-vflag` を使用してください。 たとえば、スクリプトを次のように実行して-v 4.7.0、リリース版 4.7.0 の拡張機能をダウンロードします。スクリプトで使用可能なすべてのオプションを確認するには、次のコマンドを実行してください:
./php-instana-ext-download-script.sh
以下の手順で拡張機能をインストールしてください:
ダウンロードした
.soファイルを PHP のCLI拡張機能ディレクトリに移動してください。以下の例に示すようにINIファイルを作成し、
zzz-instana.iniPHP CLIの追加INIディレクトリに保存します。 「」の部分を、<hostIP>Instana エージェントホストのIPアドレスに置き換えてください。これにより、 PHP 環境からエージェントにアクセスできるようになります。; this file was automatically generated by Instana ; ; any changes made to this file are expected to be overwritten when ; a new version of the Instana PHP Tracer extension is installed [instana] extension=<php cli extension dir path where extension.so file is placed> instana.socket=<hostIP>:16816 instana.agent_endpoint=http://<hostIP>:42699 instana.use_agent_endpoint=1 instana.auto_profile_socket=tcp://<hostIP>:42699 instana.enable_auto_profile=0 instana.secrets_matcher=contains-ignore-case instana.secrets_list="key,pass,secret" instana.extra_http_headers= instana.pid_in_root_namespace=<pid of PHP process in hostnamespace> instana.enable_cli=1
PHP のトレースを手動で無効にする
「 PHP のトレースを無効にする 」の手順に従うと、 PHP のトレースが完全に無効化され、 PHP ランタイムから PHP Tracing拡張機能も削除されます。
この手順の実行中にエラーが発生し、 PHP のトレース機能を手動で無効にして「 PHP Tracing」拡張機能をアンインストールする場合は、以下の手順に従ってください
エージェント
configuration.yamlファイルで、 PHP のトレースが無効になっていることを確認してください。具体的には、次のように設定します:com.instana.plugin.php: tracing: enabled: falseこの設定により、 PHP センサーが PHP のトレース拡張機能を再度インストールするのを防ぎます。
PHP のINI設定ファイルで、 PHP トレース拡張機能を無効にしてください。 「 PHP トレース拡張機能の無効化」 を参照してください。
システムから「 PHP 」トレース拡張機能のファイルを削除してください。 「 PHP トレース拡張機能ファイルの削除」 を参照してください。
PHP Tracing 拡張機能の無効化
PHP センサーが拡張機能をインストールした際、 PHP のインストール環境でもその拡張機能が有効になりました。 この拡張機能を有効にすると、 PHPzzz-instana.ini センサーがファイルをフォルダに配置するか Additional Ini files 、または. php.ini内で直接有効にします。
どこで有効に設定されているかを確認するには、トレースを有効にした php バイナリーを実行します。 次の例は、 PHP -FPM バイナリを使用して設定を特定する方法を示しています:
$> php-fpm7.0 -i | egrep "^(Scan|Loaded)"
Loaded Configuration File => /etc/php/7.0/fpm/php.ini
Scan this dir for additional .ini files => /etc/php/7.0/fpm/conf.d
この例では、 zzz-instana.ini ファイルは /etc/php/7.0/fpm/conf.dにあります。 該当 Additional Ini files するフォルダがない場合、またはその場所にファイル zzz-instana.ini が存在しない場合は、代わりに を確認 php.ini してください。 この例では、ファイルは /etc/php/7.0/fpm/php.iniにあります。
Windows では、 PowerShell で次のコマンドを実行し、 PHP -CGI の php.ini ファイルまたは Additional Ini files フォルダの場所を確認します
PS C:\> php-cgi -i | Select-String -Pattern '(Scan|Loaded Configuration)' | ForEach-Object { ($_ -replace '<br\s*/?>', "`n") -replace '<[^>]+>', ''}
Loaded Configuration File C:\Php\php.ini
Scan this dir for additional .ini files (none)
<?php phpinfo(); 以下の内容を含む PHP ファイルを配置し、ブラウザで開くと、同様の情報を確認できます。PHP のトレース拡張機能を無効にするには、以下の手順を実行してください:
エディターで適切な
iniファイルを開き、以下のようにextension=/path/to/instana.so行のセミコロン (;) の接頭部を付けます。 セミコロンを追加すると、その行はコメントアウトされます。;extension=/path/to/instana.soあるいは、
extension=/path/to/instana.soという行を完全に削除します。 後で拡張機能を有効にする場合は、削除しないでください。zzz-instana.iniファイルがある場合は、以下のようにしてそのファイルを完全に削除することもできます。$> sudo rm /etc/php/7.0/fpm/conf.d/zzz-instana.iniWindows では、 PowerShell で(管理者として)次のコマンドを実行することで、ファイルを削除できます:
PS C:\> Remove-Item -Path C:\Php\conf\zzz-instana.ini重要:php.iniファイル全体を削除しないでください。PHP ランタイムを再起動して、 PHP トレース拡張機能をメモリから削除してください。 PHP のランタイムがプリフォークされたワーカーを使用している場合、今すぐ PHP のマスタープロセスを再起動する必要があります。
「 PHP 」トレース拡張機能のファイルを削除する
PHP 拡張機能が見つからない場合、起動エラーがログに記録されるため、拡張機能を削除する前に、必ず無効化しておく必要があります。 詳細については、 「 PHP トレース拡張機能の無効化」 を参照してください。
PHP センサーは、 Instana の PHP トレース拡張機能を、 php.ini.設定ファイルの extension_dir 設定で指定されたディレクトリに配置します。 この設定を確認するには、トレースを有効にした php バイナリーを実行します。 次の例は、 PHP -FPM バイナリを使用して設定を特定する方法を示しています:
$> php-fpm7.0 -i | egrep ^extension_dir
extension_dir => /usr/lib/php/20151012 => /usr/lib/php/ext
<?php phpinfo(); 以下の内容を含む PHP ファイルを配置し、ブラウザで開くと、同様の情報を確認できます。PHP センサーは最初の値のみを使用するため、この例では、拡張子は. で始ま /usr/lib/php/20151012ることがわかります。 拡張機能へのパスは、または php.ini ファイル zzz-instana.ini にも記載されています。
Windows では、 PowerShell で次のコマンドを実行して確認できます extension_dir:
PS C:\> php-cgi -i | Select-String -Pattern 'extension_dir' | ForEach-Object { ($_ -replace '<br\s*/?>', "`n") -replace '<[^>]+>', ' '}
extension_dir C:\php\ext C:\php\ext
拡張機能を削除するには、以下のコマンドを実行します。
$> sudo rm /usr/lib/php/20151012/instana.so
Windows では、 PowerShell を管理者として開き、次のコマンドを実行することでファイルを削除できます:
PS C:\> Remove-Item -Path C:\Php\ext\instana.dll
事前にフォークされたワーカーを使用しており、拡張機能を無効にした際に PHP のマスタープロセスを再起動していなかった場合は、変更を反映させるために再起動する必要があります。