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

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

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

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

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

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

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

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

古いコマンド形式

新しいコマンド形式

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

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

重要

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

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

この例では、/some/path/newrelic.iniは、Pythonエージェントのインストレーション中に作成された設定ファイルのコピーの場所を表しています。設定ファイルは、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)

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

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

その他のヘルプ

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

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