背景
虽然在我们的项目上线前会有很多的测试流程,但是测试流程肯定无法保证 100%覆盖所有操作场景,在用户的使用过程中仍会有一些问题暴露出来。
但当线上用户出现问题,我们需要收到用户的一个反馈,才能去定位解决,这样会导致我们的问题解决不够及时。
并且有些疑难杂症,我们无法复现定位,这时候我们需要得知用户的环境、操作等信息,以便于对问题进行排查。
基于以上三点考虑,我认为在大部分项目中都需要接入一个异常监控系统,来实现收集异常、收集日志信息、及时警告、展示统计信息等功能。
为什么选择 Sentry?
免费 Sentry 可直接使用也可自行搭建 兼容性强,基本不受语言限制,搭建一套系统可用于多个项目。
准备环境
Docker 19.03.6+
Compose 1.24.1+
git 1.8.3.1+
安装docker
yum install docker -y
# 查看版本信息
docker info
或者
docker -v
# 重启docker
systemctl daemon-reload
systemctl restart docker
安装docker-compose
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.27.3/docker-compose-Linux-x86_64
chmod 777 /usr/local/bin/docker-compose
# 查看docker-compose 版本
docker-compose version
安装git
yum install git
git --version
pip安装
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
python3.6 get-pip.py
pip3.6 install docker-compose
安装sentry
#下载sentry(此版本为Sentry 21.7.0.dev0)
git clone https://github.com/getsentry/onpremise.git
cd onpremise/
#准备目录
mkdir -p data/{sentry,postgres}
docker-compose build
docker volume create --name=sentry-data
docker volume create --name=sentry-postgres
docker volume create --name=sentry-redis
docker volume create --name=sentry-zookeeper
docker volume create --name=sentry-kafka
docker volume create --name=sentry-clickhouse
docker volume create --name=sentry-symbolicator
docker-compose run --rm web config generate-secret-key
保存拿到的密钥
vim docker-compose.yml
内容如下:
# 新增()
SENTRY_EVENT_RETENTION_DAYS:
SENTRY_POSTGRES_HOST: postgres
SENTRY_EMAIL_HOST: "smtp.mxhichina.com"
SENTRY_EMAIL_USER: "xulei@xl-blog.cn"
SENTRY_SERVER_EMAIL: "xulei@xl-blog.cn"
SENTRY_EMAIL_PASSWORD: "passwod"
SENTRY_EMAIL_USE_TLS: "false"
SENTRY_EMAIL_PORT: 25
volumes:
- sentry-data:/var/lib/sentry/files
cd sentry
cp sentry.conf.example.py sentry.conf.py
vim sentry.conf.py
首行新增:
import socket
socket.setdefaulttimeout(20)
cd ../
./install.sh
docker-compose up -d
修改缓存时间
SENTRY_EVENT_RETENTION_DAYS=7
vim .env