企业微信接收 Crashlytics 消息

2,457 阅读4分钟

开局先上效果图

企业微信截图_0deb4956-d251-4694-a60f-651b16c0af96-w379

-w404

为什么要做?

1.开发人员对于崩溃的数据,开发质量不够关心.
2.开发人员对于数据查看还得自己主动打开网页去后台查看,嫌麻烦.
3.开发人员*****

为什么选择 Crashlytics 平台?而不是友盟,Bugly等国内平台

1.因为这是个谷歌旗下的一个服务,所以后续的更新与稳定相关不用担心.
2.友盟不支持 dsym 脚本自动化上传.同时友盟崩溃统计并非友盟主要核心业务.
3.Bugly属于KPI项目,已经很久没有维护更新了.(懂的都懂)
4.Crashlytics 服务默认支持 Slack 转发(主要原因)

搭建前期准备

  • 一台云服务器(本次使用镜像服务器版本是:Ubuntu Server 18.04.1 LTS 64位)
  • 一个已解析的域名(国内请备案,可使用云服务器公网IP,但最好还是使是域名,IP在国内容易被封)
  • 准备一个企业微信机器人的Webhook地址
  • 强烈建议先整体看一遍文章后再对着内容搭建.

1.开始搭建基础服务

云服务器搭建nginx环境

  • 更新软件源
    sudo apt update

  • 安装nginx
    sudo apt install nginx

  • 检查nginx服务是否启动(输入服务器的公网IP地址到浏览器即可,正常结果如下:)

2. Slack App创建

  • 创建工作空间:slack.com/create#emai…

  • 进入Slack 页面,创建频道(方便整个Crash信息整合到一个频道内查看,这里我命名 crashlytics)
    -w1440

  • 创建好频道后,我们在创建一个App
    api.slack.com/apps
    -w1434

  • 打开Webhooks
    -w1437

  • 添加webhook地址
    -w686

  • 选择我们开始创建的频道
    -w586

  • 创建成功后之前添加的位置会一个Webhook的URL,这里记录下来,后面会用到.
    -w685

  • 同时记录下 Bot User OAuth Access Token

3. Firebase 添加 Slack 服务

  • 安装Slack服务,在项目设置 --> 集成 --> slack 安装
    -w1368

  • 输入内容后验证并保存.
    -w886

  • 如果添加成功后,可以点击 发送测试消息
    -w650

  • 正常能收到的情况下,在频道内会有对应的test消息(如下图)
    -w1171

4. 打通 slack 服务与 企业微信 的通道

好了,文章到此就结束了.
2331586838750_.pic

(小声哔哔)上面都有这么详细的,下面当然不能就此打住.

  • download 到云服务器.
    git clone https://github.com/Formerly/SlackWechatBot.git

  • 该脚本内容针对官方文档的内容做了调整与修改,可在后面直接使用.里面涉及到的bot token 与signing secret 已失效.

  • cd 到 仓库下 SlackWechatBot
    apt install python3-pip
    pip3 install -r requirements.txt

  • 运行脚本内容
    python3 app.py

  • 关键字错误问题汇总:

    KeyError: 'SLACK_SIGNING_SECRET'


如上图获取到对应的值, 执行
export SLACK_SIGNING_SECRET='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

KeyError: 'SLACK_BOT_TOKEN'


如上图获取到对应的值, 执行:
export SLACK_BOT_TOKEN='xoxb-XXXXXXXXXXXX-xxxxxxxxxxxx-XXXXXXXXXXXXXXXXXXXXXXXX'

KeyError: 'WECHAT_BOT_WEBHOOK'

设置企业微信机器人Webhook地址,执行:
export WECHAT_BOT_WEBHOOK='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxx'

  • 正常执行 python3 app.py 结果如下图:
    -w565
    那么整个服务就成功一大半了.我们这里先 CTRL + C 结束掉内容.

  • 先配置我们的ng服务
    vim /etc/nginx/nginx.conf
    在 http {

    server {
     listen 80;
    server_name xxx.com;
    access_log logs/slack-report.access.log main;
    location /slack/event {
    proxy_pass http://127.0.0.1:3000;
    }
    }

    }
    内添加以上代码. server_name 为自己的域名
    然后 esc, wq 二连保存一下

  • 刷新下Ng服务
    nginx -s reload

  • 启用服务器80端口
    sudo ufw allow 80

  • 访问上面配置的域名内容服务,如果出现以下响应,则代表ng服务离成功很近了.
    -w1129

  • 接下来我们重新启动下之前的 app.py 服务
    -w564

  • 回到我们的 slack App 服务配置 ,订阅消息

  • 如果域名校验通过,则默认会是绿色的√(下图所示),如果报错,请检查域名是否报错.
    -w934

  • 添加些订阅事件(不然就收不到内容的噢)
    -w615
    -w637

5.测试一波

回到我们的集成服务里面,发送测试消息.
-w1362

好了,这会企业微信就能收到Test消息内容了
-w364

收尾

我们把我们的脚本放到后台执行,该内容执行同时会有对应的log输出,你可以在有一定崩溃率后,对app.py 脚本内容 进行更新与修改迭代.更符合你们需要的内容.(因对Python语言这一块应用还不熟.有大神愿意 pull request 提交代码帮助改进当然更佳.)
nohup python3 -u app.py > app.log 2>&1 &
查看运行是否成功(观察是否有app.py进程运行)
ps aux |grep app


附上大佬提供的一些常用服务器维护命令(毕竟我还只是个小开发)

-w563

查看当前运行的 app相关的进程
ps aux |grep app
结束指定进程
kill -9 进程ID
后台运行程序 与 日志查看
nohup python3 app.py &
tail -f nohup.out
查看端口打开
ss -anlt
切换到root权限(如当前云服务器操作没有权限的时候,请执行这个)
sudo -i


如遇到 pip3 install 未找到库相关错误.可将下面的代码执行

pip3 install slackeventsapi 
pip3 install slackclient 
pip3 install slack 
pip3 install flask