专栏首页Centos7Centos7使用docker搭建Sentry
原创

Centos7使用docker搭建Sentry

1、安装docker

  Sentry 是一款基于 Django实现的错误日志收集和聚合的平台,它是 Python 实现的,但是其日志监控功能却不局限于python,对诸如 Node.jsphp,rubyC#,java 等语言的项目都可以做到无缝集成,甚至可以用来对iOSAndroid 移动客户端以及 Web前端异常进行跟踪。我们可以在程序中捕获异常,并发送到 Sentry服务端进行聚合统计、展示和报警。sentry官方推荐docker方式安装,使用到了docker-compose。docker至少是1.10.3以上的版本。为此需要使用centos7。

  Docker在2016年很早的时候就明确了将会在企业级方面重点跟进。而在短短的一年时间之内推出的1.12和1.13的版本在功能上确实是很大的进步。而在2017年的3月1号之后,Docker的版本命名开始发生变化,同时将CE版本和EE版本进行分开了,EE是企业版,CE是社区版,如果直接使用‘

yum install -y docker-engine 或者

yum install -y docker 安装的都是老版本docker

我们采用的是安装Docker CE版:

卸载旧版本Docker

yum remove docker  docker-common  docker-selinux  docker-engine

安装依赖

1、安装依赖包

yum install -y yum-utils   device-mapper-persistent-data   lvm2

2、添加稳定的源

yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo

3、可选操作:允许拓展最新的不稳定的repository

yum-config-manager --enable docker-ce-edge

安装docker-ce

更新yum

yum install makecache fast

安装docker-ce

yum -y install docker-ce

启动docker

sudo  systemctl start docker

测试docker

docker run hello-world

 如果以上步骤成功则测试时会返回如下结果:

 查看docker版本,docker至少是1.10.3以上的版本,如果我没有指定版本默认安装最新的则肯定满足条件

docker --version

返回

继续安装依赖,需要用到git,docker-compose,pip等组件

sudo yum install epel-release

sudo  yum  install -y python-pip

sudo  yum  install docker-compose

2、安装sentry

2.1安装

  第一步创建所需的文件夹

mkdir -p data/{sentry,postgres}

然后我们ls会发现多了一个data文件夹,如下:

   第二步克隆该项目

git clone https://github.com/getsentry/onpremise.git

  完成后会多一个

第三步复制相应的环境配置文件

cd onpremise

cp .env.example .env

  注意:此步骤非常重要!此步骤非常重要!此步骤非常重要!

  第四步生成secret key

docker volume create --name=sentry-data
docker volume create --name=sentry-postgres
docker-compose run --rm web config generate-secret-key

  注意:若出现一下bug,请重新执行上面的第三步

  若出现如下bug:

ERROR: Service 'web' failed to build: invalid reference format

请在你的.env环境文件中添加(onpremise/.env)

SENTRY_IMAGE=sentry:9.1.2

   第五步把最后一行生成的密钥保存下来,输入到.env中

  vi .env
  SENTRY_SECRET_KEY='4(dt6t5s(d2l#g-y+bto67+cej@(ygled67kyn&6bqdrma=2ti'

          第六步更新配置,创建超级管理员用户

docker-compose run --rm web upgrade

   注意:该过程会让你注册一个超级管理员账号

 如下图所示

注意如果没有出现创建用户的提示,请进行以下操作:

1.使用docker命令进入postgres数据库

# docker exec -it onpremise_postgres_1 bash

2.进入postgres数据库

# psql -h 127.0.0.1 -d postgres -U postgres

3.查看这两个表是否有数据sentry_project,sentry_organization

postgres=#  select * from sentry_project;

postgres=# select * from sentry_organization ;

如果没有数据,进行创建

4.新开一个终端,进入sentry的web的shell里面,其实就是一个python端

# docker-compose run --rm web shell  

5. 输入以下命令进行初始化数据

from sentry.models import Project

from sentry.receivers.core import create_default_projects

create_default_projects([Project])

6.退出第五步的shell,创建自己的用户

# docker-compose run --rm web createuser

第七步启动服务运行

注意是在onpremise文件下执行命令

docker-compose up -d

 第八步添加邮件配置到.env文件和docker-compose.yml中

  vi .env        添加如下行
        SENTRY_SERVER_EMAIL=xxxx@163.com   #你的163邮箱
        SENTRY_EMAIL_HOST=smtp.163.com
        SENTRY_EMAIL_USER=xxxxx@163.com    #你的163邮箱
        SENTRY_EMAIL_PASSWORD=676890      #你的163邮箱密码
        SENTRY_EMAIL_USE_TLS=true
 vi docker-compose.yml    更改如下行
        SENTRY_EMAIL_HOST: smtp.163.com

    第九步重新启动docker容器  

        docker-compose build
        docker-compose run --rm web upgrade
        docker-compose up -d        

第十步访问本地Sentry web界面

      直接访问本机ip:9000即可登录。

 登进来效果如下:

 注意:如果安装期间出现以下这样的错误的话,记得手动执行该命令创建

ERROR: Volume sentry-data declared as external, but could not be found. Please create the volume manually using `docker volume create --name=sentry-data` and try again

执行:docker volume create --name=sentry-data

ERROR: Volume sentry-postgres declared as external, but could not be found. Please create the volume manually using `docker volume create --name=sentry-postgres` and try again.

解决方案:

