Python コレクターの設定
Instana Python コレクターのインストールが完了すれば、監視のために手動で設定を行う必要はありません。 Python のプロセスに関連する主要なメトリクスと分散トレースの収集が自動的に開始されます。 ただし、個々のコンポーネントは、ご自身の具体的な要件に合わせて設定することができます。
一般構成
Instana Python パッケージは、Python モニターのための完全ノータッチ自動ソリューションとして使用されることを目的としていますが、必要に応じて完全に構成可能です。 このパッケージの設定には、以下のオプションが利用可能です。
AutoProfile を有効にする
ホストとエージェント間の通信の確立
Instana ( Python )パッケージは、IP 127.0.0.1 経由で Instana エージェントと通信を試み、コンテナ化された環境では、フォールバックとしてホストのデフォルトゲートウェイを経由して通信を試みます。 これらの場所のいずれにもエージェントが存在しない場合は、環境変数を使用して、 Instana のホストエージェントを検索する場所を設定できます。
環境変数は、実行中のプロセスの環境内で設定する必要があります。
export INSTANA_AGENT_HOST = '127.0.0.1'
export INSTANA_AGENT_PORT = '42699'
関連資料:
サービス名の設定
デフォルトでは、 Instana はサービスの名前を適切に付けるよう最善を尽くします。 何らかの理由でサービスの命名方法をカスタマイズしたい場合は、環境変数を設定することで可能です:
export INSTANA_SERVICE_NAME=myservice
「 言語センサーに関する一般的な参考情報:環境変数 」も参照してください
プロセス名の設定
INSTANA_PROCESS_NAME を使用して、Python プロセスを表すインフラストラクチャー・エンティティーのカスタム・ラベルを設定します。
パッケージ構成
Instana パッケージには、各種コンポーネントの構成を管理するランタイム構成モジュールが含まれています。
from instana.configurator import config
# To enable tracing context propagation across Asyncio ensure_future and create_task calls
# Default is false
config['asyncio_task_context_propagation']['enabled'] = True
デバッグと詳細表示の強化
この設定 INSTANA_DEBUG をnil以外の値にすると、開発やトラブルシューティングに一般的に役立つログ出力がより多く表示されるようになります。
export INSTANA_DEBUG="true"
「 言語センサーに関する一般的な参考情報:環境変数 」も参照してください
自動インスツルメンテーションの無効化
この Instana パッケージには、パッケージのロード時に初期化される自動インスツルメンテーションが含まれています。 このインスツルメンテーションにより、Instana ダッシュボードに分散トレース情報が提供されます。 自動インスツルメンテーションの完全な一覧については、 「対応バージョン 」のドキュメントを参照してください。
環境変数 を設定することで、自動インスツルメンテーション INSTANA_DISABLE_AUTO_INSTR (トレース)を無効にできます。これにより、tracerに組み込まれているインスツルメンテーションの読み込みが抑制されます。
export INSTANA_DISABLE_AUTO_INSTR="true"
エントリ・スパンなしでルート・エグジット・スパンを追跡する
デフォルトでは、 Instana Python Tracer は、アクティブなエントリスパンを持つ終了スパンのみをキャプチャします。 ただし、状況によっては、エントリスパンが存在しない状態で発生するエクシッツパンを追跡する必要がある。
Python Tracer でスタンドアロンの終了スパンを追跡するように設定するには、次のように環境 INSTANA_ALLOW_ROOT_EXIT_SPAN 変数を true または 1 に設定します
export INSTANA_ALLOW_ROOT_EXIT_SPAN=1
この機能は、次のような場面で役立ちます:
- サポートされていないメッセージングライブラリからの受信メッセージ。
- raw Transmission Control Protocol ( TCP ) や WebSocket など、サポートされていないプロトコルを通じて行われるリクエスト。
- 他のアプリケーションによって内部的に開始されるスケジュールされたジョブ。
- Python スクリプトの実行。
Kubernetes
このプラットフォームでは、特定の状況下において、 Python センサーが Instana ホストエージェントを自動的に検出して接続できない場合があります。 この問題を解決するには、ドキュメントの 「 Kubernetes のエージェントのネットワークアクセスを設定する」 のセクションを参照してください。
関連資料:
フレームワーク
Instana の Python コレクターを設定することで、以下のフレームワークからデータを監視および収集することができます:
Django (手動)
環境 AUTOWRAPT_BOOTSTRAP=instana 変数が設定されると、Djangoフレームワークが自動的に検出され、設定が行われる必要があります。 何らかの理由で Django の手動インスツルメントを行う場合、または手動インスツルメントが必要な場合には、代わりに settings.py の MIDDLEWARE リストに instana.instrumentation.django.middleware.InstanaMiddleware を追加できます。
import os
import instana
# ... <snip> ...
MIDDLEWARE = [
'instana.instrumentation.django.middleware.InstanaMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Pyramid
バージョン 1.22.0 から 2.5.3 にかけて、 Instana の Python パッケージには、Pyramidのマニュアルサポートが含まれています。 Pyramidベースのアプリケーションに可視性を追加するには、以下の手順を実行します:
- パッケージ
instanaが仮想環境またはコンテナに追加されrequirements.txt、インストールされていることを確認してください。 - Pyramidアプリケーションのファイル
__init__.pyの先頭にimport instana以下を追加してください。 - 設定に「 Instana 」計測用Tweenを追加してください。
import instana
with Configurator(settings=settings) as config:
# ...
config.include('instana.instrumentation.pyramid.tweens')
# ...
次の画像は、Pyramidの設定における Instana のインスツルメンテーションの例を示しています:

production.ini 構成で pyramid.tweens オプションを設定している場合は、instana.instrumentation.pyramid.tweens.InstanaTweenFactory がこのリストの最初のエントリーであることを確認してください。
pyramid.tweens =
instana.instrumentation.pyramid.tweens.InstanaTweenFactory
# other tweens
WSGIおよびASGIスタック
Instana ( Python )パッケージには、準拠したスタックに追加可能なWeb Server Gateway Interface(WSGI)およびAsynchronous Server Gateway Interface(ASGI)ミドルウェアが含まれています。 さまざまなスタックで自動化機能が利用可能ですが、 Instana による自動サポートがまだ提供されていないスタックについては、手動での追加も可能です。
「 Instana 」パッケージ( Python )をインストールした後、次のコマンドを実行してください:
import instana
from instana.middleware import InstanaWSGIMiddleware
# or
from instana.middleware import InstanaASGIMiddleware
# Wrap the wsgi app in Instana middleware (InstanaWSGIMiddleware)
wsgiapp = InstanaWSGIMiddleware(MyWSGIApplication())
Instana 現在、主要なフレームワークすべてを対象に自動テストの自動化に取り組んでいますが、それまでの間は、 Instana から、まだ自動サポートが提供されていないスタック向けの具体的なクイックスタートガイドをご確認ください。
Bottle WSGI
Bottle WSGI をインストルメントするには、以下のコマンドを使用します:
# Import Instana and the Instana WSGI middleware wrapper
import instana
from instana.middleware import InstanaWSGIMiddleware
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
return "Hello World!"
# Wrap the application with the Instana WSGI Middleware
app = InstanaWSGIMiddleware(app)
# Alternative method for reference
# app = InstanaWSGIMiddleware(bottle.default_app())
run(app, host='localhost', port=8080)
CherryPy WSGI
CherryPy のWSGIをインストルメントするには、以下のコマンドを使用してください:
import cherrypy
# Import Instana and the Instana WSGI middleware wrapper
import instana
from instana.middleware import InstanaWSGIMiddleware
# My CherryPy application
class Root(object):
@cherrypy.expose
def index(self):
return "hello world"
cherrypy.config.update({'engine.autoreload.on': False})
cherrypy.server.unsubscribe()
cherrypy.engine.start()
# Wrap the application with the Instana WSGI Middleware
wsgiapp = InstanaWSGIMiddleware(cherrypy.tree.mount(Root()))
この例では、uwsgiをウェブ・サーバーとして使い、次のように起動する:
uwsgi --socket 127.0.0.1:8080 --enable-threads --protocol=http --wsgi-file mycherry.py --callable wsgiapp -H ~/.local/share/virtualenvs/cherrypyapp-C1BUba0z
~/.local/share/virtualenvs/cherrypyapp-C1BUba0z は、pipenv からローカル virtualenv へのパスです。
Falcon WSGI
Falconフレームワークは、WSGIラッパーを通じて次のようにインストルメンテーションすることも可能です:
import falcon
# Import Instana and the Instana WSGI middleware wrapper
import instana
from instana.middleware import InstanaWSGIMiddleware
app = falcon.API()
# ...
# Wrap the application with the Instana WSGI Middleware
app = InstanaWSGIMiddleware(app)
では、例 uwsgi --http :9000 --enable-threads --module=myfalcon.app として を使用してスタックを起動します
Gevent ベースのアプリケーション
Instana 1.4gevent 以降をベースとしたアプリケーションに対応しています。
Instana Python パッケージを手動でインポートする場合は、gevent import
とモンキー・パッチが最初に実行されるようにしてください。
from gevent import monkey
monkey.patch_all()
import instana # <--- after the gevent monkey patching of stdlib
geventパッケージをベースにしたアプリケーションは、パッケージの有効化において(環境 AUTOWRAPT_BOOTSTRAP 変数を使用する)「 コード変更なしで有効化 」という方法を使用してはなりません。 前述の通り、この方法は、が gevent要求する一階のモンキーパッチングの要件を満たしていないため、機能しません。 その場合は、 「コードの変更による有効化」 という方法を使用してください。Instana Python Tracer 2.5.0 から、 AutoTrace のWebhookまたは「 コード変更なしで有効化する 」方法を使用すると、トレーサーは自動的に処理を実行します monkey.patch_all() 。 環境 INSTANA_GEVENT_MONKEY_OPTIONS 変数を設定することで、このモンキーパッチングを微調整できます。 このカンマ区切りのリストを使用すると、geventの gevent.monkey.main 関数 MONKEY OPTIONS と同様に、モンキーパッチングの対象とするモジュールや除外するモジュールを指定できます。
以下の例は、モンキーパッチング用のモジュールをカスタマイズするために利用可能なオプションを示しています:
export INSTANA_GEVENT_MONKEY_OPTIONS='--no-socket, --dns, --no-time, --select, --no-ssl'
export INSTANA_GEVENT_MONKEY_OPTIONS='no-socket, dns, no-time, select, no-ssl'
export INSTANA_GEVENT_MONKEY_OPTIONS='no-socket,dns,no-time,select,no-ssl'
もし と gevent および Instana の自動トレース Django 機能を併用する場合は、自動トレースが開始される前に 環境 DJANGO_SETTINGS_MODULE 変数を設定しておくようにしてください。 この DJANGO_SETTINGS_MODULE 環境変数に関する詳細については、 Django のドキュメントを参照してください。
このレベルのカスタマイズではまだ不十分な場合は、Activating with code changes というパッケージの有効化方法を使います。
ツール
Instana の Python コレクターを設定することで、さまざまなツールからのデータを監視・収集することができます。
Web サーバー
以下の設定を使用して、さまざまなWebサーバーを監視することができます:
uWSGI Webサーバー
uwsgi で が有効になっている enable-threads ことを確認してください。
スレッド数
この Python の計測機能は、プロセスのメトリクスを定期的に収集・報告するための軽量なバックグラウンドスレッドを作成します。 uWSGI では、デフォルトで GIL とスレッド処理が無効になっています。 uWSGI, で動作するアプリケーションに計測機能を追加する場合は、コマンド --enable-threads (または enable-threads = true INI 形式)でスレッドを有効にしてください。 詳細については、『 uWSGI 』のドキュメントを参照してください。
uWSGI 例:コマンドライン
uwsgi --socket 0.0.0.0:5000 --protocol=http -w wsgi -p 4 --enable-threads
uWSGI の例: ini ファイル
[uwsgi]
http = :5000
master = true
processes = 4
enable-threads = true # required
Gunicorn Webサーバー
Gunicorn で実行されるアプリケーションに計測機能を追加するには、引数として を --preload 指定してください。
プリロード
この Python の計測機能は、プロセスのメトリクスを定期的に収集・報告するための軽量なバックグラウンドスレッドを作成します。 デフォルトでは、ワーカーがGunicornでフォークされた後、アプリケーションコードが処理される。 Gunicorn で実行されるアプリケーションに計測機能を追加したい場合は、コマンド --preload を指定してプリロードを有効にしてください。 詳しくはGunicornのドキュメントをご覧ください。
Gunicorn の例:コマンドライン
Gunicornをプリロードして実行するには、この例に示されている次のコマンドを使用してください:
gunicorn -w 4 --preload "file:app"
Gunicorn の例:設定ファイル
設定ファイルを使ってGunicornを使うには、以下の変数を含むPythonファイルを使う。 Gunicornコマンドに'-c file_name.py追加する。
bind = "0.0.0.0:8000"
workers = 4
preload_app = true # required
エンド・ユーザー・モニタリング (EUM)
Instana サーバー側のトレースとブラウザのイベントを連携させる詳細なエンドユーザー監視機能を提供し、サーバーからブラウザに至るまでの全体像を把握できるようにします。
詳細については、エンドユーザー監視ページをご覧ください。
スパンをフィルタリングする
Python Tracer 3.11.0 以降では、スパンをその属性に基づいてフィルタリングすることで、トレースデータの量を削減できます。 この機能により、データ取り込みのコストを最適化できるほか、アプリケーションにとって最も関連性の高いトレースに監視を集中させることができます。
以下の基準に基づいて、スパンを除外または含めるようにフィルタリングルールを設定できます:
- Span属性 :特定の属性値(例:
kafka.topicまたはredis.command) - カテゴリ :テクノロジー種別(例:
databases、messaging、 など)protocols - 種類 :ライブラリまたはフレームワークの識別子(例:
httpまたはkafka) - 種類 :スパンタイプ(例:
entry、exit、または)intermediate
スパンフィルタリングの設定
環境変数を使用したフィルタリング
以下の環境変数を使用して、スパンフィルタリングルールを設定します:
INSTANA_CONFIG_PATHINSTANA_CONFIG_PATH=/path/to/your/configuration.yamlファイル
agent configuration.yamlのパスを指定してください。 ファイルは、「エージェント設定の使用」 に記載されているガイドラインに従う必要があります。INSTANA_TRACING_FILTER_<policy>_<rule-name>_ATTRIBUTESINSTANA_TRACING_FILTER_<policy>_<rule-name>_ATTRIBUTES="rule-key;rule-value;match-type"
次の表に、パラメータとその詳細、およびサポートされている値を示します:
| パラメーター | 説明 | 値 |
|---|---|---|
| <policy> | フィルタポリシーの種類 |
|
| <rule-name> | ルールの一意の識別子(他のルールとの競合を防ぐ) | |
| rule-key | フィルタリングの対象となる属性 |
|
| rule-value | 一致させる値のカンマ区切りリスト |
|
| match-type | マッチング戦略 |
|
# Exclude all HTTP spans
INSTANA_TRACING_FILTER_EXCLUDE_HTTP_ATTRIBUTES="type;http"
# Include only health check endpoints
INSTANA_TRACING_FILTER_INCLUDE_HEALTH_ATTRIBUTES="http.url;/health"
# Exclude all messaging spans
INSTANA_TRACING_FILTER_EXCLUDE_CATEGORY_ATTRIBUTES="category;messaging"
# Include only specific Kafka topic and operations
INSTANA_TRACING_FILTER_INCLUDE_KAFKA_ATTRIBUTES="kafka.topic;topic1;strict|kafka.access;consume,send"
# Exclude all exit spans
INSTANA_TRACING_FILTER_EXCLUDE_KIND_ATTRIBUTES="kind;exit"
エージェント設定を使用したフィルタリング
エージェント configuration.yaml ファイルの セクション tracing.filter でフィルタリングルールを定義します。 この設定では、 YAML 構造を使用して、スパン属性に基づいたフィルタルールを指定します:
tracing:
filter:
deactivate: <boolean>
<policy>: # exclude | include
- name: <string>
suppression: <boolean>
attributes:
- key: <string> # category | kind | type | span attribute (e.g., kafka.access, http.host)
values: <list of strings>
match_type: <string> # strict | startswith | endswith | contains
| フィールド | 必須 | 説明 | Default |
|---|---|---|---|
filter |
はい | すべてのフィルタリングルールのルートノード。 | |
deactivate |
いいえ | 設定済みのルールを削除せずにフィルタリングを無効にする機能の切り替え。 フィルタリングが無効になっている場合true。 |
false |
policy |
はい | フィルタポリシーのタイプ:exclude orinclude。 |
|
name |
はい | フィルタルールを説明する、人間が読みやすい名前。 | |
suppression |
いいえ | 子スパンを非表示にするかどうかを指定します。 この場合true、すべての子スパンは非表示になります。 「Whenfalse」の子スパンが許可される場合。 「除外」ポリシーにのみ適用されます |
true |
attributes |
はい | このルールが適用されるために、すべて一致しなければならないspan属性のリスト。 | |
key |
はい | Span属性のキー(例:category、typekind、、、または、やなどのkafka.access 特定のhttp.host属性)。 |
|
values |
はい | 一致させる値の一覧。 いずれかの値が一致すれば、その属性は一致したものとみなされます。 ワイルドカードとして使用'*' し、任意の値に一致させます(属性の有無に基づくフィルタリングに便利です)。 |
|
match_type |
いいえ | マッチング戦略:strict,startswith,endswith, またはcontains |
式の評価
フィルタールールは、記述順に評価されます。 あるスパンがルールに一致した場合、そのルールが適用され、それ以降のルールは評価されません。 フィルタリングが正しく機能するように、ルールを最も具体的なものから最も一般的なものの順に並べ替えてください。
構成の例
tracing:
filter:
exclude:
- name: Exclude all health check endpoints
attributes:
- key: http.url
values: [/health]
match_type: contains
- name: Exclude all messaging spans
attributes:
- key: category
values: [messaging]
match_type: strict
include:
- name: Include specific internal health endpoint
attributes:
- key: http.url
values: [/internal/health]
match_type: strict
前の例では、フィルタリング設定により以下のルールが適用されます:
- (最初の一致ルール
/internal/health)に一致するスパンを含みます - (ただし、
/internal/health/health)に一致するスパンは除外する - メッセージングカテゴリのすべてのスパンを除外します
- 以下のエンドポイントを除くすべての
/healthエンドポイントを除外します/internal/health
エンドポイントを無視する(非推奨)
Python Tracer 3.3.0 以降では、この機能を使用して不要なトレースや呼び出しを除外し、データ取り込みの総量を削減することができます。 たとえば、次のような特定のエンドポイントのトレース redis.getを除外することができます。
この機能は、以下の対応ライブラリで利用可能です:
| ライブラリー | Instana Python パッケージのバージョン |
|---|---|
| Redis | >= 3.3.0 |
| DynamoDB | >= 3.3.0 |
| Kafka | >= 3.5.0 |
ルールのフィルタリング
スパンをフィルタリングするためのルールは以下の通りです:
- あるスパンが無視されると、その後に続くすべてのスパンも同様に無視されます。
- ワイルドカードを使用して、すべてのエンドポイント
*またはメソッドを無視します。 - エンドポイントの値( Kafka のトピック名など)は、サービス間で一貫して同じままです。
- メソッド名は、プログラミング言語や技術によって異なる場合があります。 ご利用のサービスに適したメソッドとエンドポイントを確認するには、 Instana のUIをご参照ください。
以下の Instana のUIスクリーンショットは、設定に適切なメソッドとエンドポイントを特定するための視覚的な参考資料となります:

send method` を使用しています。エンドポイントの除外設定
以下のいずれかのオプションを使用して、エンドポイントの除外を有効にできます:
環境変数
サービスごとにエンドポイントをフィルタリングするには、以下の環境変数を使用して、無視するエンドポイントを設定できます:
INSTANA_IGNORE_ENDPOINTS_PATH: 外部の YAML ファイルを使用してフィルタリングを設定します。INSTANA_IGNORE_ENDPOINTS: メソッド名のみに基づいてスパンを除外する。
INSTANA_IGNORE_ENDPOINTS_PATH の使用
この環境変数を使用すると、次の例に示すように、外部の YAML ファイルを通じてフィルタリングを設定できます:
INSTANA_IGNORE_ENDPOINTS_PATH=/absolute/path/to/config.yaml
前の例では、ファイル config.yaml には絶対パスを指定し、指定された構成構造に従う必要があります。
方法によるフィルタリング
除外したいエンドポイントを指定するには、次の例 INSTANA_IGNORE_ENDPOINTS のように環境変数を設定してください:
tracing:
ignore-endpoints:
redis:
- get
- type
dynamodb:
- query
kafka:
- send
この設定では、以下のスパンがフィルタリングされます:
GETおよびTYPERedis 用のコマンドQUERYDynamoDB 用のコマンドSENDKafka およびすべての下流スパンに対するメソッド
メソッドとエンドポイントでフィルタリングする
除外したいエンドポイントを指定するには、次の例 INSTANA_IGNORE_ENDPOINTS のように環境変数を設定してください:
tracing:
ignore-endpoints:
kafka:
- methods: ["consume"]
endpoints: ["topic1", "topic2"]
- methods: ["consume", "send"]
endpoints: ["topic3"]
- methods: ["*"] # Applied to all methods
endpoints: ["topic4"]
- methods: ["consume"]
endpoints: ["*"] # Applied to all endpoints
この設定では、以下のスパンがフィルタリングされます:
CONSUMEKafkatopic2およびすべての下流スパンにおける およびtopic1に対するメソッドCONSUMEおよび、SENDKafkatopic3およびすべての下流のスパンにおける手法- Kafka およびすべての下流のスパンにおける
topic4のすべての (*) メソッド CONSUMEKafka*内のすべてのトピックおよびすべてのダウンストリーム・スパンに対するメソッド
同じ設定ファイル内で、両方のフィルタリングオプション(メソッドのみ、およびメソッドとエンドポイント)を組み合わせて使用することができます。
この構成は、 configuration.yaml エージェントの構造と互換性があります。
INSTANA_IGNORE_ENDPOINTS の使用
この環境変数を使用すると、次の例に示すように、メソッド名のみに基づいてスパンを除外することができます:
INSTANA_IGNORE_ENDPOINTS=redis:get,type
この設定では、以下のスパンがフィルタリングされます:
GETおよびTYPERedis 用のコマンド
Redis を完全にフィルタリングするには、以下の設定を使用できます:
INSTANA_IGNORE_ENDPOINTS=redis
複数のサービスをフィルタリングするには、以下の設定を使用できます:
INSTANA_IGNORE_ENDPOINTS=redis:get,type;dynamodb:query,scan;kafka:send
この設定では、以下のスパンがフィルタリングされます:
GETおよびTYPERedis 内のコマンドQUERYおよびSCANDynamoDB 内のコマンドSENDKafka 内のコマンド
コード内設定
コード内設定の手法を用いてエンドポイントを無視するには、以下の設定をファイル src/instana/configurator.py に渡してください:
config["tracing"]["ignore_endpoints"] = { "redis": ["get", "type"] }
この設定により、 Redis パッケージに含まれる および TYPE コマンド GET はトレースの対象から除外されます。
Redis パッケージ内のすべてのエンドポイントを無視するには、以下の設定をファイル src/instana/configurator.py に指定してください:
config["tracing"]["ignore_endpoints"] = { "redis": [] }
複数のサービスをフィルタリングするには、以下の設定を使用できます:
config["tracing"]["ignore_endpoints"] = {
"redis": ["get", "type"],
"dynamodb": ["query", "scan"],
"kafka": ["send"]
}
この設定では、以下のスパンがフィルタリングされます:
GETおよびTYPERedis 内のコマンドQUERYおよびSCANDynamoDB 内のコマンドSENDKafka およびすべての下流のスパンにおけるメソッド
次の例は、メソッドとエンドポイントによるフィルタリングを示しています:
config["tracing"]["ignore_endpoints"] = {
"kafka": [
{ methods: ["consume"], endpoints: ["topic1", "topic2"] },
{ methods: ["send"], endpoints: ["topic3"] }
]
}
この設定では、以下のスパンがフィルタリングされます:
CONSUMEKafkatopic2およびすべての下流スパンにおける およびtopic1に対するメソッドSENDKafkatopic3およびすべての下流スパンにおける
同じ設定内で、両方のフィルタリングオプション(メソッドのみ、およびメソッドとエンドポイント)を使用できます。
エージェントの構成
エージェントの設定を使用してエンドポイントを除外するには、エージェント configuration.yaml のファイルに設定 ignore-endpoints を追加してください。 詳細については、 「エンドポイントの無視」 のセクションを参照してください。
スパンの無効化の設定
Python Tracer 3.7.0 以降では、 Instana Python センサーのスパン無効化機能を使用して、スパンを無効にすることができます。 「span無効化」機能を使用すると、アプリケーション内でのspanの生成を完全に無効にすることができます。 この機能は、次のような場面で役立ちます:
- アプリケーションによって生成されるスパン数を減らしたいと考えています。
- 監視の対象外となる操作があります。
- アプリケーションのパフォーマンスに関しては、他の部分に注力したいと考えています。
サポートされるカテゴリー
カテゴリとは、 共通の技術やプロトコルによってグループ化されたライブラリの集合です。 現在、スパンの無効化は「 logging カテゴリ」に対してのみ可能です。
構成オプション
次のいずれかのオプションを使用して、span要素を無効にすることができます:
オプション 1: YAML の設定を使用する
以下の指定を使用して、環境 INSTANA_CONFIG_PATH 変数をローカルの YAML 設定ファイルに設定します:
tracing:
disable:
- <category_or_type>: <boolean>
この disable キーには、カテゴリまたは type 名前のリストを指定できます。 「 type 名前」とは、 Instana Python Tracer でサポートされているフレームワーク、ライブラリ名、または計測対象名の参照を指します。 個々の type 設定は、定義順序にかかわらず、親 category の設定よりも優先されます。 このアプローチにより、より広範なカテゴリが無効化されている場合でも、特定の計測機能を有効にしておくといったきめ細かな制御が可能になります。 次の設定例では、 Redis 用のものを除き、すべてのデータベーススパンを無効にします:
com.instana.tracing:
disable:
- databases: true
- redis: false
方法 2:環境変数の使用
次の例に示すように、環境変数 INSTANA_TRACING_DISABLE を使用してスパンを無効にすることができます:
# Disable Redis spans
INSTANA_TRACING_DISABLE=redis
# Disable all logging spans
INSTANA_TRACING_DISABLE=logging
# Disable multiple technologies
INSTANA_TRACING_DISABLE=redis,logging
オプション 3:エージェントの設定
エージェントの設定を使用して Redis のspanを無効にするには、エージェントの configuration.yaml ファイルに以下の disable 設定を追加します:
com.instana.tracing:
disable:
- redis: true
エージェントの設定を使用してカテゴリのスパン logging を無効にするには、エージェントの configuration.yaml ファイルに以下の disable 設定を追加します:
com.instana.tracing:
disable:
- logging: true
スタックトレースの設定
デフォルトでは、 Instana Python Tracer は、キャプチャされた EXIT すべてのスパンについて、直近の 30 フレームのスタックトレースをキャプチャします。 この値は、必要に応じて増減させることができます。
ENTRY については、通常、有用なアプリケーションレベルの情報が含まれていないため、スタックトレースは収集されません。Python Tracer 3.10.0 以降では、スタックトレースの取得に関して以下の 2 つの設定を行うことができます:
- スタックトレースの長さ :キャプチャするスタックトレースのフレーム数。
- 指定可能な値:1~40
- デフォルト値: 30
- スタックトレースのレベル :スタックトレースがどのように取得されるか。
- 対応する値:
all: すべての終了スパンについてスタックトレースを収集します(デフォルト)。error: エラーが発生したスパンについてのみスタックトレースを収集します。none: スタックトレースは収集されません。
- 対応する値:
スタックトレースの取得は、以下のいずれかのオプションを使用して設定できます:
エージェントおよび 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 設定ファイルに設定します:
tracing:
global:
stack-trace: <string>
stack-trace-length: <int>
エージェント設定の使用
エージェント設定によるスタックトレースの取得を設定するには、次の例に示すように、エージェント設定ファイルの セクション com.instana.tracing.global でパラメータを定義します
com.instana.tracing:
global:
stack-trace-length: 15
stack-trace: 'error'
技術固有の設定
Instana Python Tracer では、グローバル設定を上書きするテクノロジー固有の設定が可能です。 以下の指定を使用することで、設定を微調整し、スタックトレースの取得を制御できます:
com.instana.tracing:
global:
stack-trace: <string>
stack-trace-length: <int>
<technology>:
stack-trace: <string>
stack-trace-length: <int>
この設定では、` <technology> key` に対して以下の値がサポートされています:
kafkarabbitmqaioamqpaiohttpurllib3(およびurllib3の両requests方のスパンについて)httpxlogredismysqlpostgresmongopymongocassandracouchbasedynamodbsqlalchemyboto3s3rpc
次の例では、すべてのスパンについてスタックトレースを取得し、グローバル設定として25フレームに制限していますが、 Kafka の場合、エラーが発生したスパンのみについて完全なスタックトレースを取得します:
com.instana.tracing:
global:
stack-trace: all
stack-trace-length: 25
kafka:
stack-trace: error
Kafka のトレース相関ヘッダーの設定
トレース相関を使用すると、スパンは分散して作成されたスパン間の関係を維持します。 たとえば、トレース相関が有効になっている場合、プロデューサー・スパンとコンシューマー・スパンの両方でトレースIDは同一になります。 トレースの相関が無効になっている場合、プロデューサーとコンシューマーのスパンは異なるトレースIDを持つため、両者の間には相関関係が生まれません。
Kafka のトレース相関機能を完全に無効にするには、以下の設定オプションのいずれかを使用できます:
環境変数:環境変数を
INSTANA_KAFKA_TRACE_CORRELATIONに設定しますfalse。システムプロパティ:以下の設定を使用してください:
config["tracing"]["kafka"] = { "trace_correlation": False }エージェントの設定: Instana ホストエージェントのレベルで、 Kafka トレースの相関設定を行います。
詳細については、 「 Kafka ヘッダーの移行」 を参照してください。
特定のプロセスの監視
Instana コマンドラインに, uwsgi, または python という gunicorn名前が含まれるプロセスを自動的に監視します。 エージェントの設定ファイルに特定のプロセス名を指定することで、コマンドライン上では異なる名前で実行されている Python アプリケーションを監視することができます。 詳細については、 エージェント設定ファイルを使用したホストエージェントの設定方法をご覧ください。