首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

兼容sentry协议的轻量级监控,glitchtip

编程知识
2024年07月23日 08:52

前言

上一篇文章说了重启 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 我还没部署上,里面的配置有点复杂。

From:https://www.cnblogs.com/deali/p/18317612
本文地址: http://shuzixingkong.net/article/317
0评论
提交 加载更多评论
其他文章 微软CrowdStrike驱动蓝屏以及内核签名
原因 当Windows操作系统遇到严重错误导致系统崩溃时,屏幕显示为蓝色,通常伴有错误代码和信息,这被称为“蓝屏死机”(Blue Screen of Death,简称BSOD) https://www.thepaper.cn/newsDetail_forward_28126297 这次蓝屏事件影响非
微软CrowdStrike驱动蓝屏以及内核签名 微软CrowdStrike驱动蓝屏以及内核签名
.NET跨平台UI框架Avalonia 11.1重磅发布
本篇为译文 原文地址 https://avaloniaui.net/blog/avalonia-11-1-a-quantum-leap-in-cross-platform-ui-development github地址 https://github.com/AvaloniaUI/
.NET跨平台UI框架Avalonia 11.1重磅发布
如何优雅地写注释:找到代码注释的黄金平衡点
优雅的注释是一种平衡艺术,它要求我们在不牺牲代码清晰度的前提下,避免过度注释。通过遵循上述原则和技巧,我们可以写出既有助于自己,也有助于他人的注释,从而提升代码的整体质量和可维护性。
如何优雅地写注释:找到代码注释的黄金平衡点 如何优雅地写注释:找到代码注释的黄金平衡点
英伟达又向开源迈了一步「GitHub 热点速览」
大家是否还记得 2012 年,Linux 之父 Linus Torvalds 在一次活动中“愤怒”地表达了对英伟达闭源 Linux GPU 驱动的不满?这个场景曾是热门表情包,程序员人手一个。
英伟达又向开源迈了一步「GitHub 热点速览」 英伟达又向开源迈了一步「GitHub 热点速览」 英伟达又向开源迈了一步「GitHub 热点速览」
BTC 地址
比特币地址(Bitcoin Address)是用于接收和发送比特币的唯一标识符,类似于传统金融系统中的银行账号。一个比特币地址由一串字母和数字组成,通常以1、3或bc1开头,具体长度为26至35个字符。以下是比特币地址的主要类型及其特点: P2PKH地址(Pay-to-PubKey-Hash): 以
BTC 地址
C# 开发技巧 轻松监控方法执行耗时
前言 MethodTimer.Fody 是一个功能强大的库,可以用于测量 .NET 应用程序中的方法的执行时间。允许你在不修改代码的情况下,自动地测量和记录方法的执行时间。 这个工具是基于.NET的 weaving 技术,通过修改IL(Intermediate Language,中间语言)代码来插入
C# 开发技巧 轻松监控方法执行耗时 C# 开发技巧 轻松监控方法执行耗时 C# 开发技巧 轻松监控方法执行耗时
反射内存卡驱动的安装
反射内存卡驱动的安装通常遵循以下一般步骤,但具体过程可能因产品型号和操作系统的不同而有所差异: 1.准备工作 - 确认您的操作系统版本和体系结构(32 位或 64 位)。 - 从反射内存卡制造商的官方网站下载适用于您的操作系统的最新驱动程序。 2. 解压驱动文件 - 将下载的驱动压缩包解压到一个您容
反射内存卡驱动的安装 反射内存卡驱动的安装
SQL 注入漏洞详解 - Union 注入
1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应
SQL 注入漏洞详解 - Union 注入 SQL 注入漏洞详解 - Union 注入 SQL 注入漏洞详解 - Union 注入