错误日志收集工具Sentry部署

  • 2017-11-20
  • 181
  • 0
  • 0

前言


当前面临的问题

  1. 脚本日志的拉取不是实时的,出现问题到解决问题的周期太长,容易导致工作陷入被动;
  2. 用户反馈和邮件告警包含的错误信息非常有限,且不一定准确;
  3. 监控覆盖面有限,只能监控基本的接口,无法准确定位问题;

为什么使用Sentry

Sentry是一个现代化的错误日志记录和聚合平台。支持几乎所有主流开发语言和平台,并提供了现代化UI。与ELK, splunk不同,sentry专注于应用程序产生的错误日志的聚合和监控,官方提供了多个语言的SDK,支持大量的日志框架,比如 java 的 log4j 、logback。让开发者第一时间获悉错误信息, 并方便的整合进自己和团队的工作流中。

1、环境准备


1.1 系统环境

系统:CentOS Linux release 7.4.1708 (Core)
IP:192.168.10.23

 

1.2 postgresql安装

cd /opt
wget https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
rpm -ivh pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96 postgresql96-devel postgresql96-libs postgresql96-server postgresql-devel* postgresql96-contrib -y
/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl enable postgresql-9.6
 
# 将相关连接的Method改为 trust
vim /var/lib/pgsql/9.6/data/pg_hba.conf
systemctl restart postgresql-9.6

 

1.3 redis安装

yum -y install epel-release
yum -y install redis
sed -i 's/bind 127.0.0.1/#bind 127.0.0.1/g' /etc/redis.conf
service redis start
chkconfig redis on

 

1.4 pip安装

yum -y install python-pip python-devel

 

2、安装sentry


2.1 安装

# 安装环境
pip install -U virtualenv
virtualenv /data/sentry/
source /data/sentry/bin/activate
pip install -U sentry
sentry init

# 改端口5432,改host为localhost,Redis 项使用默认即可,另外一个需要注意的是 Web 使用的端口配置项 SENTRY_WEB_PORT,默认为 9000 ,实际安装时可以检测下端口是否已被占用
vim ~/.sentry/sentry.conf.py
 
# 创建数据库
createdb -U postgres -E utf-8 sentry
 
# 执行数据更新,数据填充完成后会提示是否创建用户,可以选择不创建后续再创建
sentry upgrade
 
# 创建用户,需要填写邮箱和密码,创建好后会提示是否作为超级用户,根据自己情况选择即可。
sentry createuser

 

 

2.2 启动

# 开启服务
sentry run web &
sentry run cron &
sentry run worker &
 
# 后台自启
nohup sentry run web >/dev/null 2>&1 &
nohup sentry run cron >/dev/null 2>&1 &
nohup sentry run worker >/dev/null 2>&1 &

 

 

2.3 第一次登录设置

# 用户名为之前创建的用户打开地址:http://192.168.10.23:9000

# 设置用户URL,Admin Email:

# 点击【Acount】,进入账户管理,【外观】修改时区

2.4 邮箱设置

vim ~/.sentry/config.yml

mail.host: 'smtp.test.com'
mail.port: 587
mail.username: 'monitor@test.com'
mail.password: 'password'
mail.use-tls: true
mail.from: 'monitor@test.com'

重启服务

sudo kill -9 `ps -ef|egrep -i 'sentry|cel'|awk '{print $2}'`
nohup sentry run web >/dev/null 2>&1 &
nohup sentry run cron >/dev/null 2>&1 &
nohup sentry run worker >/dev/null 2>&1 &

 

 

3、部署中碰到的问题与解决方案

2.1 web页面显示”Background workers haven’t checked in recently”

【现象】

Background workers haven't checked in recently. It seems that you have a backlog of 124 tasks. Either your workers aren't running or you need more capacity.

【原因】worker进程执行问题,worker进程没起来

【解决方案】

nohub sentry run cron >/dev/null 2>&1 &
sentry run worker >/dev/null 2>&1 &

 

2.2 sentry upgrade时碰到的问题

2.2.1 问题一

【现象】

import urllib3
ImportError: No module named urllib3

【解决方案】

sudo pip uninstall urllib3
sudo pip install urllib3

 

2.2.2 问题二

【现象】

from . import certs
cannot import name 'certs'

【解决方案】

sudo pip uninstall requests
sudo pip install requests

 

 

 

 

评论

还没有任何评论,你来说两句吧