系列

克隆仓库

分别克隆 getsentry/sentrygetsentry/snuba

git clone https://github.com/getsentry/sentry.git
git clone https://github.com/getsentry/snuba.git

安装系统依赖(以 Mac 为例)

Xcode CLI tools

xcode-select --install

Brewfile

进入 sentry 文件夹,你会看到一个 Brewfile 文件:

cd sentry

Brewfile

# required to run devservices
cask 'docker' brew 'pyenv' # required for pyenv's python-build
brew 'openssl'
brew 'readline' # required for yarn test -u
brew 'watchman' # required to build some of sentry's dependencies
brew 'pkgconfig'
brew 'libxslt'
brew 'libxmlsec1'
brew 'geoip' # Currently needed because on Big Sur there's no wheel for it
brew 'librdkafka' # direnv isn't defined here, because we have it configured to check for a bootstrapped environment.
# If it's installed in the early steps of the setup process, it just leads to confusion.
# brew 'direnv' tap 'homebrew/cask' # required for acceptance testing
cask 'chromedriver'

如果你本地已经安装了 Docker Desktop 并且已经启动,可以把 cask 'docker' 注释掉。

接下来,运行:

brew bundle --verbose

如果你之前本地没有 Docker Desktop,则还需要手动启动一下它:

open -g -a Docker.app

构建工具链

Sentry 依赖于 Python Wheels(包含二进制扩展模块的包),官方为以下平台分发:

  • Linux 兼容 PEP-513 (manylinux1)
  • macOS 10.15 或更高版本

如果您的开发机器没有运行上述系统之一,则需要安装 Rust 工具链。 按照 https://www.rust-lang.org/tools/install 上的说明安装编译器和相关工具。安装后,Sentry 安装程序将自动使用 Rust 构建所有二进制模块,无需额外配置。

官方通常会跟踪最新的稳定 Rust 版本,该版本每六周更新一次。 因此,请确保通过偶尔运行来使您的 Rust 工具链保持最新:

rustup update stable

Python

Sentry 使用 pyenv 来安装和管理 Python 版本。 它是在您运行 brew bundle 时安装的。

要安装所需版本的 Python,您需要运行以下命令。 这将需要一段时间,因为您的计算机实际上正在编译 Python

make setup-pyenv

这里假设你是 Zsh 用户。

如果您键入 which python,您应该看到类似 $HOME/.pyenv/shims/python 而不是 /usr/bin/python 的内容。这是因为以下内容已添加到您的启动脚本中:

cat ~/.zprofile,你会看到如下内容:

# MacPorts Installer addition on 2021-10-20_at_11:48:22: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts. # It is assumed that pyenv is installed via Brew, so this is all we need to do.
eval "$(pyenv init --path)"

虚拟环境

您现在已准备好创建 Python 虚拟环境。运行:

python -m venv .venv

并激活虚拟环境:

source .venv/bin/activate

如果一切正常,运行 which python 现在应该会导致类似 /Users/you/sentry/.venv/bin/python 的结果。

Snuba 配置实战

启动 Snuba 相关依赖项容器

cd ../sentry
git checkout master
git pull source .venv/bin/activate
sentry devservices up --exclude=snuba # 11:17:59 [WARNING] sentry.utils.geo: settings.GEOIP_PATH_MMDB not configured.
# 11:18:01 [INFO] sentry.plugins.github: apps-not-configured
# > Pulling image 'postgres:9.6-alpine'
# > Pulling image 'yandex/clickhouse-server:20.3.9.70'
# > Not starting container 'sentry_relay' because it should be started on-demand with devserver.
# > Creating 'sentry_redis' volume
# > Creating 'sentry_zookeeper_6' volume
# > Creating 'sentry_kafka_6' volume
# > Creating container 'sentry_redis'
# > Creating container 'sentry_zookeeper'
# > Creating container 'sentry_kafka'
# > Starting container 'sentry_redis' (listening: ('127.0.0.1', 6379))
# > Starting container 'sentry_kafka' (listening: ('127.0.0.1', 9092))
# > Starting container 'sentry_zookeeper'
# > Creating 'sentry_clickhouse' volume
# > Creating container 'sentry_clickhouse'
# > Creating 'sentry_postgres' volume
# > Creating 'sentry_wal2json' volume
# > Starting container 'sentry_clickhouse' (listening: ('127.0.0.1', 9000), ('127.0.0.1', 9009), ('127.0.0.1', 8123))
# > Creating container 'sentry_postgres'
# > Starting container 'sentry_postgres' (listening: ('127.0.0.1', 5432))

