惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
H
Heimdal Security Blog
Jina AI
Jina AI
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
AWS News Blog
AWS News Blog
C
Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
Darknet – Hacking Tools, Hacker News & Cyber Security
The Hacker News
The Hacker News
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
S
Securelist
P
Privacy International News Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
博客园 - 叶小钗
J
Java Code Geeks
V
V2EX
博客园 - Franky
Spread Privacy
Spread Privacy
K
Kaspersky official blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
Latest news
Latest news
NISL@THU
NISL@THU
罗磊的独立博客
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
V
Visual Studio Blog

博客园 - 仙守

用audit审计去记录谁用了docker docker容器大小使用限制 docker容器的磁盘使用进行限额 sentry私有化部署: 在8c16g上降低资源使用 私有化部署sentry:卷备份及恢复 docker 保存所有镜像 私有化部署sentry:镜像构建 docker拉取代理脚本 vscode密钥从windows连接远程linux 基于docker构建es集群 在es中进行update+upsert milvus遍历查询全部数据 简单剖析qwen-agent回答是怎么获取tool的 一个中转代码,底层调用openai,上层模拟openai 一个小工具识别哪个docker占用gpu NLP之预训练语言模型BERT NLP之预训练语言模型GPT NLP之引言 [推荐系统]粗排之FSCD
私有化部署sentry: 获取dsn
仙守 · 2026-02-09 · via 博客园 - 仙守

私有化 Sentry 获取 DSN 与 Python Demo

Created: 2/9/2026 10:47
Updated: 2/9/2026 10:47
Exported: 2/9/2026 11:11

Prompt:

我私有化sentry后,该怎么完成一系列步骤拿到dsn,我想创建一个python 普通项目,想写如下代码import sentry_sdk sentry_sdk.init(     dsn="https://10.10.40.211:9000/cbcb5819cdb87e204712cd04aca77e9a",     # Add request headers and IP for users,     # see https://docs.sentry.io/platforms/python/data-management/data-collected/ for more info     send_default_pii=True, ) def main():   division_by_zero = 1 / 0 if **name** == "**main**":   main()  完成第一个demo的验证

Response:

私有化部署的 Sentry(self-hosted / on-premise)拿到 DSN 的完整流程如下,通常大部分人卡在「system.url-prefix」沒設好,導致 DSN 顯示空白或不正確。

步驟總覽(最常見做法)

  1. 確認 Sentry 服務已正常運行

    • 瀏覽器打開:http://10.10.40.211:9000(或你設定的 IP + 埠)
    • 第一次會要求你建立管理員帳號 → 完成註冊並登入
  2. 最重要:設定 system.url-prefix(幾乎所有人會漏)

    • 進入 Sentry 容器(假設你用官方 onpremise/docker-compose 方式部署)

      # 進到你 clone 下來的 onpremise 目錄
      cd /path/to/onpremise
      
      # 編輯 config.yml(如果還沒產生就先執行 ./install.sh)
      vim sentry/config.yml
      
    • 找到或新增這一行(一定要是外部可訪問的真實網址):

      system.url-prefix: "http://10.10.40.211:9000"
      # 或如果你有域名:  system.url-prefix: "https://sentry.yourcompany.com"
      # 注意:結尾不要加斜線 /
      
    • 修改後重啟全部服務:

      docker compose down
      docker compose up -d
      # 或只重啟 web 相關容器
      docker compose restart web worker cron
      

    這一步沒做,後面建立 project 時 DSN 欄位會是空的!

  3. 建立一個新 Project

    • 登入後,點左側選單 ProjectsCreate Project
    • 選擇平台 → Python(或 Python - Bottle / Django / Flask 都可以,先選 Python 通用即可)
    • 給 project 取名字(例如:my-python-demo)
    • Create Project
  4. 拿到 DSN

    • 建立完成後,畫面會直接顯示「Configure Python」頁面

    • 最上面就會看到 DSN,長得像:

      http://cbcb5819cdb87e204712cd04aca77e9a@10.10.40.211:9000/2
      

      https://cbcb5819cdb87e204712cd04aca77e9a@10.10.40.211:9000/2
      
    • 如果畫面沒顯示 DSN → 去這裡找:

      • 左側選單 → 點進你的 project
      • Settings(右上或側邊)→ Client Keys (DSN)
      • 通常會有一筆 default key,DSN 就寫在那裡
  5. 修正你提供的程式碼(你的 DSN 格式是錯的)

你的範例寫成:

dsn="https://10.10.40.211:9000/cbcb5819cdb87e204712cd04aca77e9a"

這是錯誤格式!自架 Sentry 的 DSN 幾乎都是以下兩種正確寫法之一:

  • 新版推薦(20.x 之後最常見):公钥在前,沒有 secret key

    dsn = "http://cbcb5819cdb87e204712cd04aca77e9a@10.10.40.211:9000/2"
    # 或 https 如果你有憑證
    
  • 舊版格式(有 public:secret):少數情況還看得到

    dsn = "http://public_key:secret_key@10.10.40.211:9000/2"
    

正確的 Python demo 程式碼應該長這樣:

import sentry_sdk

sentry_sdk.init(
    dsn="http://cbcb5819cdb87e204712cd04aca77e9a@10.10.40.211:9000/2",   # ← 改成你真正的 DSN
    send_default_pii=True,          # 送使用者 IP、request headers 等資訊
    traces_sample_rate=1.0,         # 正式環境建議調低,例如 0.2
    # 如果你要追 performance,可開啟下面這行
    # integrations=[sentry_sdk.integrations.tracing.TracingIntegration()],
)

def main():
    division_by_zero = 1 / 0      # 故意製造錯誤

if __name__ == "__main__":
    main()
  1. 驗證是否成功
    • 執行上面程式 → 應該會拋 ZeroDivisionError
    • 去 Sentry 網頁 → 進到你的 project → Issues
    • 幾秒~幾十秒內應該會出現一筆新的 issue,標題類似 ZeroDivisionError: division by zero

快速 checklist(如果還是看不到 DSN 或收不到事件)

  • config.yml 裡有正確的 system.url-prefix 嗎?(http://你的IP:9000
  • 重啟過服務了嗎?
  • 防火牆允許 9000 port 嗎?(尤其是內網 10.10.40.211)
  • DSN 裡面的 host 是 IP 還是域名?要跟 sdk 發送時能連通的一樣
  • 用 curl http://10.10.40.211:9000 看是否能正常回應 Sentry 頁面

照以上步驟做,99% 都能在 5 分鐘內看到第一筆錯誤事件。如果還是卡住,告訴我你看到什麼畫面(特別是建立 project 後的畫面),我再幫你判斷。

添加到聊天

Integrating Sentry with DjangoSentry vs ELK StackAdd HTTPS setup steps


Powered by Grok Exporter