DynatraceでPythonアプリケーションのパフォーマンスを監視する♪


Dynatrace で Pythonアプリケーションを監視するための、Oneエージェントエクステンション(下記)がリリースされたので紹介します。
https://github.com/dlopes7/autodynatrace

2020年5月末の時点で、これは、Dynatrace社員によって開発された(公式ではない)プライベートなエクステンションになりますが、簡単にPythonアプリケーションのパフォーマンスを可視化できますので、是非お試しください!

対応モジュール

celery
concurrent.futures
confluent_kafka
cx_Oracle
django
flask
grpc
pika (RabbitMQ)
pymongo
pysnmp
redis
ruxit (Dynatrace plugin framework)
sqlalchemy
urllib3
custom annotations

手順

1. 監視対象のPythonが動作するホスト上に、Oneエージェントをインストールします。Dynatraceのメニュー”Deploy Dynatrace”から、コマンド3つをコピーして叩くだけですね!(Linuxの場合)

2. 以下のコマンドで、エクステンションモジュールをインストールします

pip install autodynatrace

3. 監視対象のPythonのコードに以下を追加して、エクステンションモジュールを組み込みます

import autodynatrace

4. 監視対象のPythonを実行します

結果

以下、Flask から SQLAlchemy で SQLite をupdate するシンプルなアプリでの例になります。

1. Dynatraceメニューの”Hosts”から、監視対象のホストを表示します。Pythonプロセスが検出されています。これはエクステンションが使用されていない場合でも同じですね。このPythonプロセスをクリックします

2. ここからがエクステンション導入効果になります。Pythonプロセス上でFlaskがサービスとして検出されています!(嬉しい♪)Flaskをクリックし、サービスとしてのパフォーマンスを見てみます。

3. 中央のInfoGraphicに、前後の通信相手がきっちり捉えられています。サービスとしての応答時間、エラー率、スループットも監視されていますね

(Dynatraceの場合、AIがこれらメトリックの異常を自動で監視します)

FlaskがコールしているSQLiteをクリックしてみると...

Databaseとしてのパフォーマンスが監視されています!下図のように"Anlyze outlier"(外れ値分析)から、特別処理時間が遅かったSQLクエリを簡単に割り出すこともできます

Dynatraceの理念 = Do more with less! (より少ない手間でより多くを行う)

このエクステンションにも宿っているようですね♪

Dynatraceを試してみたい!という方へ!

https://www.dynatrace.com/ja/ から、フリートライアル(2週間)のお申し込みができます。数分後にはDynatraceのテナントをご利用頂けます