• English日本語한국어
  • ログイン今すぐ開始

この機械翻訳は参考用に提供されます。

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

問題を作成する

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 アプリケーションを使用している場合にも機能します。

rhc env set NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY -a YOUR_APP_NAME

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

rhc env set NEW_RELIC_LOG=stderr -a YOUR_APP_NAME

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

rhc env list -a YOUR_APP_NAME

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

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

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

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コマンドを使用します:

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

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

rhc env list -a yourappname

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

NEW_RELIC_APP_NAME=Web Site (Production)

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

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

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

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

rhc tail -a YOUR_APP_NAME

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

$OPENSHIFT_PYTHON_LOG_DIR/python.log

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

rhc env set NEW_RELIC_LOG_LEVEL=debug -a YOUR_APP_NAME

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

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

rhc env unset NEW_RELIC_LOG_LEVEL -a YOUR_APP_NAME

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

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

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

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

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

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

  1. エージェント構成ファイルnewrelic.iniを、OpenShift にプッシュするプロジェクト リポジトリのルート ディレクトリに追加します。これには、設定する必要がある特定の構成設定とともに[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 Inc.

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