• /
  • EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

PythonエージェントとOpenShift

OpenShift は、Pythonエージェントを含む様々な言語を使用したウェブアプリケーションをホスティングすることができるPaaS(Platform as a Service)ソリューションです。

アプリケーションの準備

Python エージェントをインストールする前に、利用可能な Python カートリッジのいずれかを使用して、Python Web アプリケーションが OpenShift の下にインストールされ、実行されていることを確認してください。詳細は、 OpenShift developer guides を参照してください。

APM Pythonエージェントのインストール

OpenShift は、サードパーティの Python パッケージをインストールする 2 つの異なる方法をサポートしています。パッケージは、Web アプリケーションのsetup.pyまたはpipで使用されるrequirements.txtファイルの依存関係としてリストできます。

setup.pyファイルを使用している場合は、 install_requiresに渡されるサードパーティ モジュールのリストにnewrelicを追加して、エージェントをインストールします。

from setuptools import setup
setup(
name="YourAppName",
version="1.0",
description="OpenShift App",
author="Your Name",
author_email="example@example.com",
url="https://www.python.org/community/sigs/current/distutils-sig",
install_requires=["Flask>=0.7.2", "MarkupSafe", "newrelic"],
)

pipを使用している場合は、次の行をrequirements.txtに追加します。

newrelic

プロジェクトを OpenShift にプッシュすると、Python エージェントパッケージがインストールされます。Python エージェントは、Python Package Index (PyPi) の OpenShift ミラーから最新バージョンを使用します。PyPiのOpenShiftミラーの更新は遅れることがあるので、PyPiの新しいリリースがOpenShiftで利用できるようになるまで、最大で1日待つ必要があるかもしれません。

Pythonエージェントの更新

OpenShift はパッケージをキャッシュし、新しいバージョンの Python エージェントが利用可能になっても検出しません。新しいバージョンへのアップグレードを強制するには、 setup.pyまたはrequirements.txtファイルのパッケージ名に対してバージョンを明示的にリストし、アプリケーションをプッシュします。次の構文を使用します。

newrelic==A.B.C.D

A.B.C.Dを、インストールする Python エージェントのバージョンに置き換えます。

Pythonエージェント環境変数の使用

Python エージェントが正しいアカウントにデータを報告できるようにするには、New Relic アカウントのをエージェントに伝える必要があります。 OpenShift の場合、ライセンスキーを提供する最も安全な方法は、 rhc env setコマンドを使用してアプリケーション設定で構成された環境変数を使用することです。 これにより、GIT リポジトリに機密情報が保存されることが回避され、複数の物理ホストでホストされている拡張 Web アプリケーションを使用している場合にも機能します。

bash
$
rhc env set NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY -a YOUR_APP_NAME

ライセンスキーを指定すると同時に、Pythonエージェントにログメッセージを記録する場所を伝えます。

bash
$
rhc env set NEW_RELIC_LOG=stderr -a YOUR_APP_NAME

環境変数が設定されていることを確認するには、次のように実行します。

bash
$
rhc env list -a YOUR_APP_NAME

設定されていても、次にウェブアプリケーションのギアを再起動したときにのみ有効になります。

エージェントインストールのテスト

Python エージェント パッケージが正しくインストールされ、エージェント環境変数が正しく設定されていることをテストするには、アプリケーションのメイン ギアにsshして次のコマンドを実行します。

bash
$
newrelic-admin validate-config - stdout

この管理スクリプトは接続を作成し、アカウントのアプリケーションPython Agent Testでテスト トランザクション データを報告します。

データがUIに表示されるまでには、最大で5分かかることがあります。時間が経っても表示されない場合は、テストを実行した際の出力をキャプチャし、そのデータを使って問題を解決してください。さらにサポートが必要な場合は、 support.newrelic.com でサポートを受けてください。

Pythonエージェントの初期化

