GlitchTip:开源错误追踪平台完全指南:Sentry替代方案的完整教程

GlitchTip:开源错误追踪平台完全指南:Sentry替代方案的完整教程

背景

在应用开发和运维过程中,错误追踪是保障服务质量的关键环节。Sentry 作为业界领先的错误追踪服务,提供了强大的错误收集和分析能力,但其云服务版本存在数据隐私顾虑,且企业版定价较高。

GlitchTip 正是为解决这一需求而生的开源错误追踪平台。作为 Sentry 的开源替代方案,GlitchTip 提供了与 Sentry 兼容的 API,可以直接替换 Sentry 客户端 SDK,同时支持完全私有化部署。

本文将提供一份保姆级教程,详细讲解 GlitchTip 的部署和配置,帮助开发团队快速搭建私有化的应用监控平台。

一、项目概述

1.1 GlitchTip 简介

GlitchTip 是一款开源的错误追踪平台,GitHub Star 数超过 6K。它提供了与 Sentry 兼容的 API,支持直接使用 Sentry 客户端 SDK。

GlitchTip 的核心特点:

  • Sentry 兼容:兼容 Sentry 协议,无缝迁移
  • 开源自由:基于 MIT 协议,完全开源
  • 私有化部署:数据完全自主掌控
  • 多语言支持:Python、JavaScript、Ruby 等
  • 团队协作:支持团队和项目管理
  • 邮件通知:支持错误告警邮件

1.2 核心功能

1.2.1 错误收集

GlitchTip 提供了全面的错误收集能力:

  • 异常追踪:捕获未处理的异常
  • 消息记录:记录日志和调试信息
  • 性能监控:追踪请求性能(可选)
  • 用户反馈:收集用户端的错误报告
1.2.2 问题管理
  • 问题聚合:自动聚合相似错误
  • 问题分配:分配给团队成员处理
  • 状态管理:标记已解决或忽略
  • 版本追踪:关联代码版本
1.2.3 告警通知
  • 邮件通知:第一时间告警相关人员
  • 自定义规则:灵活的告警规则配置
  • 速率限制:避免告警风暴

二、Docker Compose 部署

2.1 环境准备

确保服务器已安装:

  • Docker 20.10+
  • Docker Compose 2.0+
  • 内存:最低 1GB,推荐 2GB+
  • 磁盘:至少 5GB

2.2 创建部署目录

bash 复制代码
mkdir -p /opt/glitchtip
cd /opt/glitchtip

2.3 创建 docker-compose.yml

bash 复制代码
cat > docker-compose.yml << 'EOF'
version: '3.8'

services:
  glitchtip:
    image: glitchtip/glitchtip
    container_name: glitchtip
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgres://glitchtip:password@db:5432/glitchtip
      - REDIS_URL=redis://redis:6379/0
      - SECRET_KEY=your-secret-key-change-in-production
      - EMAIL_URL=smtp://user:pass@smtp.example.com:587/
      - SITE_URL=http://your-domain.com
    depends_on:
      - db
      - redis

  db:
    image: postgres:15-alpine
    container_name: glitchtip-db
    environment:
      - POSTGRES_USER=glitchtip
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=glitchtip
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped

  redis:
    image: redis:7-alpine
    container_name: glitchtip-redis
    volumes:
      - redis_data:/data
    restart: unless-stopped

  celery:
    image: glitchtip/glitchtip
    container_name: glitchtip-celery
    command: celery -A glitchtip worker -l info
    environment:
      - DATABASE_URL=postgres://glitchtip:password@db:5432/glitchtip
      - REDIS_URL=redis://redis:6379/0
    depends_on:
      - db
      - redis

volumes:
  postgres_data:
  redis_data:
EOF

2.4 创建 .env 文件

bash 复制代码
cat > .env << 'EOF'
SECRET_KEY=your-super-secret-key-change-in-production
DATABASE_URL=postgres://glitchtip:password@db:5432/glitchtip
REDIS_URL=redis://redis:6379/0
EOF

2.5 启动服务

bash 复制代码
# 启动服务
docker compose up -d

# 查看服务状态
docker compose ps

# 初始化数据库
docker compose exec glitchtip python manage.py migrate

2.6 创建管理员账户

bash 复制代码
docker compose exec glitchtip python manage.py createsuperuser

2.7 Nginx 反向代理

bash 复制代码
apt-get install -y nginx

