0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Python(Django)アプリをInstanaで可視化・モニタリングする(2)【確認編】

Last updated at Posted at 2022-10-09

1. はじめに

前回の投稿「Python(Django)アプリをInstanaで可視化・モニタリングする(1)【設定編】」では、Webサーバーの「 ①PythonとDjangoのモニタリングの設定 」を行いました。 今回の投稿では、「②Instanaで可視化された収集データを確認」を行います。
構成イメージ

2つの仮想インスタンスのスペックは下記の通りです。

  • 仮想インスタンス1(外部アクセスからのアクセス可能)

    • 役割: Webサーバ
      • OS: Ubuntu 20.04
      • Webサーバ : Djangoのrunserver
      • Python : 3.8.5
      • Django : 4.0.7
  • 仮想インスタンス2(外部アクセスからのアクセス不可)

    • 役割: DBサーバ
      • OS: Ubuntu 20.04
      • PostgreSQL : 12

2. 動作するアプリケーションのイメージ

このアプリは、Djangoの「はじめての Django アプリ作成」で作成する「簡単な投票 (poll) アプリケーション」で今日の天気を投票してもらうサンプルデータを作成して、実行しています。 実際にブラウザで投票すると、その投票結果は、PostgreSQLのデータベースに保存される仕組みになってます。
image.png

3. Instanaのダッシュボードで可視化された収集データの確認 ( Python & Djangoのモニタリング )

インフラストラクチャー画面での確認

下記の画像はInstanaのダッシュボード画面です、「インフラストラクチャー」のメニューをクリックして、インフラストラクチャーの画面を表示すると、pollsというホスト名が、今回、runserver[テスト用簡易サーバ]起動したホストです。 下記画像の赤枠では、Pythonアプリケーション(2)で、mysiteというアプリケーションをモニターしていることがわかります。 次に詳細を見るために ダッシュボードを開くボタンを押します。 
Instana-django-image-001.png

下記画像は、ホストpollsの詳細画面です。ホストとPythonとDjangoのアプリケーションの関連性を確認します。
赤文字①のスタックをクリックして、赤文字②のインフラストラクチャーをクリックします。
インフラの視点では、青枠の中を見るとrunserver[テスト用簡易サーバ]のプロセスと 2つのmysiteというPythonアプリケーションが、ホストpollsでモニターしてることがわかります。
image.png

次にアプリケーション視点で確認します。下記画像の赤文字①アプリケーションをクリックします。アプリ視点では、青枠の中にmysiteというPythonの1つのサービスをモニターしていて、呼び出しが1,587件あること。そして、サービスのエンドポイントの一覧が表示されています。エンドポイントには実際に呼び出されているGET/POSTが計測されているので、間違いなくモニターしているのがわかります。 これまで、インフラストラクチャーの画面で確認していましたが、アプリケーション・ビューで確認するために、赤文字②アプリケーションをクリックします。
image.png

アプリケーションの画面での確認

この画面では、1秒間隔で実測した呼び出し数、エラーのある呼び出し数、待ち時間等、全てのサービスの状況をサマリーしています。次に、サービスの依存関係を確認するために、赤文字①依存関係をクリックします。
image.png

下記の画像の青枠の中で、Pythonのアプリケーションmysiteと PostgreSQLのサービスが線で繋がって依存関係があるのがわかります。
ちなみに、mysiteとPostgreSQLをつなぐ線上の点は、実際の通信を表しており、実際の画面では、点が右から左に移動してるのを確認することができます。さらに深掘りするために、赤文字①呼び出しの分析をクリックします。
image.png

下記の画像ではアプリケーションの呼び出しの分析画面が表示されました。赤文字①の赤枠では、1.5k回の呼び出しがあったのが確認できます。①の赤枠のmysiteをクリックすると、その下の青枠部分に、実際の呼び出しの一覧が表示されます。
mysiteサービスGET /polls/1 の呼び出しで、待ち時間が 10ミリ秒だったことがこの図からわかりますが、
さらに、この呼び出しを確認するために、赤文字②の赤枠のGET /polls/1をクリックします。
image.png

下記の画像ではGET /polls/1の呼び出しの詳細分析画面が表示されました。赤文字①のタイムラインでは、GET /polls/1が全体で10ミリ秒かかっている中で、 オレンジ色のSELECTが2回発行されていることを確認できます。 もし遅延等があった場合は、このタイムラインで、どのサービスが遅いのか視覚的にわかるようになってます。
image.png
赤文字②の呼び出しでは、実際のGET /polls/1の呼び出しで関連のある呼び出しが、今回の場合は、PostgreSQLのサービスにSELECTを発行しているのがわかります。 さらに赤文字②の赤枠内の、オレンジ色の箇所をクリックします。

オレンジ色の箇所をクリックすると、右側の赤文字③の赤枠で、 mysiteから、ホスト10.10.0.7のPostgreSQLに対して、実際に発行した、SQL文を確認する事ができました。

これで、Djangoの「簡単な投票 (poll) アプリケーション」を使って、Pythonアプリケーションの可視化ができること、そのアプリケーションの実際の呼び出しを詳細に確認できることがわかりました。

4. 最後に

今回の投稿では、IBM CloudのVirtual Private Cloud(VPC)の仮想インスタンス(Ubuntu)で動作するPython&Djangoのアプリケーションに Instana Pythonモジュールを組み込みことで、Instanaが、Pythonアプリケーションの動向を計測し、計測したデータを、InstanaのSaaSに送信し、Instanaのダッシュボードで視覚化・モニタリングできる事がわかりました。
今回は、正常時の動作確認でしたが、たとえば、DBサーバが遅くなったなど、問題が発生した場合は、この投稿の流れに沿って、Instanaのダッシュボードを使って原因分析する事ができます。

これまで、下記、1〜4の投稿で、IBM Cloudの Virtual Private Cloud(VPC)の仮想インスタンス作成、Python(Django)とPostgreSQLを使ったサンプルアプリの作成、インフラ、アプリの可視化・モニタリングの順番に構築設定を行いました。 ぜひ、1〜4まで参考になれば幸いです。

  1. Python(Django)アプリの環境構築

  2. インフラの可視化・モニタリング設定・確認

  3. Python(Django)アプリの可視化・モニタリング設定

  4.  (本投稿)Python(Django)アプリの可視化・モニタリング設定

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?