Centos7使用docker搭建Sentry
1、安装docker
Sentry
是一款基于 Django
实现的错误日志收集和聚合的平台,它是 Python
实现的,但是其日志监控功能却不局限于python
,对诸如 Node.js
, php
,ruby
, C#
,java
等语言的项目都可以做到无缝集成,甚至可以用来对iOS
, Android
移动客户端以及 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
果然,什么乱七八糟的日志中发现有这么一个错误:
- 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的更多相关文章
- Centos7通过Docker安装Sentry(哨兵)
Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...
- Centos7使用docker搭建gitlab服务器
了解到docker的优点,搭建快,运行要求资源低,最重要的是实现的功能和效果都能达到预期,于是决定使用docker来搭建gitlab服务器. 效果图如下: 系统环境:CentOS Linux rele ...
- Centos7 使用Docker搭建Oracle测试环境
1.更新yum yum update 2.安装Docker yum install docker 安装完成后查看Docker的版本: docker version 查看Docker的信息: docke ...
- CentOS7使用docker搭建Solo博客
一.获取最新镜像 docker pull b3log/solo 二.启动容器 使用 MySQL 先手动建库(库名 solo,字符集使用 utf8mb4,排序规则 utf8mb4_general_ci) ...
- Linux Centos7 基于Docker 搭建 Nexus私服搭建
创建Blob Stores[本地文件存储目录,统一管理] 1.设置名称和工作路径: ps[注意事项]: 1.storage name:自定义名称 2.storage path:存储路径,默认[/nex ...
- CentOS 使用 Docker 安装 Sentry
官网介绍:Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息.他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘 ...
- docker搭建samba共享目录
需求:因同事需要共享文件夹来传输数据.整好接触docker,所以想用docker来搭建samber 系统:Centos7.4 docker搭建就不在赘述,如有需要请参考:https://www.jia ...
- 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,
第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...
- Centos7安装Docker 基于Dockerfile 搭建httpd运行环境
Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...
随机推荐
- .net core 读取Excal文件数据及注意事项
添加ExcelDataReader.DataSet引用. 调用下列方法: public class XlsHelper { public static System.Data.DataSet GetX ...
- Your development team, "", does not support the Push Notifications capability.
问题: Your development team, "", does not support the Push Notifications capability. 解决方法: 1 ...
- monorepo仓库管理方式探秘
前言 随着功能和业务量级的飙升,前端代码量级也越来越大,管理运维的成本也进一步增加. 代码仓库的运营管理挑战也浮出水面. 主流方案有两种:一是multirepo式的分散式的独立仓库,二是monorep ...
- ASP.Net MVC SignalR的应用
ASP.Net MVC SignalR的应用 最近做的一个MVC项目有个模块是要使用即时通信实现弹幕效果.既要考虑通信的实时性也要考虑服务器性能和资源消耗,所幸项目对浏览器的版本没有要求.所以我最先想 ...
- 聊聊多线程那一些事儿 之 五 async.await深度剖析
hello task,咱们又见面啦!!是不是觉得很熟读的开场白,哈哈你哟这感觉那就对了,说明你已经阅读过了我总结的前面4篇关于task的文章,谢谢支持!感觉不熟悉的也没有关系,在文章末尾我会列出前四 ...
- knn识别简单验证码
参考 https://www.biaodianfu.com/knn-captcha-recognition.html 内容大致一样,只是根据自己的想法加入了一些改动 KNN(k近邻算法) 算法原理请看 ...
- 洛谷$P$1402 酒店之王 网络流
正解:网络流 解题报告: 传送门! 一看就很网络流昂,,,于是现在的问题就变成怎么建图了$QwQ$ 首先如果只有一个要求,那就直接按要求建图然后跑个最大流就好. 现在变成,有两个要求,必须同时满足,考 ...
- vux中x-input在安卓手机输入框的删除按钮(@on-click-clear-icon)点击没反应
首先看你自己的的版本好,如果在2.6.9以上,我是在git上找到的解决办法,记录一下,希望可以帮到有需要的小伙伴. 在项目中找 node_modules > vux > x-input & ...
- notpad++使用cmd的快捷键设置
notepad++运行批处理的设置: 运行 --> 输入运行程序名"$(FULL_CURRENT_PATH)" --> 保存(自定义的快捷键即可运行)
- 机器学习实战笔记(一)- 使用SciKit-Learn做回归分析
一.简介 这次学习的书籍主要是Hands-on Machine Learning with Scikit-Learn and TensorFlow(豆瓣:https://book.douban.com ...