前言

上一篇文章说了重启 sentry 的事

因为过程太折腾了,一度想过放弃 sentry 换成其他比较轻量级的开源监控系统

这不就给我找到了另外俩个

这次就来试试这个 glitchtip

用了之后才发现,这个也是用 Django 开发的,而且兼容 sentry 协议,连 SDK 都用的 sentry 的…

就是个 sentry 的轻量级平替版

环境准备

相比起 sentry ,glitchtip 非常的轻量,只用到了 redis 和 celery

日志数据是存在 PostgreSQL 里的

这就很舒服了,部署起来比 sentry 这种重量级的框架简单多了

本文的部署基于官方的 docker-compose 配置修改而来

PostgreSQL

首先准备数据库

官方的 compose 里带有一个数据库,不过我服务器上已经有数据库了,就不要重复搞那么多容器

services:
db:
image: postgres
container_name: pgsql
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=数据库管理员密码
expose:
- 5432
ports:
- 5432:5432
volumes:
- ./data:/var/lib/postgresql/data
networks:
- default networks:
default:
name: pgsql

把pgsql启动之后,先来创建 glitchtip 用到的数据库和用户

-- 创建用户: 使用 CREATE ROLE 或 CREATE USER 命令来创建一个新用户。
CREATE USER glitchtip WITH PASSWORD 'glitchtip用户密码'; -- 赋予权限: 要确保 glitchtip 用户只能访问 glitchtip 数据库,你需要为该用户设置适当的权限。
GRANT ALL PRIVILEGES ON DATABASE glitchtip TO glitchtip; -- 授予在 public 模式中创建表的权限
GRANT CREATE ON SCHEMA public TO glitchtip;
-- 授予在 public 模式中使用的权限
GRANT USAGE ON SCHEMA public TO glitchtip;

这里数据库的就搞定了

扩展:adminer

如果想在网页上管理数据库,可以启动一个 adminer 服务

services:
adminer:
image: adminer
container_name: adminer
restart: always
networks:
- swag
- pgsql
- mysql networks:
swag:
name: swag
external: true
pgsql:
name: pgsql
external: true
mysql:
name: mysql
external: true

启动之后在 swag 做一下8000端口的反代即可。

Redis

redis 比较轻,建议使用 glitchtip 里的即可,不需要使用共用的 Redis

除非搭了集群

安装 glitchtip

我修改了一下官方提供的 compose 配置

有几点需要注意:

  • 邮箱地址和密码需要使用 urllib.parse.quote() 转义,我这里依然使用企业邮箱,不过试了smtp://smtps://前缀都没法发送成功
  • 把官方的顶层volumes去掉了,把数据放在当前目录下,方便管理。如果有大量数据可以考虑换 OSS
  • 使用我们前面部署的 PostgreSQL 数据库,而不是 compose 里另外起一个
x-environment: &default-environment
DATABASE_URL: postgres://glitchtip:glitchtip用户密码@pgsql:5432/glitchtip
SECRET_KEY: 建议32位随机密码 # 可以使用命令生成 openssl rand -hex 32
PORT: 8000
EMAIL_URL: smtp://邮箱地址:邮箱密码@smtp.exmail.qq.com:465
GLITCHTIP_DOMAIN: https://glitchtip.example.com
DEFAULT_FROM_EMAIL: 邮箱地址
CELERY_WORKER_AUTOSCALE: "1,3"
CELERY_WORKER_MAX_TASKS_PER_CHILD: "10000" x-depends_on: &default-depends_on
- redis services:
redis:
image: redis
restart: unless-stopped
networks:
- default web:
image: glitchtip/glitchtip
depends_on: *default-depends_on
ports:
- "8000:8000"
environment: *default-environment
restart: unless-stopped
volumes:
- ./uploads:/code/uploads
networks:
- default
- pgsql
- swag worker:
image: glitchtip/glitchtip
command: ./bin/run-celery-with-beat.sh
depends_on: *default-depends_on
environment: *default-environment
restart: unless-stopped
volumes:
- ./uploads:/code/uploads
networks:
- default
- pgsql migrate:
image: glitchtip/glitchtip
depends_on: *default-depends_on
command: "./manage.py migrate"
environment: *default-environment
networks:
- pgsql
- default networks:
default:
name: glitchtip
swag:
name: swag
external: true
pgsql:
name: pgsql
external: true

启动就完事了

首次启动后需要 migrate ,这时候 worker 会报错,没事,等 migrate 完成就好了。

登录后注册、创建一个新组织,就可以正常使用了。

代码里使用

仅使用glitchtip

如果单纯用 glitchtip,当成 sentry 来用就行了

import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration sentry_sdk.init(
dsn="YOUR-GLITCHTIP-DSN-HERE",
integrations=[DjangoIntegration()],
auto_session_tracking=False,
traces_sample_rate=0.01,
release="1.0.0",
environment="production",
)

就这么朴实无华

与 sentry 同时使用

PS: 话说为什么要和sentry同时使用?

sentry_sdk 默认不支持同时初始化多个实例

所以通过一些额外的逻辑来实现这个功能

class GlitchtipSentrySdk:
def __init__(self, dsn):
self.client = sentry_sdk.Hub(sentry_sdk.Client(dsn)) def capture_exception(self, exc):
with self.client:
sentry_sdk.capture_exception(exc) glitchtip = GlitchtipSentrySdk('https://balabalaba@glitchtip.example.com/1')

搞定了

小结

简单体验下来,glitchtip真的简陋很多

不过最基本的错误收集功能还是有的

