【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒

目录

前提

准备

安装docker-compose

问题

开始安装

配置

设置时区

邮件测试

钉钉推送

项目集成Sentry SDK

推荐博文

参考



前提

做软件开发应该都知道错误日志收集和及时提醒,移动端有很多类似友盟sdk,项目开发中sentry也是个不二选择,官方试用30天。官方提供了自行构建的方法,本文就docker环境基于docker-compose实现。

sentry sdk支持是非常丰富的

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第1张图片

准备

系统采用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步骤 如下

  1. 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.
  2. cp -n .env.example .env - create env config file
  3. docker-compose build - Build and tag the Docker services
  4. docker-compose run --rm web config generate-secret-key - Generate a secret key. Add it to .env as SENTRY_SECRET_KEY.
  5. docker-compose run --rm web upgrade - Build the database. Use the interactive prompts to create a user account.
  6. docker-compose up -d - Lift all services (detached/background mode).
  7. Access your instance at localhost:9000!
  8. 停止命令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退出)

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第2张图片

本人服务器使用的是阿里云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 只关注以下配置便可

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第3张图片

保险起见之前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中的依赖库

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第4张图片

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!!!而且到没有可执行操作为止;下图为我多次执行后效果

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第5张图片

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小时制

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第6张图片

邮件测试

登录界面

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第7张图片

首次登录需要设置些内容,注意填写

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第8张图片

登录》点击个人信息头像 》admin【管理】》Email【邮箱】发送测试

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第9张图片

 

钉钉推送

如下图步骤找到钉钉插件并打开,然后切换刷新界面就能看到下面多了一个DingDing,点击它

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第10张图片

设置钉钉token,具体token获取参考钉钉群机器人官方文档

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第11张图片

效果如下:

 

项目集成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
}

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第12张图片

【Sentry图文避坑版】基于docker-compose实现的sentry+email+钉钉提醒_第13张图片

 

4.在项目中 写测试代码Django,即可测试

1/0

 

心动不如行动,赶紧动动手,日后项目错误收集采用你搭建的sentry算个亮点哦!

 

推荐博文

【Mac SSH】SSH连接工具finalShell推荐

Docker可视化web工具portainer

 

参考

参考依赖库:

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

https://www.cnblogs.com/cjsblog/p/10585213.html

https://mp.weixin.qq.com/s?__biz=MzIxOTQ5MzIxNA%3D%3D&mid=2247483695&idx=1&sn=6d0dfe5899f9c3c273ca74582b996515&chksm=97db271ea0acae0842844286affb8e5e4f84fd4866be45966228b734aa5401a592430dea5985

你可能感兴趣的:(环境搭建Env,Build)