这将在 master 上获取最新版本的 Sentry,并调出所有 snuba 的依赖项。

Snuba 主要依赖 clickhousezookeeperkafkaredis 相关容器。

docker ps 查看一下:

1149a6f6ff23   postgres:9.6-alpine                  "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes   127.0.0.1:5432->5432/tcp                                                       sentry_postgres
a7f3af7d52bb yandex/clickhouse-server:20.3.9.70 "/entrypoint.sh" 3 minutes ago Up 3 minutes 127.0.0.1:8123->8123/tcp, 127.0.0.1:9000->9000/tcp, 127.0.0.1:9009->9009/tcp sentry_clickhouse
68913ee15c43 confluentinc/cp-zookeeper:6.2.0 "/etc/confluent/dock…" 3 minutes ago Up 3 minutes 2181/tcp, 2888/tcp, 3888/tcp sentry_zookeeper
5a248eb26ed3 confluentinc/cp-kafka:6.2.0 "/etc/confluent/dock…" 3 minutes ago Up 3 minutes 127.0.0.1:9092->9092/tcp sentry_kafka
0573aff7b5af redis:5.0-alpine "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 127.0.0.1:6379->6379/tcp sentry_redis

设置 Snuba 虚拟环境

cd snuba
make pyenv-setup
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip==21.1.3
make develop

查看迁移列表

snuba migrations list
# system
# [ ] 0001_migrations
#
# events
# [ ] 0001_events_initial
# [ ] 0002_events_onpremise_compatibility
# [ ] 0003_errors
# [ ] 0004_errors_onpremise_compatibility
# [ ] 0005_events_tags_hash_map (blocking)
# [ ] 0006_errors_tags_hash_map (blocking)
# [ ] 0007_groupedmessages
# [ ] 0008_groupassignees
# [ ] 0009_errors_add_http_fields
# [ ] 0010_groupedmessages_onpremise_compatibility (blocking)
# [ ] 0011_rebuild_errors
# [ ] 0012_errors_make_level_nullable
# [ ] 0013_errors_add_hierarchical_hashes
# [ ] 0014_backfill_errors (blocking)
# [ ] 0015_truncate_events
#
# transactions
# [ ] 0001_transactions
# [ ] 0002_transactions_onpremise_fix_orderby_and_partitionby (blocking)
# [ ] 0003_transactions_onpremise_fix_columns (blocking)
# [ ] 0004_transactions_add_tags_hash_map (blocking)
# [ ] 0005_transactions_add_measurements
# [ ] 0006_transactions_add_http_fields
# [ ] 0007_transactions_add_discover_cols
# [ ] 0008_transactions_add_timestamp_index
# [ ] 0009_transactions_fix_title_and_message
# [ ] 0010_transactions_nullable_trace_id
# [ ] 0011_transactions_add_span_op_breakdowns
# [ ] 0012_transactions_add_spans
#
# discover
# [ ] 0001_discover_merge_table
# [ ] 0002_discover_add_deleted_tags_hash_map
# [ ] 0003_discover_fix_user_column
# [ ] 0004_discover_fix_title_and_message
# [ ] 0005_discover_fix_transaction_name
# [ ] 0006_discover_add_trace_id
# [ ] 0007_discover_add_span_id
#
# outcomes
# [ ] 0001_outcomes
# [ ] 0002_outcomes_remove_size_and_bytes
# [ ] 0003_outcomes_add_category_and_quantity
# [ ] 0004_outcomes_matview_additions (blocking)
#
# metrics
# [ ] 0001_metrics_buckets
# [ ] 0002_metrics_sets
# [ ] 0003_counters_to_buckets
# [ ] 0004_metrics_counters
# [ ] 0005_metrics_distributions_buckets
# [ ] 0006_metrics_distributions
# [ ] 0007_metrics_sets_granularity_10
# [ ] 0008_metrics_counters_granularity_10
# [ ] 0009_metrics_distributions_granularity_10
# [ ] 0010_metrics_sets_granularity_1h
# [ ] 0011_metrics_counters_granularity_1h
# [ ] 0012_metrics_distributions_granularity_1h
# [ ] 0013_metrics_sets_granularity_1d
# [ ] 0014_metrics_counters_granularity_1d
# [ ] 0015_metrics_distributions_granularity_1d
#
# sessions
# [ ] 0001_sessions
# [ ] 0002_sessions_aggregates
# [ ] 0003_sessions_matview

