起因
正需要监控树莓派的运行状态,试过New Relic但是因为需要付费所以没能继续使用。碰巧在v2ex上碰到了OneAPM的产品,一些小项目的Django网站架在树莓派上,还有一些用Python写的RPi.GPIO的项目都可以一并监测了。另外,ARM服务器是个新兴的领域,面向个人和轻应用,数量大且门槛低,开发ARM服务器性能探针是很高瞻远瞩的。
Django项目配置
由于我将OneAPM的应用程序探针Application Insight安装在Raspberry Pi树莓派上,所以需要对树莓派的相关环境进行配置。关于树莓派请移步这里
首先安装pip
$ sudo apt-get install python-pip
然后安装Django
$ sudo pip install django
安装好Django即可运行以下命令启用服务器
$ python manage.py runserver
然后可以在本地回环中看到测试网页,本地回环的网址为
OneAPM探针配置
按照官方提示安装,这里仅做搬运
- 注册OneAPM账号并获取授权编号
- 下载OneAPM Python Agent安装程序
- 运行安装指令
unzip OneAPM_python_Agent_latest.zip
cd OneAPM_python_Agent_latest/
python setup.py install
注:zip包名称根据所下载的包来更改
- 生成配置文件 在应用程序根目录下执行配置文件生成指令
blueware-admin generate-config XXX blueware.ini
注:XXX为授权编号
- 重新启动应用
sudo BLUEWARE_CONFIG_FILE=blueware.ini blueware-admin run-program python manage.py runserver
OneAPM体验
按照以上步骤即可设置好树莓派的AI探针的环境。登录OneAPM的官网,即可看到性能监视器界面。

在这个界面中可以看到概览信息,将鼠标指针移动到时间点上即可看到在一定的时间范围内的应用程序的信息。我在Django写的Blog中添加了几篇文章,具体的性能分析如下

可以看到,django.contrib.admin.options:add_view这个Function占用了响应时间的近40%,是拖慢响应速度的瓶颈。在窗口的右边还可以看到各个Function所占响应时间随时间的变化图,有助于分析不同时间段的各个Function的响应水平。

在数据库性能监测中,各个应用所占时间相差不大,可认为不存在性能瓶颈。或者说性能瓶颈在于CPU/IO。

在服务器环境概览中可以看到,Application Insight探针运行在了树莓派上。
使用感受
- 即便在树莓派这样的低运算能力平台上,探针(Python)的存在也是近乎察觉不到的,这说明了探针开发的高效
- Web端做得很棒,一目了然。如果能够加上一些细化的分类就好了。比如:对于django的数据库读写来说--例如图3--是可以看出Django对于数据库哪一张表读取最多的,那么性能瓶颈更可以细化到,针对数据库的表的优化。具体来说:如果表的构建导致某一张表频繁读取,那么可以试着拆分这张表并行地运行在磁盘阵列上;亦可以改变所存储的数据类型,拆分之,将其符合磁盘簇的大小。
- 响应时间与吞吐量这两个图有时看起来是类似的,所以第二张图有些冗余
- 自定义事物还没完善
- 报警设置还可以提供短信、邮件等方式的提醒