软件版本
docker
-1.12.3sentry
-8.14.1postgresql
-9.2.18redis
-3.2
启动一个新的容器用于部署sentry
docker run -it a7109a665e79 /bin/bash
sentry
部署
下面关于sentry的安装和配置都是在刚刚开启的容器中进行
基础软件安装
yum -y install gcc gcc-c++ autoconf make openssl-devel python-devel libjpeg-turbo-devel
yum -y install postgresql-devel
pip2.7 install sentry #可能出现错误,根据提示逐步安装缺少的库
sentry --version #查看版本
[root@ca3e0e35a0a7 ~]# sentry --version
sentry, version 8.14.1
sentry
配置
-
初始化sentry配置
[root@ca3e0e35a0a7 /]# sentry init /etc/sentry
[root@ca3e0e35a0a7 ~]# ll /etc/sentry/
total 8
-rw-r--r--. 1 root root 1971 Mar 15 05:16 config.yml
-rw-r--r--. 1 root root 3828 Mar 15 05:16 sentry.conf.py
在sentry.conf.py
文件中修改数据库的配置项和BROKER_URL
的配置项 数据库配置
DATABASES = {
'default': {
'ENGINE': 'sentry.db.postgres',
'NAME': 'sentry',
'USER': 'sentry',
'PASSWORD': 'pass',
'HOST': '169.24.1.111',
'PORT': '5432',
'AUTOCOMMIT': True,
'ATOMIC_REQUESTS': False,
}
}
代理(BROKER_URL
)配置
BROKER_URL = 'amqp://sentry:sentry@ip:5672/sentry' #这里使用`rabbitmq`作为消息中间件,也可以使用`redis`
OR
BROKER_URL = 'redis://ip:6379'
如果redis不是运行在本机的话需要同时修改/etc/sentry/config.yaml文件中的redis
的配置
-
初始化
sentry
数据库sentry --config /etc/sentry upgrade
记住supersuer
的用户和密码
- 设置开机启动和数据定期数据清理
这里使用
supervisor
来进行sentry
相关进程的管理,supervisor的安装可以参见网上的文档,supervisor的配置文档如下
[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true ;非常重要,因本次是在docker里运行,所以supervisor进程放在前台运行
...
;新增的3个sentry启动任务
[program:sentry_web]
command=sentry --config /etc/sentry run web ; the program (relative uses PATH, can take args)
user=sentry ; setuid to this UNIX account to run the program
[program:sentry_worker]
command=sentry --config /etc/sentry run worker ; the program (relative uses PATH, can take args)
user=sentry ; setuid to this UNIX account to run the program
[program:sentry_cron]
command=sentry --config /etc/sentry run cron ; the program (relative uses PATH, can take args)
user=sentry ; setuid to this UNIX account to run the program
- 测试
运行supervisord进程,查看sentry
的各个进程是否正常运行
/usr/bin/supervisord -c /etc/supervisor.conf & #在后台运行
netstat -tunlp|grep 9000 # 如果9000端口在监听表示启动正常
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN -
[root@ca3e0e35a0a7 /]#
开启应用
经过以上的工作已经完成一个能够运行的
sentry
的容器,但是因为容器没有将端口暴露在宿主机上,只能在容器内访问sentry的站点,下面的工作是将做好的容器提交为一个镜像后再创建可被外部访问的容器.
-
将容器提交为镜像
docker commit -m 'sentry image' -a 12860 6efcfd33c0c6 mvn.source.org:9990/sentry:8.14.1
6efcfd33c0c6:对应的容器ID
-
运行新的容器
docker run -it -p 9000:9000 -name sentry-8.14.1 58f0f918a119 /usr/bin/supervisord -c /etc/supervisor.conf
97c9fdd90602:对应sentry:8.14.1的镜像ID
-
查看容器运行状态
root@docker-center:~ # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c30e214812f 58f0f918a119 "/usr/bin/supervisord" 20 hours ago Up 20 hours 0.0.0.0:9000->9000/tcp sentry-8.14.1