执行:docker volume create --name=sentry-postgres

Sentry无法接收错误解决方案

sentry无法接收项目事件。这就很困惑了,sentry作为日志收集工具,用来收集和分析错误的项目日志是非常有用的。而现在却无法收集日志,相当于没用了。那么下面来看看到底是什么问题。

搭建完sentry之后,我在sentry里面创建了一个1111的项目:

那么故而言之,这里就是用来收集我某个laravel(如:1111)项目里面的日志信息的。我根据sentry里面的提示配置好我的laravel-test之后,就开始发送测试日志到自己部署的sentry,看看是否能正常接收。于是:

发送是成功的,但回过头来发现,sentry里这个1111依然是空的,这就蛋疼了。

于是只能从docker日志入手了,看看是不是存在什么错误:

    docker stop onpremise_worker
    docker logs -f --tail 100 onpremise_worker

果然,什么乱七八糟的日志中发现有这么一个错误:

  1. ProgrammingError: ProgrammingError('function sentry_increment_project_counter(integer, integer) does not exist

基本上90%能确定是这个错误导致sentry出现功能异常,我们尝试一下解决这个问题:

    1.运行命令进入postgres docker
    docker exec -it onpremise_postgres_1 bash
     
    2.进入postgre数据库
    psql -h 127.0.0.1 -d postgres -U postgres
     
    3.执行: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;
     
    4.ctrl + D退出数据库,exit退出bash
     
    5.重新运行onpremise_worker docker start onpremise_worker

再次在1111中发送测试事件,这次能够在sentry中看到捕获的日志了。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 应用异常监控利器 Sentry 搭建与学习笔记

    Welcome to the Sentry documentation. Sentry is an open-source company,providing ...

    jeanron100
  • 应用异常监控利器 Sentry 搭建与学习笔记(修正版)

    Sentry是一家开源公司,提供了一个应用程序监视平台,可以帮助您实时识别问题。 在这里,我们涵盖了有关产品,平台集成和自托管Sentry的所有内容。【通俗讲的...

    jeanron100
  • 实践搭建Sentry异常中心结合Laravel使用

    Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。Sentry 分为服务端和客户...

    憧憬博客
  • 搭建sentry追踪生产环境bug

    生产环境产生的 bug 需要能够第一时间监控,不然辛辛苦苦引来的流量都跑光了,sentry 就是一套优秀的 bug 追踪系统。以 laravel 为例,演示如何...

    章鱼喵
  • 搭建sentry追踪laravel生产环境bug

    未上线的代码无论再测试,也不可能保证全无 bug ,很多 bug 一直隐藏在某个阴暗的角落,邪恶又猥琐地等着你将其部署上线,然后在某个条件的触发下,开始兴风作浪...

    章鱼喵
  • 使用docker在CentOS7上搭建WordPress

    首先你得知道什么叫做WordPress, 它是一个基于PHP和MySQL的开源的博客管理工具,用于管理你的写作内容。由于它十分容易部署,而且有很多好看的主题可以...

    wo.
  • 抓 Bug 神器的工作原理——聊聊 Sentry 的架构

    Sentry 是什么?这是一个用于错误上报的服务中心,使用近乎一致的 API 设计,统一了不同语言生产环境代码异常上报的难题。

    FesonX
  • 抓 Bug 神器的工作原理——聊聊 Sentry 的架构

    Sentry 是什么?这是一个用于错误上报的服务中心,使用近乎一致的 API 设计,统一了不同语言生产环境代码异常上报的难题。

    benny
  • Docker部署Hadoop集群

    前几天写了文章“Hadoop 集群搭建”之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Docker不仅在生产环境威力巨大,对于我们在自己...

    dys
  • B站:3.搭建MySQL server

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    suveng
  • Sentry9-1-2部署

    Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node.js、Django、Ro...

    YP小站
  • docker学习2-快速搭建centos7-python3.6环境

    当我们在一台电脑上搭建了python3.6的环境,下次换了个电脑,或者换成linux的系统了,又得重新搭建一次,设置环境变量、下载pip等操作。 好不容易安装好...

    上海-悠悠
  • Sentry错误日志监控

    sentry 是一个开源的实时错误监控的项目,它支持很多端的配置,包括 web 前端、服务器端、移动端及其游戏端。

    常见_youmen
  • 从零构建Sentry v10 进行异常上报

    Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。

    w候人兮猗
  • 从零构建Sentry v10 进行异常上报

    Sentry 是一个开源的实时错误追踪系统,可以帮助开发者实时监控并修复异常问题。它主要专注于持续集成、提高效率并且提升用户体验。

    w候人兮猗
  • centos7搭建docker环境。

    1.准备工作,(要是yum源有问题更新yum源。) mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/...

    @凌晨
  • 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建一个版本

    我们可以使用官方 sentry-cli 工具操作 Sentry API,从而来为你的项目管理一些数据。它主要用于管理 iOS、Android 的调试信息文件,以...

    为少
  • Sentry 监控 - Snuba 数据中台本地开发环境配置实战

    如果你本地已经安装了 Docker Desktop 并且已经启动,可以把 cask 'docker' 注释掉。

    为少
  • 前端监控那些事

    Sentry官方服务需要付费,建议自行搭建,可以通过docker去部署搭建,不作详细说明介绍,官方链接 点我?

    树酱

扫码关注云+社区

领取腾讯云代金券