OpenShiftのPythonカートリッジは、WSGIアプリケーションを実行する2つの方法を提供しています。

  • 最初の方法では、事前構成済みの Apache/mod_wsgi インストールを使用します。この場合、WSGI アプリケーションのエントリ ポイントをwsgi.pyファイルで定義する必要があります。
  • 2 番目の方法では、 app.pyというスタンドアロンの Python ウェブ アプリケーション スクリプトを提供する必要があります。これは通常、 app.pyファイル内で指定されている WSGI アプリケーション エントリ ポイントを使用して組み込みの Python WSGI サーバーを起動するか、 wsgi.pyファイルなどの別の Python コード ファイルからインポートされます。

どちらの方法でも、OpenShift は WSGI サーバーの起動を制御します。Python エージェントを WSGI アプリケーションに手動で統合する必要があります。WSGI サーバーの起動時にnewrelic-adminラッパー スクリプトを使用することはできません。

Apache/mod_wsgi アプローチを使用している場合は、 wsgi.pyファイルの先頭に次のコードを追加します。

import newrelic.agent
newrelic.agent.initialize()

これが、 wsgi.pyファイルに表示される他の Python モジュール インポートよりも前にあることを確認してください。ライセンス キー情報とロギング先が環境変数から読み取られるため、 initialize()呼び出しに引数を指定する必要はありません。

app.pyの組み込み Python WSGI サーバーを使用している場合は、 wsgi.pyファイルから WSGI アプリケーション エントリ ポイントをインポートする場合でも、これらの行をapp.pyファイルの一番上に配置してください。app.pywsgi.py } とともに使用する場合、これらの行をwsgi.pyに追加しないでください。

あらゆる Web フレームワークの組み込み開発サーバーの使用は避けてください。 また、OpenShift Python 2.6 カートリッジや古いバージョンの Django は使用しないでください。 これは、これらの開発サーバーが Python 標準ライブラリのwsgirefモジュールの WSGI サーバーに基づいていることが多いためです。 wsgirefモジュールの WSGI サーバーにバグがあり、WSGI に完全に準拠していなかったため、Python エージェントが誤ったデータを報告していました。 wsgirefモジュールに関するこの問題は、Python 2.7.4 でのみ修正されています。 Django 1.4 より前のバージョンの Django に組み込まれている WSGI サーバーにも同様の問題がありました。

WSGIアプリケーションのラップ

エージェントがWSGIアプリケーションエントリーポイントの自動ラッピングを提供するPythonウェブフレームワークを使用している場合は、これだけで済みます。自動ラッピング機能を持つPythonのWebフレームワークには、Django、Flask、Bottleなどがあります。

その他の場合は、WSGIアプリケーションのエントリーポイントを持つPythonコードファイルを修正して、WSGIアプリケーションオブジェクトをWSGIアプリケーションラッパーでラップする必要があります。これにより、アプリケーションが受け取るWebリクエストのタイミングが開始されます。

エントリーポイント

コード例

エンティポイントは関数

それをデコレーションで包む。

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

エンティポイントとは、異なるモジュールからインポートされた関数やオブジェクトのことです。

プレデコレーションスタイルで包む

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

アプリケーション名の上書き

デフォルトでは、データはアプリ名Python Applicationで記録されます。 表示名を変更するには、 APMユーザーインタフェースを使用します。 ただし、エージェント側では、UI の表示名の変更に関係なく、これを一意で不変の値として保持することを強くお勧めします。 これは、1 つの New Relic アカウントで複数の異なるサイトを実行し、データを個別にレポートする場合に必要です。

アプリケーション名をオーバーライドするには、 rhc env setコマンドを使用します:

bash
$
rhc env set NEW_RELIC_APP_NAME='Web Site (Production)' -a yourappname

設定が更新されたことを確認するために、実行します。

bash
$
rhc env list -a yourappname

そして、探してください。

bash
NEW_RELIC_APP_NAME=Web Site (Production)

環境変数の変更は、次にWebアプリケーションのギアを再起動したときにのみ反映されます。

Pythonエージェントのデバッグ

