• /
  • ログイン
  • 無料アカウント

Python エージェント:高度なインテグレーション

Pythonエージェントパッケージをインストールして設定ファイルを作成した後、アプリケーションにPythonエージェントを統合する必要があります。このステップでは、エージェントがアプリケーションの重要な関数およびWebリクエストをキャプチャーして、これをレポートすることが可能となります。

インテグレーションには2つのメソッドがあります:

ヒント

Pythonなどのエージェント、およびその他のオブザーバビリティ プラットフォームを使用するには、New Relicファミリーに参加してください。サインアップして、わずか数秒で無料アカウントを作成できます。次に、毎月最大で100GBのデータを無料で取り込みます。期間無制限です。

Adminスクリプトのインテグレーションメソッド

コマンドライン経由でAdminスクリプトを使用する方法の簡単な解説に関しては、上級インストール手順のインテグレーションセクションを参照してください。以下に、詳細とコンテキストをさらに解説しています。

newrelic-adminは、ご利用のWSGIサーバーもしくはWebアプリケーションの起動に使用するコマンドに接頭辞をつけます。このスクリプトは、起動コマンドにラップして、共通のフレームワークによって使用される一定の関数クラスにリッスンすることで機能します。(デフォルトでインストゥルメントされていない関数およびメソッドをインストゥルメントするには、カスタムインストゥルメンテーションを使用します。)

以下に示すのは、このスクリプトを実行した例です:

古いコマンド形式

新しいコマンド形式

YOUR_ORIGINAL_COMMAND_OPTIONS

NEW_RELIC_CONFIG_FILE=newrelic.ini newrelic-admin run-program YOUR_ORIGINAL_COMMAND_OPTIONS

VARIABLE=VALUE YOUR_ORIGINAL_COMMAND_OPTIONS

NEW_RELIC_CONFIG_FILE=newrelic.ini VARIABLE=value newrelic-admin run-program YOUR_ORIGINAL_COMMAND_OPTIONS

以下の例では、Bourneシェルについて解説しています。異なるシェルに応じて、こうした解説を調整する必要があるかもしれません。

Adminスクリプトの使用をめぐるフレームワーク特有のドキュメンテーションに関しては、Webフレームワークおよびサーバーを参照してください。

以下に示すのは、Adminスクリプトを実行するにあたっての上級手順になります:

詳細に関しては、Adminスクリプトの詳細を参照してください。

アプリケーションコードにおける手動インテグレーション

推奨されるAdminスクリプトインテグレーションを使用できない場合は、Webアプリコード内でPythonエージェントを手動で初期化する必要があります。これには、アプリケーションにPythonエージェントパッケージをインポートして、呼び出しを行ってエージェントを初期化するプロセスが伴います。このコールは、アプリケーションのインポートメカニズムを修正することで、ライブラリがインポートされた場合にエージェントが認識した関数クラスをリッスンします。

手動のインテグレーションでは、アプリケーションのスクリプトファイルの冒頭もしくはWSGIのエントリーポイントを持つモジュールに、以下を追加します。

重要

標準的なPythonの機能性とは異なり、ここではインポートの順序が重要となります:最初に、パッケージをインポートする必要があります。

import newrelic.agent
newrelic.agent.initialize('/some/path/newrelic.ini')
... YOUR_OTHER_IMPORTS

この例において、/some/path/newrelic.iniPythonエージェントのインストレーション中に作成された設定ファイルのコピーのロケーションを表しています。設定ファイルは、ご利用のWebアプリケーションによって読み込み可能でなくてはいけません。

サポートされていないWebフレームワーク

サポートされていないWebフレームワークを使用しているか、WerkzeugもしくはPasteなどのWSGIコンポーネントを使用してWSGIアプリケーションを構築している場合、WSGI アプリケーションのエントリーポイントを手動でラップする必要があるかもしれません。これは、メインとなるインテグレーション方法(Adminスクリプトの使用またはPythonエージェントの手動初期化)に加えて行います。

WSGIアプリケーションのエントリーポイントが、ファイル自体で宣言された関数である場合、デコレータを使用します:

@newrelic.agent.wsgi_application()
def application(environ, start_response):
...

WSGIアプリケーションのエントリーポイントが、別のモジュールからインポートされた関数もしくはオブジェクトである場合、ラッパーオブジェクトでラップします:

import myapp
application = myapp.WSGIHandler()
application = newrelic.agent.WSGIApplicationWrapper(application)

サポートされるWebフレームワークが使用されている場合でも、デコレータまたはラッパーを明示的に使用できます。例えば、サポートされるWebフレームワーク周辺に追加のWSGIミドルウェアを設定する場合などです。こうして、すべてのWSGIミドルウェアの実行が、エージェントによる監視によって確実に網羅されることになります。

詳しくは、wsgi_application()WSGIApplicationWrapperラッパーのドキュメントを参照してください。

その他のヘルプ

さらに支援が必要な場合は、これらのサポートと学習リソースを確認してください:

問題を作成するこのページを編集する
Copyright © 2020 New Relic Inc.