这几天公司上了一套捕获系统异常的sentry系统,相当高逼格,之前老板说要搞个服务器监控,我以为是要从各个docker的协议里面捕获异常上报呢,不过使用sentry这个也不错,有自己的曲线页面,可以把服务异常信息发送到邮箱里面,唯一美中不足的是需要在代码里面嵌入sentry提供的api接口。
安装步骤:
1 docker拉取redis postsql 和sentry
docker pull redis
docker pull postgres
docker pull sentry
2 启动redis和sentry
docker run -d --name sentry-redis redis
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
docker run --rm sentry config generate-secret-key
3.(上一行得到secret-key,然后把key复制到下面四行的单引号中)
docker run -it --rm -e SENTRY_SECRET_KEY='
(这一步会提示输入邮箱和密码)
docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='
docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='
docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='
到此就安装完毕啦!!!
使用:
1 在浏览器地址输入 127.0.0.1:9000 回车出现下如下界面,代表完美安装
根据自己启动服务时候输入的帐号密码尝试登录。
2.添加项目,点击右上角,add new project 会弹出:
然后选择自己服务的语言,这里我选择go语言,它会弹出页面教你如何在代码里面嵌入sentry,自己写个demo测试 一下,然后就会发现绑定的邮箱收到异常信息了。很方便@!@!@!@!@!!@!@
以上是使用docker部署,下面给出docker-compose文件,需要本地装有compse:
version: '3'
services:
redis:
image: redis:latest
container_name: sentry-v1-redis
restart: always
postgres:
image: postgres:latest
container_name: sentry-v1-postgres
restart: always
environment:
- POSTGRES_USER=sentry
- POSTGRES_PASSWORD=sentry
- POSTGRES_DBNAME=sentry
- POSTGRES_DBUSER=sentry
- POSTGRES_DBPASS=sentry
volumes:
- postgresdb:/var/lib/postgresql/data
sentry:
image: sentry:latest
links:
- redis
- postgres
ports:
- 9000:9000
environment:
SENTRY_SECRET_KEY: 's(hb+zd5zgz@f)i!z&^o275g)i&)%_95-hfshpgch2tyj5u=q0'
SENTRY_POSTGRES_HOST: postgres
SENTRY_DB_USER: sentry
SENTRY_DB_PASSWORD: sentry
SENTRY_REDIS_HOST: redis
cron:
image: sentry:latest
links:
- redis
- postgres
command: "sentry run cron"
environment:
SENTRY_SECRET_KEY: 's(hb+zd5zgz@f)i!z&^o275g)i&)%_95-hfshpgch2tyj5u=q0'
SENTRY_POSTGRES_HOST: postgres
SENTRY_DB_USER: sentry
SENTRY_DB_PASSWORD: sentry
SENTRY_REDIS_HOST: redis
worker:
image: sentry:latest
links:
- redis
- postgres
command: "sentry run worker"
environment:
SENTRY_SECRET_KEY: 's(hb+zd5zgz@f)i!z&^o275g)i&)%_95-hfshpgch2tyj5u=q0'
SENTRY_POSTGRES_HOST: postgres
SENTRY_DB_USER: sentry
SENTRY_DB_PASSWORD: sentry
SENTRY_REDIS_HOST: redis
volumes:
postgresdb:
启动compse up -d 之后看下sentry的id,并且执行下面语句:
sudo docker exec -it 4ca743bc3243 sentry upgrade // 过程中需要输入邮箱和密码
此时sentry就可以正常的启动了。。
2018-07-08
今天又试了一遍那个compose,发现有问题,第一次一定要使用单独的docker在命令行启动,之后再去使用compose 来启动了,原因是第一次启动的时候需要设置邮箱 密码 token等,需要持久化到数据框库中