运行迁移

snuba migrations migrate --force
# ......
# 2021-12-01 19:45:57,557 Running migration: 0014_metrics_counters_granularity_1d
# 2021-12-01 19:45:57,575 Finished: 0014_metrics_counters_granularity_1d
# 2021-12-01 19:45:57,589 Running migration: 0015_metrics_distributions_granularity_1d
# 2021-12-01 19:45:57,610 Finished: 0015_metrics_distributions_granularity_1d
# 2021-12-01 19:45:57,623 Running migration: 0001_sessions
# 2021-12-01 19:45:57,656 Finished: 0001_sessions
# 2021-12-01 19:45:57,669 Running migration: 0002_sessions_aggregates
# 2021-12-01 19:45:57,770 Finished: 0002_sessions_aggregates
# 2021-12-01 19:45:57,792 Running migration: 0003_sessions_matview
# 2021-12-01 19:45:57,849 Finished: 0003_sessions_matview
# Finished running migrations

检查迁移

进入 Clickhouse 容器:

docker exec -it sentry_clickhouse clickhouse-client
# 运行如下 `sql` 语句:
select count() from sentry_local # ClickHouse client version 20.3.9.70 (official build).
# Connecting to localhost:9000 as user default.
# Connected to ClickHouse server version 20.3.9 revision 54433. # a7f3af7d52bb :) select count() from sentry_local # SELECT count()
# FROM sentry_local # ┌─count()─┐
# │ 0 │
# └─────────┘ # 1 rows in set. Elapsed: 0.008 sec. # a7f3af7d52bb :)

查看相关实体数据集

snuba entities list

# Declared Entities:
# discover
# events
# groups
# groupassignee
# groupedmessage
# metrics_sets
# metrics_counters
# metrics_distributions
# outcomes
# outcomes_raw
# sessions
# org_sessions
# spans
# transactions
# discover_transactions
# discover_events

启动开发服务器

此命令将启动 api 和所有 Snuba 消费者以从 Kafka 摄取数据:

snuba devserver

转到 http://localhost:1218/events/snql,你将会看到一个简易的查询 UI

