Sentry 是一个错误记录和聚合的平台。本指南将指导您在Docker中部署设置自己的内部Sentry。
依赖
- Docker version 1.10+
构建容器镜像
首先clone
或forking
getsentry/onpremise。这将成为您自己自定义Sentry的基础。 在这个仓库里面,我们有一个sentry.conf.py和config.yml可以自定义。 最重要的是,我们有一个用于安装插件的requirements.txt文件。 现在我们需要构建自定义的镜像。根据您的环境,我们有两种方法可以做到这一点。
- 如果你有一个私有容器镜像服务,你将需要推送到:
REPOSITORY=reg.example.com/sentry make build push
- 如果没有,你可以在本地构建:
make build
如果您计划在Docker中运行依赖服务,则我们支持链接容器。
运行相关服务
Redis
docker run \
--detach \
--name sentry-redis \
redis:3.2-alpine
复制代码
PostgreSQL
docker run \
--detach \
--name sentry-postgres \
--env POSTGRES_PASSWORD=secret \
--env POSTGRES_USER=sentry \
postgres:9.5
复制代码
Outbound Email
docker run \
--detach \
--name sentry-smtp \
tianon/exim4
复制代码
运行Sentry服务
构建的镜像充当Sentry应用程序的所有运行部件的入口点,并且必须为所有容器使用相同的图像
${REPOSITORY}
对应于在上一步中构建镜像时使用的名称。如果没有指定,默认值是sentry-onpremise。要测试镜像是否正常工作,您可以执行以下操作:
docker run \
--rm ${REPOSITORY} \
--help
复制代码
你应该看到Sentry的帮助输出。 此时,您需要生成一个secret-key
值。你可以这样做:
docker run \
--rm ${REPOSITORY} \
config generate-secret-key
复制代码
这个值可以放到你的config.yml中,或者作为一个环境变量SENTRY_SECRET_KEY
。如果放入config.yml,你必须重建你的镜像。
对于所有下面的Sentry命令调用,您必须具有所有必需的容器链接,装载的卷和相同的环境变量。
如果不同的组件运行不同的配置,Sentry可能会有意想不到的行为。 运行命令的基础如下所示:
docker run \
--detach \
--link sentry-redis:redis \
--link sentry-postgres:postgres \
--link sentry-smtp:smtp \
--env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
${REPOSITORY} \
<command>
复制代码
为简洁起见,以下文档内容不会提及容器链接或环境变量,但如果使用链接的容器,则所有实例都需要它们,并且
${REPOSITORY}
将被引用为sentry-onpremise。
初始化(升级)
docker run --rm -it sentry-onpremise upgrade
在初始化过程中,系统会提示您创建将作为超级用户的初始用户。 所有模式更改和数据库升级均通过升级命令处理,这是升级到未来版本的Sentry时要运行的第一件事。
启动Web服务
Web界面需要将端口9000暴露到容器中。这可以通过-publish 9000:9000完成:
docker run \
--detach \
--name sentry-web-01 \
--publish 9000:9000 \
${REPOSITORY} \
run web
复制代码
您现在应该可以通过访问http://localhost:9000/来测试Web服务。
启动后台工作人员
大量的sentry’s工作通过后台工作人员进行管理:
docker run \
--detach \
--name sentry-worker-01 \
${REPOSITORY} \
run worker
复制代码
有关配置工作人员的详细信息,请参阅异步工作人
启动Cron进程
Sentry还需要一个cron进程:
docker run \
--detach \
--name sentry-cron \
${REPOSITORY} \
run cron
复制代码
建议此时只运行其中一个,否则会看到不必要的额外任务被推入队列,但如果运行多个节拍进程,系统仍然会按照预期运行。这可以用来实现高可用性。
下一步是什么?
在这一点上,你应该有一个全功能的Sentry安装。您可能想要探索各种可用的插件。