使用Instana来可视化和监控Python(Django)应用程序(1)【配置指南】

首先

image.png

接下来我们将以应用程序视角,使用Python(Django)的“简单投票应用程序”来验证在Instana上可进行可视化和监控。

顺便提一下,关于这个应用程序的构建步骤可以在“在IBM云的VPC上运行Django应用程序”中找到解释。

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

3. 应用程序的运行图像

image.png

4. Python和Django的监控配置

    Webサーバ作業
    1. 远程登录到服务器

 

    1. 首先,登录到远程服务器。

 

    1. ssh -i [私钥文件名] root@[Web服务器的IP地址]

切换到操作用户
切换到操作用户。
su – [用户名]

确认应用程序目录
由于Django项目文件位于/app文件夹中,因此需要确认目录。
$ ls -l /app
总计 24
-rw-rw-r– 1 dai dai 1079 10月 2 02:50 LICENSE
-rw-rw-r– 1 dai dai 1359 10月 2 02:50 README.md
-rwxrwxr-x 1 dai dai 538 10月 2 02:50 manage.py
drwxrwxr-x 2 dai dai 4096 10月 2 02:50 mysite
drwxrwxr-x 5 dai dai 4096 10月 2 02:50 polls
drwxrwxr-x 3 dai dai 4096 10月 2 02:50 templates

进入应用程序目录
为了在/app文件夹中进行操作,需要进入/app文件夹。
$ cd /app

安装Instana Python模块
为了使用Instana跟踪Python应用程序,需要使用pip安装Instana Python模块。
$ sudo pip3 install instana

文档: 监控 Python-Instana Python包

设置settings.py(Django的设置文件)
为了在Django中使用Instana进行监控,需要在settings.py中设置导入Instana Python模块。

修改前(第13行)

import os

修改后(第13-14行)

import os
import instana

接下来,我们会进行操作确认,设置已完成。

5. 测试动作(启动Web服务器:监测Python和Django)

在环境搭建时,我使用Django的runserver(用于测试的简易服务器)来运行应用程序。在这个帖子中,我将使用runserver进行操作确认。 (至于Gunicorn和uWsgi等,我打算在另一个帖子中进行。)

    1. 启用Instana Agent的调试模式

 

    1. 为了更早地识别问题进行测试,我们将启用调试模式。方法是声明一个环境变量。

 

    1. $ export INSTANA_DEBUG=true

启动Django的runserver[用于测试的简易服务器]
使用runserver启动。
$ python3 manage.py runserver 0.0.0.0:8000

检查runserver[用于测试的简易服务器]输出的日志
当runserver[用于测试的简易服务器]开始启动时,输出的日志会包含Instana相关的日志和runserver的日志。
以下是输出的日志内容:

Instana相关的日志(对Python应用程序进行监视,需要在必要的模块中进行仪器化)

2022-10-04 14:25:38,721: 246994 INFO instana: Stan is on the scene. Starting Instana instrumentation version: 1.38.0
2022-10-04 14:25:38,721: 246994 DEBUG instana: Loading Host Collector
2022-10-04 14:25:38,722: 246994 DEBUG instana: Initializing host agent state machine
2022-10-04 14:25:38,726: 246994 DEBUG instana: Instrumenting asyncio
2022-10-04 14:25:38,732: 246994 DEBUG instana: Instrumenting gevent: gevent未检测到或加载。 未执行任何操作。
2022-10-04 14:25:38,734: 246994 DEBUG instana: Instrumenting logging
2022-10-04 14:25:38,745: 246994 DEBUG instana: Instrumenting psycopg2
2022-10-04 14:25:38,745: 246994 DEBUG instana: Instrumenting urllib3
2022-10-04 14:25:38,746: 246994 DEBUG instana: Instrumenting django
2022-10-04 14:25:38,816: 246994 DEBUG instana: uwsgi hooks: decorators not available: likely not running under uWSGI

runserver[用于测试的简易服务器]的内容日志

Django版本4.0.7,使用设置’mysite.settings’
在http://0.0.0.0:8000/上启动开发服务器/
使用CONTROL-C退出服务器。

Instana相关的日志(代理已准备就绪。可以确认在Instana中已开始监视。)

2022-10-04 14:25:40,117: 246998 DEBUG instana: 在localhost:42699上找到Instana主机代理
2022-10-04 14:25:40,117: 246998 DEBUG instana: 尝试向localhost:42699的代理进行通告
2022-10-04 14:25:40,122: 246998 DEBUG instana: 启动主机收集器
2022-10-04 14:25:40,122: 246998 DEBUG instana: BaseCollector.start:启动收集线程
2022-10-04 14:25:40,122: 246998 INFO instana: Instana主机代理可用。我们准备好了。宣布的PID:246998(真实PID:246998)
2022-10-04 14:25:40,122: 246998 DEBUG instana: 宣布PID:246998(真实PID:246998)。等待代理准备就绪…
2022-10-04 14:25:50,782: 246994 DEBUG instana: 代理已准备就绪。开始工作。

因为Web服务器已启动,所以在浏览器中使用Web服务器的浮动IP地址通过以下URL进行访问 http://(浮动IP地址):8000/polls 并确认页面。

image.png

在进行浏览器访问时,runserver[测试用简易服务器]输出的日志中除了常规访问日志外,还会输出DEBUG instana: Reporting 3 spans的信息,这是发送给Instana Agent的三个span(跨度)的日志。

[04/Oct/2022 14:45:16] "GET /polls/ HTTP/1.1" 200 549
[04/Oct/2022 14:45:16] "GET /static/polls/style.css HTTP/1.1" 404 179
2022-10-04 14:45:17,123: 246998 DEBUG instana: Reporting 3 spans
[04/Oct/2022 14:45:21] "GET /polls/1/ HTTP/1.1" 200 945
2022-10-04 14:45:22,123: 246998 DEBUG instana: Reporting 3 spans
[04/Oct/2022 14:45:27] "POST /polls/1/vote/ HTTP/1.1" 302 0
[04/Oct/2022 14:45:27] "GET /polls/1/results/ HTTP/1.1" 200 568
2022-10-04 14:45:27,123: 246998 DEBUG instana: Reporting 7 spans

通过将Instana Agent设置为调试模式,我们可以从runserver(用于测试的简易服务器)的日志中确认Instana正在监控Python和Django。

6. 最后

通过将Instana Python模块集成到在IBM Cloud的Virtual Private Cloud(VPC)的虚拟实例(Ubuntu)上运行的Python&Django应用程序中,我们确认了Instana可以测量Python应用程序的性能,并将测量数据发送到Instana代理。

在接下来的帖子《使用Instana对Python-Django应用进行可视化和监控(第2部分)[确认篇]》中,我们将确认收集到的数据可以在Instana的仪表板上进行可视化和监控。

这篇帖子是关于以下流程的记录:在IBM Cloud的私有虚拟云(VPC)中创建虚拟实例,使用Python(Django)和PostgreSQL创建示例应用程序,并按照基础设施和应用程序的可视化与监控的顺序进行构建设置。希望这些步骤1到4对您有所帮助。

    1. Python(Django)应用的环境配置

在IBM Cloud VPC的虚拟实例上创建Python(Django)应用

基础架构的可视化、监控设置和确认

使用IBM Cloud的VPC虚拟实例(Ubuntu)通过Instana进行可视化

(本帖)Python(Django)应用的可视化、监控设置

使用Instana对Python(Django)应用进行可视化和监控(1)【设置版】

Python(Django)应用的可视化、监控设置

使用Instana对Python(Django)应用进行可视化和监控(2)【确认版】

广告
将在 10 秒后关闭
bannerAds