デバッグを開始するには、Python エージェントからログ出力を収集します。NEW_RELIC_LOG環境変数がstderrに設定されている場合、Python エージェントからのログ メッセージは、標準の Python ウェブ アプリケーション ログ内にキャプチャされます。

OpenShiftでWebアプリケーションのログを尾行するには、次のように実行します。

bash
$
rhc tail -a YOUR_APP_NAME

完全なログを得るためには、それぞれのウェブアプリケーションからログファイルをコピーバックしてください。

$OPENSHIFT_PYTHON_LOG_DIR/python.log

デフォルトでは、Python エージェントはinfoレベルでログを記録します。エージェントが別のレベルのロギングを必要とする場合は、追加の環境変数を手動で追加する必要があります。たとえば、ロギング出力をdebugに設定するには、次を実行します:

bash
$
rhc env set NEW_RELIC_LOG_LEVEL=debug -a YOUR_APP_NAME

環境変数はすぐには反映されませんので、必ずWebアプリケーションのギアを再起動してください。

要求された場合にのみ、必要な時間だけdebugロギングを実行します。デバッグ ログは大量の出力を生成する可能性があり、ログ ファイルが肥大化します。この設定が不要になったらすぐに次のコマンドを実行して削除し、Web アプリケーションのギアを再起動します。

bash
$
rhc env unset NEW_RELIC_LOG_LEVEL -a YOUR_APP_NAME

ログファイルを使用して、問題のトラブルシューティングを行ってください。さらにサポートが必要な場合は、 support.newrelic.com でサポートを受けてください。

エージェント設定ファイルの更新

OpenShift では、アカウントのライセンスキーを指定したり、ロギングの場所を定義したりするには、環境変数を使用するのが望ましい方法です。つまり、エージェントを動作させるためにエージェント設定ファイルを使用する必要はありません。しかし、エージェント設定ファイルがないと、 他のエージェント設定をカスタマイズすることができません。.

アプリケーションに対してサーバーサイド構成を有効にする場合、エージェント設定ファイルは必要ありません。 これは、 APMユーザー インタフェース アプリケーションの Application settings から実行されます。 サーバーサイド構成を使用すると、エージェントのコア設定をオーバーライドできます。 UI 経由で設定を変更すると、各 Web アプリケーション プロセス内で実行されているエージェントに通知が送られ、変更された設定が取得されます。

ただし、エージェントの機能の中には、サーバーサイドの設定と互換性のないものもあります。このような場合には、Webアプリケーションと一緒にOpenShiftにプッシュアップされたエージェント設定ファイルを使用してください。

OpenShiftでエージェント構成ファイルを追加して有効にするには。

  1. OpenShift にプッシュするプロジェクト リポジトリのルート ディレクトリにエージェント設定ファイルnewrelic.iniを追加します。 これには、設定する必要のある特定の構成設定とともに、 [newrelic]セクションが含まれている必要があります。 例えば:

    [newrelic]
    transaction_tracer.function_trace = mydbm:connect

    ライセンスキーやアプリ名などのコアな設定にエージェントの設定ファイルを使用しないでください、環境変数の設定が上書きされてしまいます。また、特にプロジェクトのソースコードが公開されている場合は、ライセンスキーをGITリポジトリの一部として使用しないようにしてください。

    また、サーバーサイドコンフィグレーションが同時に有効になっている場合、サーバーサイドコンフィグレーションで設定可能な設定は常にローカルの設定よりも優先されますのでご注意ください。そのため、サーバーサイドコンフィグレーションを有効にしている場合は、サーバーサイドコンフィグレーションで設定できない設定にのみ使用してください。

  2. コードを追加したwsgi.pyまたはapp.pyファイルを変更して、Python エージェントを初期化します。すでに追加したコードを次のように変更します。

    import os
    import newrelic.agent
    repo_dir = os.environ['OPENSHIFT_REPO_DIR']
    config_file = os.path.join(repo_dir, 'newrelic.ini')
    newrelic.agent.initialize(config_file)
  3. 設定ファイルをリポジトリにコミットし、その変更をOpenShiftにプッシュします。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.