简介

socorro为和google-breakpad配套使用的崩溃转储的服务端,功能强大,但也是我见到过的最复杂的项目,复杂到自己总不禁怀疑其复杂度是否真的有必要,同时也是个非常坑爹的开源项目,我是在修改了6、7处代码后才能正常使用其功能的,并且缺乏必要的文档,导致需要跟踪到代码深处才知道一些必要的数据格式细节。

总而言之,这是个非常坑的项目,如果有其他选择,不推荐选择它。

这篇文章在自己修改后的源码为基础,(同时我也添加了一些shell脚本,为方便使用) 另外的文章中介绍修改了哪些部分 (coming soon)

git仓库 https://github.com/mozilla/socorro.git

版本 DateDate: Tue Mar 5 17:46:10 2013 -0800

commit f89c441cb5f035df0035e4283d03f653954e6edf

部署步骤

下载资源

socorro,socorro-crashstats,tools下载 coming soon(等知道怎样解决压缩文件中文件权限的问题后上传)

sudo apt-get install curl lessc

安装postgre

参见另一篇 postgre部署 (coming soon)

安装数据库客户端

sudo apt-get install pgadmin3

导入数据库配置

tools/import_db.sh 会清空数据库,导入新的数据库配置(其中只包括通用配置,不包含产品信息)

添加/data/socorro链接

socorro源码中假定socorro的目录为 /data/socorro,很不明白为什么要这么做,因为个人认为完全可以从可执行文件的当前路径计算出根目录,或者提供配置文件,怎么也不至于硬编码目录到源码中。 tools/socorro_link.sh 做个软链接到实际的socorro。(需要根据实际路径进行修改)

添加product配置

执行SQL语句,假设你的产品名为SafeMobile,版本为3.4,平台为windows,发布日期为2013-03-05-000000

select add_new_product("SafeMobile"::TEXT, 3.4::major_version)
select add_new_release('SafeMobile', '3.4', 'Release', 20130305000000,'Windows', 0, 'release')
select update_product_versions()

启动服务器

tools/start_postgre.sh 启动数据库
tools/collector.sh     crash收集服务
tools/monitor.sh       监测有哪些crash文件被收集到了
tools/processor.sh     处理收集到的crash文件
tools/middleware.sh    为crashstates提供API服务
tools/crashstats.sh    用于显示崩溃信息的web服务器(利用middleware的API服务)

tools/crontabber.sh 像系统注册crontab任务,轮循地执行数据库任务,只需要注册一次,可以crontab -e 查看是否已经注册。 crontabber会在本地记录上一次运行某个任务是什么时候,以及多长时间间隔内需要进行一次任务,如果现在的时间离上次运行时间(记录在/socorro/crontabbers.json)离得很远,则crontab则可能会运行很长时间,一种方案是自己修改socorro/socorro/cron/crontabber.py中的时间配置,另一种方案是修改/socorro/crontabbers.json.

测试

执行submit.sh 提交crash进行测试 查看网页前端 http://localhost:8000/home/products/SafeMobile