目录
前提
做软件开发应该都知道错误日志收集和及时提醒,移动端有很多类似友盟sdk,项目开发中sentry也是个不二选择,官方试用30天。官方提供了自行构建的方法,本文就docker环境基于docker-compose实现。
sentry sdk支持是非常丰富的
准备
系统采用ubuntu或者centos都不影响,主要是要有docker环境,docker环节这里不做描述可以参考
https://docs.docker.com/install/ 一般安装docker-ce
本人docker环境命令 docker --version
Docker version 18.09.7, build 2d0083d
安装docker-compose
1 通过yum install docker-compose 如果提示没有资源
2 通过yum install -y epel-release 安装EPEL源 再重试1 命令
安装完成查看命令 docker-compose --version
docker-compose version 1.21.0, build 5920eb0
问题
docker-compose build 报错 cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg
1、安装
curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
2、把下载的文件授权
chmod +x /usr/local/bin/docker-compose
开始安装
1 查看步骤 以下只是基础按这么运行sentry就搭建好了,但是email和钉钉机器人提醒是没有的,重点往下看,执行步骤1. 2.后先别着急继续执行命令,先看!先看!先看! 大标题【配置】步骤
浏览器打开:https://github.com/getsentry/onpremise ,查看README.md步骤 如下
- docker volume create --name=sentry-data && docker volume create --name=sentry-postgres - Make our local database and sentry volumes Docker volumes have to be created manually, as they are declared as external to be more durable.
- cp -n .env.example .env - create env config file
- docker-compose build - Build and tag the Docker services
- docker-compose run --rm web config generate-secret-key - Generate a secret key. Add it to .env as SENTRY_SECRET_KEY.
- docker-compose run --rm web upgrade - Build the database. Use the interactive prompts to create a user account.
- docker-compose up -d - Lift all services (detached/background mode).
- Access your instance at localhost:9000!
- 停止命令docker-compose down
配置
1)克隆opremise.git 【没有git 通过命令: yum install git】
git clone https://github.com/getsentry/onpremise.git
clone 后cd opremise目录下,我们要修改的文件config.yml docker-compose.yml 和requirement.txt
邮件配置是当项目报错,通过sentry SDK发送错误信息给sentry平台,接到异常通过邮件发送至你的邮箱
2) vi config.yml 只关注以下信息 (vim基础命令 i 插入,ESC :wq保存退出, :q退出)
本人服务器使用的是阿里云ECS 25出站端口被禁无法使用,本人测试的时候配置正常 本地虚拟机是没有问题的,但是阿里云就超时,通过ssl解决邮箱登录验证问题 本人举例网易163邮箱,其他邮箱可自行参考官方配置,切记25端口的问题
mail.backend: 'maildjango_smtp_ssl.SSLEmailBackend' 这个module本身是不带的,不要着急后面会教大家简便的配置
mail.host 根据自己邮箱配置
mail.port 端口 还是一样注意25端口,网易ssl端口465
mail.use-tls:true 因为用ssl所以这里一定要是true
mail.from 必须跟你的邮件用户名保持一致,本人就因为疏忽导致配置调整重来了一遍
这里就是需要大家细心。
3)vi docker-compose.yml 只关注以下配置便可
保险起见之前email的配置再填一遍
注意:a. EMAIL_HOST这里不是smtp 必须填smtp.xx.com 即为你的邮箱mail.host
b. USE_TLS 这里待单引号‘’其他都不要带这个配置文件解析格式,也是一个坑
c. 下面有个配置端口的地方9000:9000 默认的话就不改了,需要的把前面改一下就可以比如19000:9000表示
访问宿主机19000端口映射sentry web docker内部9000端口
4)vi requirement.txt 做个Django项目的朋友应该知道这个东西,就是项目依赖的库版本管理
这里就参考我的配置
# Add plugins here
sentry-dingding~=0.0.3
# 钉钉通知插件
django-smtp-ssl~=1.0
# 发邮件支持SSL协议
redis-py-cluster==1.3.4
看字面就能理解,sentry-dingding钉钉就是后面要用到的webhooks 有异常信息直接通过钉钉机器人发送消息到你的钉钉群
django-smtp-ssl就是email ssl验证
最后这个我没有细细追究加上就是,前两个此时都是最新版本
5) 然后执行【开始安装 3.步骤】docker-compose build 构建以及安装刚才requirement中的依赖库
6) 然后执行【开始安装 4.步骤】生成密钥
docker-compose run --rm web config generate-secret-key
执行完后会在最后一行显示类似 下面这样的key就是密钥了,把它通过vi .env粘贴在.env的SENTRY_SECRET_KEY中
38v@*^_b&&00%4yk8uvthl^8h3ycg3)1ovuf&&q+=^5#vrsj0h
7) 执行【开始安装 5.步骤】构建数据
docker-compose run --rm web upgrade
注意:这里有坑!!执行的命令其实就是Django migrate 这个命令,初始化数据库,坑就是一次执行不一定能完成记得是到300+,实际是400+,所以如果执行完这条命令没有过400就再执行几遍,一定要超过400,本人多次尝试是472!!!而且到没有可执行操作为止;下图为我多次执行后效果
7)重点避坑:有三坑
在执行【开始安装6.步骤前】必须创建一个默认项目和创建超级管理员,数据库新建操作
a. 创建默认项目
进入web docker
docker exec -it onpremise_web_1 bash
创建默认项目
from sentry.models import Project
from sentry.receivers.core import create_default_projects
create_default_projects([Project])
别着急,别着急退出容器
b. 创建超级管理员
还是web docker中别退出,执行sentry createuser命令
按提示填写邮箱就是后面登录系统的邮箱,两遍密码,和确认是否为超级管理员
c. 创建数据库方法
进入postgres docker
docker exec -it onpremise_postgres_1 bash
登录数据库
psql -h 127.0.0.1 -d postgres -U postgres
执行创建命令
create or replace function sentry_increment_project_counter( project bigint, delta int) returns int as $$ declare new_val int; begin loop update sentry_projectcounter set value = value + delta where project_id = project returning value into new_val; if found then return new_val; end if; begin insert into sentry_projectcounter(project_id, value) values (project, delta) returning value into new_val; return new_val; exception when unique_violation then end; end loop; end $$ language plpgsql;
退出数据库&容器
\q #退出数据库
exit #回车退出容
坑填完了后面就简单多了
8) 执行【开始安装7.步骤】提升所有服务 docker-compose up -d
此时就可以http://xxxxx:9000 进入sentry界面了
设置时区
点击个人信息处的Account,也有可能是User settings,可以设置语言、时区和24小时制
邮件测试
登录界面
首次登录需要设置些内容,注意填写
登录》点击个人信息头像 》admin【管理】》Email【邮箱】发送测试
钉钉推送
如下图步骤找到钉钉插件并打开,然后切换刷新界面就能看到下面多了一个DingDing,点击它
设置钉钉token,具体token获取参考钉钉群机器人官方文档
效果如下:
项目集成Sentry SDK
以Django项目为例
1.安装raven
pip install raven --upgrade
2.在 INSTALLED_APPS
中添加 raven.contrib.django.raven_compat
INSTALLED_APPS =(
......
'raven.contrib.django.raven_compat'
,
)
3.在setting内添加sentry配置 具体查找参考下图
import os
import raven
RAVEN_CONFIG ={
'dsn':'http://公钥:私钥@ip或域名:9000/项目ID'
# DSN输入sentry项目记录下来的DSN
}
4.在项目中 写测试代码Django,即可测试
1/0
心动不如行动,赶紧动动手,日后项目错误收集采用你搭建的sentry算个亮点哦!
推荐博文
参考
参考依赖库:
https://github.com/bancek/django-smtp-ssl 【smtp】
https://github.com/anshengme/sentry-dingding【sentry-dingding】
参考错误:
https://github.com/getsentry/sentry/issues/9270
https://github.com/getsentry/sentry/issues/8862
参考博文:
https://blog.csdn.net/guohewei123/article/details/87533401
https://www.cnblogs.com/elsons/p/10986036.html