6
5

More than 5 years have passed since last update.

New RelicのAPMでPythonアプリを監視する(Flask編)

Posted at

はじめに

New RelicのAPMでPythonアプリを監視してみます。Pythonはフレームワークが多種多様で、Webでの公開手法も幅が広いのですが、まずはなるべくシンプルな形でNew RelicとPythonアプリの連携方法をご紹介したいと思います。今回はFlaskで作った単純なアプリにNew Relicのコードを埋め込んで監視画面に表示させるまでの流れを確認します。

環境

CentOS 7
Python 2.7.5(default)
New Relicのアカウントがあることが前提です。LICENSE-KEYは適宜読み替えてください。

New Relic APMのセットアップ

Python Agentのインストール

公式の手順に沿ってインストールします。

私の環境の例。若干古いので最新版はこちら

# wget https://download.newrelic.com/python_agent/release/newrelic-2.8.0.7.tar.gz
# tar xvzf newrelic-2.8.0.7.tar.gz
# cd newrelic-2.8.0.7
# python setup.py install

ちょっと試すだけならこちらが楽です。あまり手間は変わらないかもしれませんね・・・。

pip install newrelic
or
easy_install newrelic

コンフィグ(newrelic.ini)生成

任意の場所で以下のコマンドを実行するとコンフィグができます。コンフィグファイルは移動しても問題ありません。

newrelic-admin generate-config LICENSE-KEY newrelic.ini

コンフィグの修正

コンフィグの中身を修正します。アプリ名を"New Relic Hello!"に変えてみました。これはNew Relicの画面上でのアプリ名になります。コメントを外してlogが出力できるようにしました。修正したポイントのみ以下に抜粋します。

app_name = New Relic Hello!
log_file = /tmp/newrelic-python-agent.log

Python Agentの動作確認

以下のコマンドでPython Agentが実行可能かどうかを確認します。

newrelic-admin validate-config newrelic.ini

数秒後、APMの画面に"Python Agent Test"という名前で表示されます。何回実行しても問題ありません。今後の過程でトラブルシュートの切り分けに使えます。

01.jpg

Flaskのセットアップ

Flaskのインストール(参照

# easy_install Flask

アプリ作成

New Relic Hello!と表示するだけのアプリ。

# cat flask_hello.py
import newrelic.agent
newrelic.agent.initialize('/root/newrelic-2.8.0.7/newrelic.ini')
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return "New Relic Hello!"

if __name__ == '__main__':
    app.run(host='0.0.0.0')
#

上の2行がNew Relic用の埋め込みコードです。newrelic.iniの場所を指定します。

import newrelic.agent
newrelic.agent.initialize('/root/newrelic-2.8.0.7/newrelic.ini')

動作確認

ターミナルを二つ開きます。

ターミナル1

以下を実行します。"0.0.0.0"はこのネットワークのこのホストを表す特殊なIPアドレスです。コード上でポート番号を指定しないと実行時に5000番であがります。

# python flask_hello.py
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

ターミナル2

以下を実行。127.0.0.1ではなく自サーバのアドレスを指定してもOK。

# curl http://127.0.0.1:5000
New Relic Hello!

watchコマンドで1秒おきのアクセスを見立てることができます。

watch -n 1 "curl http://127.0.0.1:5000"

開発環境であればアプリの実行をsupevisorでデーモン化してみるのもよいかもしれません。あるいはApacheやNginxと連携させるか。手間との相談といったところです。

New Relicの画面

"New Relic Hello!"であがってきました。

02.jpg

New Relic hello!だけを表示するアプリですが、関数名やWSGIの情報なんかも見えることがわかります。

03.jpg

以上

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5