全网最新傻瓜式教你Centos8.2搭建Sentry最新版21.11.0并接入Flask,不会运维也能搭建

sentry是一个实时事件日志记录和聚合平台。它专门用于监视错误和提取执行适当的事后操作所需的所有信息, 而无需使用标准用户反馈循环的任何麻烦。

Sentry 是一个日志平台,分为客户端和服务端,客户端(目前客户端有Python, PHP,C#, Ruby等多种语言)就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web节目方便查看。Sentry由python编写,好多公司都在用,今天我来教你用docker搭建,跟我一步步敲,绝对没问题

Sentry 提供了两种安装方式:docker 和 Python 包。

我推荐搭建使用第一种方式,比较简便,否则你需要自行安装和启动 PostgreSQL、Redis、Kafka 等一系列服务和创建表等操作。

购买ECS

购买华为云弹性云服务(这一步是为了找一台服务器部署sentry;如果你或者公司要是有服务器,可以直接忽略此步)

作者作为一名打工人有点穷,对比了一下金山云 、阿里云、 华为云后发现华为云较便宜,所以我选择了华为云,其实其他云厂商都大同小异,这一步知识教大家如何购买ECS,很简单

华为云控制台网站:account.huaweicloud.com

sentry本地部署版地址:github.com/getsentry/o…

sentry官方要求最低4核8G,我们这是购买的是8核16G 的ECS

  1. 选择控制台-弹性云服务器ECS

  1. 左上角选择-购买弹性云服务器

  1. 选按需计费-乌兰察布区-8核16G(都是穷闹的,这一步土豪请随意)

  1. 公共镜像-Centos-Centos8.2-下一步

  1. 网络-自己选一个默认的就行(这是为了测试,生产环境中要按照生产环境规范来选择网络环境),
    弹性公网IP-选择按流量计费-5M(土豪请随意)

  1. 设置密码-确认订单就买就完成了, 这里注意,因为我们没有设置防火墙和安全组,我们还加了公网IP,肯定会让所有人能给扫到这台机器尝试暴力破解,存在很大风险,所以密码设置一定要有复杂度

  1. 控制台-弹性云服务器ECS

  1. 这时候我们会看到服务器正在创建,等1-2分钟创建好后,IP地址会显示一个弹性公网IP,我的ECS公网IP是121.37.71.117 , 到此ECS购买完成,你看花钱的速度快不快~

部署Sentry

登录和配置ECS

  1. 拿到上面的IP,登录云服务器

ssh [email protected]   第一次连接输入yes ,然后输入你设置的密码

  1. 当SSH远程命令或者远程工具登录云服务器时,经常会发现SSH连接后一会儿SSH客户端就被服务器T掉,就会失去连接,我们先来设置一下SSH服务(此操作仅为测试,生产环境中请根据生产规范配置)

编辑SSH配置文件 vim /etc/ssh/sshd_config ,找到找到以下配置项ClientAliveIntervalClientAliveCountMax

#ClientAliveInterval 0  #服务端每隔多少秒向客户端发送一个心跳数据
#ClientAliveCountMax 3  #客户端多少次没有相应,服务器自动断掉连接
复制代码

去掉注释,改成:

ClientClientAliveInterval 60
ClientAliveCountMax 86400
复制代码

保存退出

如图:

最重要的要重启SSH服务systemctl restart sshd ,然后输入exit 再重新连接ssh [email protected]  (这里我做了主机信任,所以没用输密码,正常情况下会让输入密码)

准备yum源

这一步也可忽略,如果yum安装包没有问题,可以不用执行此步骤

为了更好的接下来的操作,我把yum源换成阿里的(仅为测试,生产环境请遵守生产规范)

  1. 先删除原先的yum源
cd /etc/yum.repos.d/
rm -rf *
ls
复制代码

  1. 下载阿里yum源

    如果提示wget 没有安装,也可以用curl 来下载
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
复制代码

curl  -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
复制代码

安装docker

  1. 卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
复制代码
  1. 安装docker依赖
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
复制代码
  1. 安装docker-ce源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
复制代码
  1. 安装docker-ce最新版本(根据官网要求,docker版本不能低于19.03.6)
yum install docker-ce docker-ce-cli containerd.io
复制代码
  1. 启动docker并加入开机自启动
systemctl start docker

systemctl enable docker
复制代码
  1. 验证docker
docker run hello-world
复制代码

如图所示,docker安装成功:

  1. 查看docker版本\
docker -v
复制代码

安装Docker-compose

  1. Docker Compose 存放在Git Hub,不太稳定。所以我采用国内源来安装docker-compose(官网最低要求docker-compose不能低于1.28.0,安装时注意版本)
    你可以通过修改URL中的版本,可以自定义您的需要的版本。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.28.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
复制代码
  1. 查看docker-compose的版本
    如图所示安装成功:
docker-compose --version
复制代码

配置阿里云镜像加速

因为镜像都在国外,所以我们配置阿里云容器镜像加速服务

阿里云镜像服务地址:cr.console.aliyun.com/cn-beijing/…

  1. 选择镜像工具-镜像加速

按照文档说的敲就行

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://********.mirror.aliyuncs.com"]  #注意要替换成自己的加速地址
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
复制代码

配置安全组

因为sentry对外访问的是9000端口,ECS默认没有开放9000端口,所以我们要在安全组打开9000端口,以便能够访问9000

  1. 选择云服务器,进入管理页面
  2. 选择安全组-更改安全组
  1. 新建安全组

  1. 选择创建安全组

  1. 名称-sentry
    描述:开放sentry服务9000端口

  1. 配置规则

  1. 入方向规则-添加规则
    开放端口:9000
    描述:sentry访问端口
    源地址注意:0.0.0.0/0代表的是任何人任何地址都能访问的到,这里仅为测试,生产环境不能这样做

能够看到我们添加了一条安全组

任何来源IP都能访问此ECS的9000端口

  1. 再进入到ECS管理页面

  1. 选择安全组-更改安全组

  1. 点击下三角,勾选sentry安全组

如图:确定

安装sentry

  1. 先安装git
yum -y install git
复制代码
  1. 获取 onpremise
    获取的版本是21.11.0
git clone https://github.com/getsentry/onpremise.git
复制代码
  1. 执行安装脚本
    进入 onpremise 目录执行脚本
    这个过程稍微有点慢,安装过程中会提示你创建管理者(admin/owner)的账号和密码,请注意留意,按照提示输入即可
    这里我为了测试 Email:[email protected],正式环境应该填写自己的邮箱
    这一步骤是非必须的,启动时会有一个配置的页面,到时候再根据提示填写也是可以的
    配置文件为 sentry/config.yml,需要设置邮件、域名等,具体配置可以参见官方文档
cd onpremise
./install.sh
复制代码

  1. 看到这一步就算安装完成(根据网速不同,安装时间略有不同,请大家耐心等待,不要终止安装,否则会起不来服务)

  1. 启动服务
docker-compose up -d
复制代码

  1. 看一下docker容器是否启动
docker ps -a
复制代码

如图都是UP状态

  1. 打开控制台-弹性云服务器
    能看到我们的公网IP:121.37.71.117

  1. 浏览器访问:http://121.37.71.117:9000/
    输入账号密码登录,就是安装过程中你输入的邮箱和密码

  1. 配置一些邮箱信息 ,我这里为了测试就略过了

  1. 继续下一步

11.看到sentry的页面

至此,sentry部署安装完成,接下来我们Flask框架接入sentry

Python Flask接入Sentry

  1. 选择Project-Create Project 创建项目

  1. 选择Flask 平台,注意一定要选中Flask图标
    输入项目名字flask-new
    点击Creat Project

  1. 接下来就会看到senty教你如何在你项目中接入,接下来我们就按照官方文档接入Flask框架

  1. 用Pycharm创建一个flask项目
    选择Flask框架-输入项目名-选择环境变量

  1. 在终端中安装sentry sdk
pip3 install --upgrade 'sentry-sdk[flask]'
复制代码

  1. app.py 中写入如下内容:注意dsn要替换成自己sentry服务器上的
import sentry_sdk
from flask import Flask
from sentry_sdk.integrations.flask import FlaskIntegration



sentry_sdk.init(
    dsn="http://[email protected]:9000/5", #要替换成自己sentry服务器的dns
    integrations=[FlaskIntegration()],

    # Set traces_sample_rate to 1.0 to capture 100%
    # of transactions for performance monitoring.
    # We recommend adjusting this value in production.
    traces_sample_rate=1.0
)

app = Flask(__name__)
复制代码

如图:

6.模拟一个报错:

1/0会引发ZeroDivisionError错误

@app.route('debug-sentry')
def trigger_error():
    division_by_zero=1/0
复制代码

如图:

浏览器访问:http://127.0.0.1:5000/debug-sentry

能看到报错

看Pycharm输出也能看到报错:

  1. 浏览器打开sentry页面,选择Project,点击自己刚创建的项目flask-new

  1. 点击View All Issues

  1. 能看到我们的报错和Pycharm输出一样

有不足之处欢迎指正,如遇其他报错,欢迎一起探讨

作者原创不易,转载请联系

猜你喜欢

转载自juejin.im/post/7033029943604805663