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.

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

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

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

docker-compose run --rm web upgrade

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

如下图所示

    

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

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

# docker exec -it onpremise_postgres_1 bash

.进入postgres数据库

# psql -h 127.0.0.1 -d postgres -U postgres

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

postgres=#  select * from sentry_project;

postgres=# select * from sentry_organization ;

如果没有数据,进行创建

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

# docker-compose run --rm web shell  

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

from sentry.models import Project

from sentry.receivers.core import create_default_projects

create_default_projects([Project])

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

# docker-compose run --rm web createuser

    第七步启动服务运行

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

docker-compose up -d

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

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

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

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

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

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

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

Centos7使用docker搭建Sentry的更多相关文章

  1. Centos7通过Docker安装Sentry(哨兵)

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  2. Centos7使用docker搭建gitlab服务器

    了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...

  3. Centos7 使用Docker搭建Oracle测试环境

    1.更新yum yum update 2.安装Docker yum install docker 安装完成后查看Docker的版本: docker version 查看Docker的信息: docke ...

  4. CentOS7使用docker搭建Solo博客

    一.获取最新镜像 docker pull b3log/solo 二.启动容器 使用 MySQL 先手动建库(库名 solo,字符集使用 utf8mb4,排序规则 utf8mb4_general_ci) ...

  5. Linux Centos7 基于Docker 搭建 Nexus私服搭建

    创建Blob Stores[本地文件存储目录,统一管理] 1.设置名称和工作路径: ps[注意事项]: 1.storage name:自定义名称 2.storage path:存储路径,默认[/nex ...

  6. CentOS 使用 Docker 安装 Sentry

    官网介绍:Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息.他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘 ...

  7. docker搭建samba共享目录

    需求:因同事需要共享文件夹来传输数据.整好接触docker,所以想用docker来搭建samber 系统:Centos7.4 docker搭建就不在赘述,如有需要请参考:https://www.jia ...

  8. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  9. Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...

随机推荐

  1. centos 利用mailx发送邮件

    这里就已163或者126邮箱为例!阿里云的25号端口好像发送不了,用465端口可以发送成功! 安装:yum install -y mailx 然后就是修改配置文件 set ssl-verify=ign ...

  2. Oracle单引号拼接和替换

    1.oracle拼接一个单引号: 正常写法:''''|| 由于单引号存在转义,第一个和最后一个是指定你要使用的字符,第二个’是单引号的转义字符,所以需要第三个‘才是真正你要拼接的那个. 也可以用 ch ...

  3. read、write 与recv、send区别 gethostname

    recv相对于read有什么区别呢? 其实它跟read函数功能一样,都可以从套接口缓冲区sockfd中取数据到buf,但是recv仅仅只能够用于套接口IO,并不能用于文件IO以及其它的IO,而read ...

  4. 微信小程序获取多个input和textarea的值(es6加微信小程序APi)

    wxml js 俩行即可解决,money1,money2,money3

  5. 22.文本框验证和外部url的调用

    面板可以右键固定到浏览器并且横向纵向都剧中 如果要在图片上进行点击或者其他操作 可以覆盖一个图片热区或者矩形(透明的)充当一个按钮的操作 这个提示的图片是默认隐藏的 通过右上角那个隐藏的勾 文本框右边 ...

  6. java面试-反射

    1.什么是反射?有什么优缺点?   反射就是动态加载对象,并对对象进行剖析.在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法.对于任意一个对象,都能够调用它的任意一个方法.这种动态获取信 ...

  7. 使用SonarQube+Eclipse来分析python代码

    背景 最近在项目中推广集成测试的理念以及相关工具,在jenkins中集成sonar去分析项目的java代码的时候,意外的发现,sonarqube上还有对应python的插件,而自己写的测试工具大部分都 ...

  8. 从头学pytorch(九):模型构造

    模型构造 nn.Module nn.Module是pytorch中提供的一个类,是所有神经网络模块的基类.我们自定义的模块要继承这个基类. import torch from torch import ...

  9. 【题解】幼儿园篮球题(范德蒙德卷积+斯特林+NTT)

    [题解]幼儿园篮球题(NTT+范德蒙德卷积+斯特林数) 题目就是要我们求一个式子(听说叫做超几何分布?好牛逼的名字啊) \[ \sum_{i=1}^{S}\dfrac 1 {N \choose n_i ...

  10. Spring的BeanPostProcessor后置处理器与bean的生命周期

    前言 本文将把Spring在Bean的生命周期中涉及到的后置处理器一一梳理出来,并简要说一下功能,至于每个后置处理器在实际扩展中的用处,还要后续慢慢探索总结. 正文 下面一步步跟进探寻那些后置处理器们 ...