cat > /etc/nginx/sites-available/glitchtip << 'EOF'
server {
    listen 80;
    server_name glitchtip.your-domain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /ws/ {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

ln -s /etc/nginx/sites-available/glitchtip /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

# 启用 HTTPS
apt-get install -y certbot python3-certbot-nginx
certbot --nginx -d glitchtip.your-domain.com

三、快速入门

3.1 访问 GlitchTip

服务启动后,访问 http://your-server-ip:8000 或配置的域名。

使用管理员账户登录。

3.2 创建组织

首次登录,创建组织:

  1. 点击"Create Organization"
  2. 输入组织名称
  3. 设置组织 URL

3.3 创建项目

为应用创建监控项目:

  1. 进入组织设置
  2. 点击"Projects" → "New Project"
  3. 选择平台(Python、JavaScript 等)
  4. 输入项目名称
  5. 获取 DSN 地址

四、SDK 集成

4.1 Python 应用

4.1.1 安装 SDK
bash 复制代码
pip install sentry-sdk
4.1.2 配置 SDK
python 复制代码
import sentry_sdk

sentry_sdk.init(
    dsn="http://your-dsn-key@your-server/1",
   TracesSampleRate=1.0
)

try:
    # 应用代码
    result = 1 / 0
except Exception:
    sentry_sdk.capture_exception()

4.2 JavaScript 应用

4.2.1 安装 SDK
bash 复制代码
npm install @sentry/browser
4.2.2 配置 SDK
javascript 复制代码
import * as Sentry from '@sentry/browser';

Sentry.init({
    dsn: 'http://your-dsn-key@your-server/1',
    integrations: [...],
    tracesSampleRate: 1.0,
});

try {
    // 应用代码
    throw new Error('Test error');
} catch (e) {
    Sentry.captureException(e);
}

4.3 Django 应用

在 Django 的 settings.py 中配置:

python 复制代码
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration

sentry_sdk.init(
    dsn="http://your-dsn-key@your-server/1",
    integrations=[DjangoIntegration()],
    traces_sample_rate=1.0,
    send_default_pii=True
)

4.4 其他语言

GlitchTip 兼容 Sentry SDK,支持:

  • Node.js
  • Ruby
  • Java
  • Go
  • PHP
  • .NET

配置时只需将 DSN 指向你的 GlitchTip 服务器即可。

五、高级功能

5.1 告警规则

5.1.1 创建告警
  1. 进入项目设置 → "Alert Rules"
  2. 点击"Create Alert Rule"
  3. 配置触发条件
5.1.2 触发条件
条件 说明
事件数量 错误数量超过阈值
频率 错误发生频率
新问题 出现新的错误
回归 之前已解决的问题再次出现

5.2 用户反馈

收集用户端的错误报告:

javascript 复制代码
// JavaScript 示例
import * as Sentry from '@sentry/browser';

const form = document.getElementById('feedback-form');
form.addEventListener('submit', (e) => {
    e.preventDefault();
    const message = form.elements.message.value;
    Sentry.captureUserFeedback({
        event_id: Sentry.getLastEventId(),
        comments: message,
        email: 'user@example.com',
        name: 'User Name'
    });
});

5.3 发布追踪

关联代码版本进行追踪:

python 复制代码
sentry_sdk.init(
    dsn="http://your-dsn-key@your-server/1",
    release="myapp@1.0.0",
    environment="production"
)

六、团队管理

6.1 邀请成员

  1. 进入组织设置 → "Members"
  2. 点击"Invite Member"
  3. 输入邮箱地址
  4. 选择角色权限

6.2 角色权限

角色 说明
Owner 组织所有者,全部权限
Admin 管理员,管理项目和成员
Member 成员,使用项目功能
Billing 账单管理

6.3 问题分配

将问题分配给团队成员:

  1. 打开问题详情
  2. 点击"Assignee"
  3. 选择团队成员

七、数据管理

7.1 数据导出

导出错误数据:

  1. 进入项目设置
  2. 选择"Data Export"
  3. 选择时间范围
  4. 下载导出文件

7.2 数据清理

设置数据保留策略:

bash 复制代码
# 使用 Django 命令
docker compose exec glitchtip python manage.py cleanup old-data --days 30

八、常见问题

8.1 部署问题

Q:服务启动失败

A:检查日志:

bash 复制代码
docker compose logs glitchtip
docker compose logs db

Q:数据库连接失败

A:确认数据库配置和环境变量正确。

8.2 使用问题

Q:SDK 发送的数据未显示

A:检查:

  1. DSN 配置是否正确
  2. 网络连接是否正常
  3. 项目是否已创建

Q:告警未触发

A:检查告警规则配置,确认触发条件设置正确。

九、总结

GlitchTip 作为 Sentry 的开源替代方案,以其 Sentry 兼容性和私有化部署能力,为开发团队提供了一个经济高效的错误追踪解决方案。

通过本文的保姆级教程,读者应该已经掌握了:

  1. Docker 部署:使用 Docker Compose 快速部署
  2. 项目配置:创建组织和项目
  3. SDK 集成:在各种语言中集成错误追踪
  4. 告警管理:配置告警规则
  5. 团队协作:管理团队成员

对于需要私有化错误追踪平台的开发团队,GlitchTip 是一个值得考虑的开源选择。


本文由无边界科技技术团队分享,专注软件开发与技术解决方案。

官网:wubianj.com

© 版权归无边界科技所有,版权所有。

相关推荐
GitCode官方21 小时前
开源鸿蒙跨平台直播| RN 三方库开源鸿蒙标准化适配实战分享
华为·开源·harmonyos·atomgit
梦梦代码精21 小时前
LikeShop 前后端架构升级对比总白皮书——从传统商城架构到高性能多端统一体系
docker·架构·开源
shujudang1 天前
深入数据架构选型:开源埋点系统 vs 企业级增长分析平台的工程与业务考量
架构·数据分析·开源
江湖有缘1 天前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
江华森1 天前
【玩转 AtomCode】源码编译与架构解析:深入理解开源 AI 编码代理的内核设计
架构·开源
SLD_Allen1 天前
阿里开源的安全沙箱解决方案 OpenSandbox
安全·开源·沙箱
广歌1 天前
我花了半年驯养AI Agent,崩溃经历全记录
人工智能·开源
RobinDevNotes1 天前
Langfuse:开源的大模型工程可观测平台
开源
zlinear数据采集卡2 天前
从0到1硬核拆解:工业级数据采集卡的隔离设计与Modbus通信实战
arm开发·单片机·嵌入式硬件·fpga开发·开源