注意:该镜像已弃用。自托管Sentry镜像已从DockerHub迁移至GitHub容器 registry,新镜像地址:[***]
Snuba是Sentry的存储服务,提供对事件的快速搜索、过滤和任意字段聚合能力,依赖ClickHouse作为存储后端和Redis进行缓存。
适用于Sentry自托管环境,用于存储、查询和分析事件数据,尤其适合需要高效处理大量事件并进行复杂聚合分析的场景。主要供Sentry开发和运维人员使用。
在~/.sentry/sentry.conf.py中添加/修改以下配置:
pythonSENTRY_SEARCH = 'sentry.search.snuba.EventsDatasetSnubaSearchBackend' SENTRY_TSDB = 'sentry.tsdb.redissnuba.RedisSnubaTSDB' SENTRY_EVENTSTREAM = 'sentry.eventstream.snuba.SnubaEventStream'
bashsentry devservices up
类似psql的ClickHouse命令行客户端:
bashdocker exec -it sentry_clickhouse clickhouse-client
数据存储在sentry_local表中,可通过以下命令检查数据量:
sqlselect count() from sentry_local;
Snuba开发需依赖以下服务:
CLICKHOUSE_HOST(默认localhost)访问REDIS_HOST(默认localhost)的6379端口访问快速启动依赖服务(需先配置Sentry):
bashsentry devservices up --exclude=snuba
bash# 创建并激活虚拟环境 mkvirtualenv snuba --python=python3.7 workon snuba # 安装依赖 make install-python-dependencies make install-librdkafka make setup-git # 启动API服务器 snuba api
Snuba默认在1218端口提供HTTP API,主要端点包括:
/:首页/dashboard:查询仪表板/query:ClickHouse查询端点/config:运行时配置控制台配置项位于settings.py,主要包括:
CLICKHOUSE_HOST:ClickHouse服务主机名(默认localhost)REDIS_HOST:Redis服务主机名(默认localhost)DATASET_MODE:数据集模式,"local"表示使用本地表而非分布式表bashpip install -e . make test
bashworkon snuba git checkout your-snuba-branch snuba api
bashworkon sentry git checkout master git pull sentry devservices up --exclude=snuba
bashUSE_SNUBA=1 make test-acceptance USE_SNUBA=1 make test-snuba make test-python # 注意:当前带USE_SNUBA标志时Python测试可能无法通过
通过/query端点提交JSON格式查询,示例:
json{ "project": [1, 2], "selected_columns": ["tags[environment]"], "aggregations": [ ["max", "received", "last_seen"] ], "conditions": [ ["tags[environment]", "=", "prod"] ], "from_date": "2011-07-01T19:54:15", "to_date": "2018-07-06T19:54:15", "granularity": 3600, "groupby": ["group_id", "time"], "having": [], "issues": [], "sample": 0.5 }
groupby字段不可同时使用(可能导致查询无效)[function, column, alias],如["max", "received", "last_seen"]。特殊函数如count()表示为["count()", null, "item_count"],topK类函数如["top5", "environment", "top_five_envs"]会生成topK(5)(environment) AS top_five_envs[column_name, operation, literal],支持操作符:>, <, >=, <=, =, !=, IN, NOT IN, IS NULL, IS NOT NULL, LIKE, NOT LIKE。条件间默认逻辑为AND,嵌套数组表示ORtime虚拟列分组(如3600表示按小时分组)group_id(按问题分组)和time(按时间分桶分组)使用group_id虚拟列按问题分组。由于事件可能合并到不同问题,需通过issues参数传入问题ID与事件primary_hash的映射关系,Snuba会自动展开映射进行过滤/分组。
支持两种标签查询方式:
已知标签名查询:使用tags[name]格式,如tags[environment],自动解析为对应标签值
json"conditions": [ ["tags[environment]", "=", "prod"], ["tags[custom_user_tag]", "IS NOT NULL"] ]
动态标签键/值查询:使用tags_key(标签名)或tags_value(标签值)虚拟列,会展开所有标签(包括非预设标签),每行对应一个标签
json// 查询值为"bar"的所有标签 "conditions": [ ["tags_value", "=", "bar"] ]
注意:使用
tags_key或tags_value时,计数对象是标签而非事件。例如10个事件各有10个标签,count()会返回100。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速