Sentry 监控 - Snuba 数据中台本地开发环境配置实战的更多相关文章

  1. Sentry 监控 - Snuba 数据中台架构(编写和测试 Snuba 查询)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  2. Sentry 监控 - Snuba 数据中台架构(Data Model 简介)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  3. Sentry 监控 - Snuba 数据中台架构(Query Processing 简介)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  4. Sentry 监控 - Snuba 数据中台架构(SnQL 查询语言简介)

    本文描述了 Snuba 查询语言 (SnQL). 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒 ...

  5. Sentry 监控 - Snuba 数据中台架构简介(Kafka+Clickhouse)

    系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...

  6. UPUPW Apache5.5系列本地开发环境配置

    UPUPW Apache5.5系列 1. 在官网下载 Apache5.5系列,选择云端下载. 官网地址: http://www.upupw.net/aphp55/n110.html 2. 下载后,将压 ...

  7. IIS+PHP本地开发环境配置

    打开Win7系统自带IIS.如图只要点击两下,CGI一定要勾选上!完成后打开浏览器输入127.0.0.1测试一下,如果能打开页面说明iis开启成功. 安装PHP.不同版本的PHP会有所不同,这里使用的 ...

  8. OpenShift 本地开发环境配置(基于 Minishift)

    本文要做什么? 很多为了验证应用在 OpenShift 平台的行为是否正常,或者组成一个简单的开发环境,直接搭建一个 OpenShift/Origin 环境可能太重了,而且运行在本机可能占用内存也太多 ...

  9. vue-router History 本地开发环境和nginx配置

    vue-router mode=history本地开发环境配置 解决方法1.修改webpack的的devServer配置项(devServe存在于,rvue-cli2在webapck.config.j ...

随机推荐

  1. Linux——Docker安装

    1. 安装Docker i :环境准备:Linux要求内核3.0以上 ii:安装 #1.卸载旧版本 yum remove docker \ docker-client \ docker-client- ...

  2. 初识HTML01

    什么是页面? 页面是基于浏览器的应用程序 页面是数据展示的载体,由浏览器和服务器共同执行产物. 浏览器的功能 向服务器发送用户请求指令 接收并解析数据展示给用户 服务器的功能 存储页面资源 处理并响应 ...

  3. [敏捷软工团队博客]Beta阶段使用指南

    软件工程教学实践平台使用指南 项目地址:http://20.185.223.195:8000/ 项目团队:the agiles 进入界面如图: 目录 软件工程教学实践平台使用指南 学生端 登录 iss ...

  4. [技术博客] 通过ItemTouchHelper实现侧滑删除功能

    通过ItemTouchHelper实现侧滑删除功能 一.效果 二.具体实现 demo中演示的这种左滑删除的效果在手机APP中比较常用,安卓也为我们提供了专门的辅助类ItemTouchHelper来帮助 ...

  5. 基于docker-compose搭建sonarqube代码质量检测平台

    一.需求 在我们开发的过程中,难免有时候代码写的不规范,或存在一些静态的bug问题,这个时候一个良好的代码检查工具就很有必要,而sonarqube正好可以满足整个要求. 二. docker-compo ...

  6. rabbitmq生产者消息确认

    在使用 RabbitMQ 的时候,有时候当我们生产者发送一条消息到 RabbitMQ 服务器后,我们 生产者想知道消息是否到达了 RabbitMQ 服务器上.这个时候我们应该如何处理? 针对上述问题, ...

  7. 8M的摄像头,30fps摄像时,60hz的LCD刷新频率,请问camera每秒向BB传输多少数据,如何计算

    8M的摄像头,30fps摄像时,60hz的LCD刷新频率,请问camera每秒向BB传输多少数据,如何计算 xiang2012 Post at 2012/8/7 10:37:33 8M的摄像头,30f ...

  8. 小白学习C语言必背的18个经典程序

    1./*输出9*9口诀.共9行9列,i控制行,j控制列.*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10 ...

  9. 要想玩转FPGA,按这4个步骤来

    FPGA 作为一种高新技术,由于其结构的特殊性,可以重复编程,开发周期较短,越来越受到电子爱好者的青睐,其应用已经逐渐普及到了各行各业.因此,越来越多的学生或工程师都希望跨进FPGA的大门掌握这门技术 ...

  10. IDEA插件开发,我是如何把公司的发布系统搬到IDEA里的

    不得不说JetBrains公司直的非常的牛B,每一个程序员都能在JetBrains的官方网站找到一款属于自己的开发工具.这些开发工具在工作中给我们带来了巨大的便利.各种各样的基础插件,第三方插件,真是 ...