如果服务器性能不够的话,作为sentry的平替还是不错的。

还有个 highlight 我还没部署上,里面的配置有点复杂。

兼容sentry协议的轻量级监控,glitchtip的更多相关文章

  1. H5 的直播协议和视频监控方案

    H5 的直播协议和视频监控方案 一.流媒体主要实现方式 二.流媒体技术 2.1 流媒体 2.2 直播 2.3 流协议 2.3.1 HLS 协议 2.3.2 RTMP 协议 2.3.3 RTSP 协议 ...

  2. KeeWiDB:兼容Redis协议,领跑NoSQL

    如果现在的我们离开了互联网,生活会是什么样子? 互联网++++,已经深刻渗透到人们的生活中. 不知道大家有没有想过?每一个互联网+结合的背后都是海量的存储需求.你查看的每一个商品.组建的每一个战队.阅 ...

  3. 转:基于HTTP协议的轻量级开源简单队列服务:HTTPSQS

    [文章作者:张宴 本文版本:v1.7.1 最后修改:2011.11.04 转载请注明原文链接:http://blog.zyan.cc/httpsqs/] HTTPSQS(HTTP Simple Que ...

  4. 硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器(转)

    源:硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器 硬件上由于24c01的A0A1A2管脚不允许悬空,故暂时的想法是兼容24c02 ---24c16 使用一个dip8封装的芯片插座,A0 ...

  5. 基于JT/T808协议的车辆监控平台架构方案

    技术支持QQ:78772895 1.接入网关应用采用mina/netty+spring架构,独立于其他应用,主要负责维护接入终端的tcp链接.上行以及下行消息的解码.编码.流量控制,黑白名单等安全控制 ...

  6. Java虚拟机性能管理神器 - VisualVM(1) 简介 - JVM轻量级监控分析神器

    目录(?)[-] 一VisualVM是什么 二如何获取VisualVM 三获取那个版本 四VisualVM能做什么 显示JAVA应用程序配置和运行时环境 显示本地和远程JAVA应用程序运行状态 监控应 ...

  7. 基于HTTP协议的轻量级开源简单队列服务:HTTPSQS[转]

    HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key ...

  8. 基于sentry的前端错误监控日志系统(部署sentry服务器/前端项目部署)-让前端最快的定位到生产问题

    背景 在这越来越发达的网络时代,web应用也是越来越复杂,尤其是前端的开发,也是越来越受重视. 所以在我们前端开发完成后,会有一些列的web应用的上线验证,如自测.QA测试.code review 等 ...

  9. 轻量级监控平台之cpu监控

    轻量级监控平台之cpu监控脚本 #!/bin/bash #进程监控脚本 #功能需求: 上报机器的硬件层面-cpu负载数据 . /etc/profile . ~/.bash_profile pushur ...

  10. 轻量级监控平台之java进程监控脚本

    轻量级监控平台之java进程监控脚本 #!/bin/bash #进程监控脚本 #功能需求: 上报机器Java进程的进程ID,对应的端口号service tcp端口号,tomcat http 端口号,以 ...

随机推荐

  1. 显示锁之ReentrantLock

    ReentrantLock显示锁 在Java 1.5之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile两种.Java1.5增加了一种新的机制:ReentrantLo ...

  2. Flyway简单迁移失败问题

    因为我是初学者,所以问题 只是一些细节性问题,现在看看V开头创建数据库迁移时的错误 问题一: flyway 命名规则问题这个绝对的细节中的细节问题 问题一解决方案: 命名规则:一定要遵循flyway的 ...

  3. Vue——模板语法

    Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层组件实例的数据.所有 Vue.js 的模板都是合法的 HTML,所以能被遵循规范的浏览器和 HTML 解析器解析 ...

  4. Android OpenMAX(二)OMX Component实现基础

    Android OpenMAX IL提供的API位于 frameworks/native/headers/media_plugin/media/openmax ,目录下存放有预定义的类型.组件句柄定义 ...

  5. 互联网软件的安装包界面设计-Inno setup

    https://blog.csdn.net/oceanlucy/article/details/50033773 "安装界面太丑了,不堪入目!" "这界面应该属于20年代 ...

  6. 一文了解JVM面试篇(上)

    Java内存区域 1.如何解释 Java 堆空间及 GC? 当通过 Java 命令启动 Java 进程的时候,会为它分配内存.内存的一部分用于创建 堆空间,当程序中创建对象的时候,就从对空间中分配内存 ...

  7. uniapp 输入有值后按钮变色

    我们在开发中难免会遇到一些登录注册输入框中的值为空时,按钮的状态变成为不可点击的状态,当输入框有值后就把按钮变为可点击的状态 代码部分: <input placeholder="请输入 ...

  8. 前端性能优化的利器 ——— 浅谈JavaScript中的防抖和节流

    防抖和节流函数是工作中两种常用的前端性能优化函数,今天我就来总结一下什么是防抖和节流,并详细说明一下如何在工作中应用防抖和节流函数 什么是防抖和节流? 在 JavaScript 中,防抖(deboun ...

  9. 苹果手机 ios 系统如何升级为鸿蒙HarmonyOS

    用苹果手机的朋友们注意了 根据最新的可靠消息,苹果手机升级为HarmonyOS,教程如下: 第一步 手机电量充足的情况下,将苹果手机连接至WIFI无线网络. 第二步 ...... [下一页]

  10. Github上优秀的.NET Core开源项目的集合【转】

    一般 ASP.NET Core Documentation - 官方ASP.NET核心文档站点. .NET Core Documentation - .NET Core,C#,F#和Visual Ba ...