使用Instana来可视化和监控Python(Django)应用程序(1)【配置指南】
首先
接下来我们将以应用程序视角,使用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. 应用程序的运行图像
4. Python和Django的监控配置
- Webサーバ作業
-
- 远程登录到服务器
-
- 首先,登录到远程服务器。
-
- 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等,我打算在另一个帖子中进行。)
-
- 启用Instana Agent的调试模式
-
- 为了更早地识别问题进行测试,我们将启用调试模式。方法是声明一个环境变量。
-
- $ 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 并确认页面。
在进行浏览器访问时,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对您有所帮助。
-
- Python(Django)应用的环境配置
在IBM Cloud VPC的虚拟实例上创建Python(Django)应用
基础架构的可视化、监控设置和确认
使用IBM Cloud的VPC虚拟实例(Ubuntu)通过Instana进行可视化
(本帖)Python(Django)应用的可视化、监控设置
使用Instana对Python(Django)应用进行可视化和监控(1)【设置版】
Python(Django)应用的可视化、监控设置
使用Instana对Python(Django)应用进行可视化和监控(2)【确认版】