成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Sentry 監(jiān)控-私有 Docker Compose 部署與故障排除詳解

安全 應(yīng)用安全
除了公開(kāi)提供其源代碼外,Sentry 還提供并維護(hù)了一個(gè)最小的設(shè)置,可以為簡(jiǎn)單的用例開(kāi)箱即用。該存儲(chǔ)庫(kù)還可以作為各種 Sentry 服務(wù)如何連接以進(jìn)行完整設(shè)置的藍(lán)圖,這對(duì)于愿意維護(hù)更大安裝的人很有用。

[[440208]]

本文轉(zhuǎn)載自微信公眾號(hào)「黑客下午茶」,作者為少 。轉(zhuǎn)載本文請(qǐng)聯(lián)系黑客下午茶公眾號(hào)。

自托管 Sentry

除了公開(kāi)提供其源代碼外,Sentry 還提供并維護(hù)了一個(gè)最小的設(shè)置,可以為簡(jiǎn)單的用例開(kāi)箱即用。該存儲(chǔ)庫(kù)還可以作為各種 Sentry 服務(wù)如何連接以進(jìn)行完整設(shè)置的藍(lán)圖,這對(duì)于愿意維護(hù)更大安裝的人很有用。為簡(jiǎn)單起見(jiàn),我們?yōu)榇诉x擇使用 Docker 和 Docker Compose, 以及基于 bash 的安裝和升級(jí)腳本。

入門(mén)

我們的建議是下載自托管存儲(chǔ)庫(kù)的最新版本, 然后在此目錄中運(yùn)行 ./install.sh。這個(gè)腳本會(huì)處理你開(kāi)始需要的所有事情,包括一個(gè) base-line 配置, 然后會(huì)告訴你運(yùn)行 docker-compose up -d 來(lái)啟動(dòng) Sentry。 Sentry 默認(rèn)綁定到端口 9000。您應(yīng)該能夠訪問(wèn) http://127.0.0.1:9000 上的登錄頁(yè)面。

https://github.com/getsentry/self-hosted/releases/latest

配置

您很可能希望調(diào)整 Sentry 的默認(rèn)配置。這些設(shè)施可用于此目的:

sentry/config.yml — 包含大多數(shù)(如果不是全部)要調(diào)整的配置選項(xiàng)。這個(gè)文件是在安裝時(shí)從 sentry/config.example.yml 生成的。該文件本身將最常見(jiàn)的配置選項(xiàng)記錄為代碼注釋。此文件中的一些常用設(shè)置包括:

  • system.url-prefix(我們會(huì)在安裝后立即提示您在歡迎屏幕上進(jìn)行設(shè)置)
  • mail.*(雖然我們提供了一個(gè)基本的 SMTP 服務(wù)器)
  • GitHub、Slack 等的集成。

sentry/sentry.conf.py—包含更高級(jí)的配置。這個(gè)文件是在安裝過(guò)程中從 sentry/sentry.conf.example.py 生成的。

  • https://github.com/getsentry/self-hosted/blob/master/sentry/sentry.conf.example.py

環(huán)境變量—可用的 key 在 .env 中定義。如果您需要覆蓋任何環(huán)境變量,請(qǐng)使用一些與系統(tǒng)相關(guān)的方法來(lái)設(shè)置環(huán)境變量。為避免 Git 更改,只需創(chuàng)建一個(gè)名為 .env.custom 的文件并在其中插入與系統(tǒng)相關(guān)的環(huán)境變量。為了使用它,請(qǐng)使用 docker-compose --env-file /path/to/.env.custom up -d。

Geolocation 使用自定義配置文件來(lái)符合底層技術(shù)。

注意:更改配置后,您需要通過(guò)運(yùn)行 docker-compose restart web worker cron sentry-cleanup(或僅 docker-compose restart 重新啟動(dòng)所有內(nèi)容)來(lái)重新啟動(dòng)所有 Sentry 服務(wù)。

配置特定主題

以下是與自托管相關(guān)的特定配置主題的更多信息:

  • 自定義 CA 根
  • Email
  • 地理位置
  • 單點(diǎn)登錄 (SSO)

產(chǎn)品化

我們強(qiáng)烈建議在綁定到專(zhuān)用域或子域的 Sentry 設(shè)置前使用專(zhuān)用負(fù)載均衡器。一個(gè)執(zhí)行 SSL/TLS 終止的專(zhuān)用負(fù)載平衡器也將客戶(hù)端 IP 地址轉(zhuǎn)發(fā)為 Docker Compose 內(nèi)部網(wǎng)絡(luò) (因?yàn)檫@幾乎不可能以其他方式獲得)將為您提供最佳的 Sentry 體驗(yàn)。作為此設(shè)置的一部分,我們建議使用 HTTP 協(xié)議針對(duì) /_health/ 端點(diǎn)配置負(fù)載均衡器運(yùn)行狀況檢查。如果 Sentry 啟動(dòng),這將返回 200 或帶有問(wèn)題列表的 500。

請(qǐng)記住,所有這些設(shè)置都對(duì)所有服務(wù)使用單節(jié)點(diǎn),包括 Kafka。對(duì)于更大的負(fù)載,您需要一臺(tái)具有大量 RAM 和磁盤(pán)存儲(chǔ)空間的強(qiáng)大機(jī)器。為了進(jìn)一步擴(kuò)展,您很可能會(huì)使用帶有更復(fù)雜工具(例如 Kubernetes)的集群。由于自托管安裝的自定義性質(zhì),我們不提供任何有關(guān)擴(kuò)展的建議或指導(dǎo)。

https://github.com/getsentry/self-hosted/issues/554

自托管發(fā)布和升級(jí)

Sentry 減少了自托管的定期發(fā)布,以使其盡可能接近 sentry.io。我們決定遵循使用 CalVer 版本控制方案的月度發(fā)布計(jì)劃。 每個(gè)月的 15 號(hào)發(fā)布一個(gè)新版本,并在必要時(shí)進(jìn)行后續(xù)發(fā)布。您可以在我們自托管存儲(chǔ)庫(kù)的發(fā)布部分 找到最新版本。

  • https://calver.org/#scheme
  • https://github.com/getsentry/self-hosted/releases

為什么選擇 CalVer?

  • 簡(jiǎn)而言之,這是為了讓自托管的 Sentry 與在 sentry.io 托管的實(shí)時(shí)版本接近。在我們宣布切換的博客文章中,有更多細(xì)節(jié)可供參考。
    • https://blog.sentry.io/2020/06/22/self-hosted-sentry-switching-to-calver
  • CalVer 針對(duì)持續(xù)部署進(jìn)行了優(yōu)化,而非長(zhǎng)期穩(wěn)定性。我們建議您定期升級(jí),就像我們?cè)?SaaS 環(huán)境中所做的那樣。

升級(jí)

我們鼓勵(lì)每個(gè)人定期更新他們的 Sentry 安裝以獲得最佳和最新的 Sentry 體驗(yàn)。

要升級(jí),您需要做的就是下載或檢查您想要的自托管存儲(chǔ)庫(kù)的版本,用該版本替換現(xiàn)有文件夾的內(nèi)容,然后運(yùn)行 ./install.sh。

配置更新

我們可能有一些更新的配置,特別是對(duì)于新功能,因此請(qǐng)始終檢查 sentry 目錄下的示例配置文件,看看是否需要更新現(xiàn)有配置。我們盡最大努力自動(dòng)化關(guān)鍵配置更新,但您應(yīng)該始終在升級(jí)期間檢查您的配置。

在開(kāi)始升級(jí)之前,我們關(guān)閉了所有服務(wù),然后運(yùn)行了一些數(shù)據(jù)遷移,因此預(yù)計(jì)會(huì)有一些停機(jī)時(shí)間。有一個(gè)實(shí)驗(yàn)性的 --minimize-downtime 選項(xiàng)可以減少升級(jí)期間的停機(jī)時(shí)間。使用它的風(fēng)險(xiǎn)由您自己承擔(dān),并查看它在其中實(shí)施的PR以獲取更多信息。

  • https://github.com/getsentry/self-hosted/issues/607

從早期版本升級(jí)時(shí),您需要經(jīng)歷一些困難。請(qǐng)閱讀下面的 難點(diǎn) 部分以獲取列表。

難點(diǎn)

我們有三個(gè)難點(diǎn),您需要通過(guò)這些步驟才能獲取重大的數(shù)據(jù)庫(kù)更改:

如果您來(lái)自 9.1.2 之前的版本,則首先需要升級(jí)到 9.1.2 并按照以下步驟操作:

  1. <your.sentry.version> -> 9.1.2 -> 21.5.0 -> 21.6.3 -> latest 

如果您來(lái)自 9.1.2,首先需要升級(jí)到 21.5.0 并按照以下步驟操作:

  1. <your.sentry.version> -> 21.5.0 -> 21.6.3 -> latest 

如果您來(lái)自 21.6.3 之前的版本,則首先需要升級(jí)到 21.6.3:

  1. <your.sentry.version> -> 21.6.3 -> latest 

任何其他情況(21.6.3+),你應(yīng)該可以直接升級(jí)到最新版本。

每晚構(gòu)建

我們?yōu)?Sentry 的每個(gè)新提交以及所有支持項(xiàng)目提供自托管存儲(chǔ)庫(kù)的 master 分支的每晚構(gòu)建:

  • Snuba

https://github.com/getsentry/snuba

  • Relay

https://github.com/getsentry/relay

  • Symbolicator

https://github.com/getsentry/symbolicator

注意:這些構(gòu)建通常是穩(wěn)定的,但您可能偶爾會(huì)遇到損壞的版本,因?yàn)檫@些版本不能保證首先部署到 sentry.io。也不能保證您能夠干凈地升級(jí)到更高版本而不會(huì)丟失任何數(shù)據(jù)。使用每晚構(gòu)建的風(fēng)險(xiǎn)自負(fù)。

自托管備份和恢復(fù)

快速備份

如果您需要一種快速備份和恢復(fù) Sentry 實(shí)例的方法,并且不需要?dú)v史事件數(shù)據(jù), 則可以使用內(nèi)置的 export 和 import 命令。這些命令將保存和加載所有項(xiàng)目和用戶(hù)數(shù)據(jù),但不包含任何事件數(shù)據(jù)。

備份

  1. docker-compose run --rm -T -e SENTRY_LOG_LEVEL=CRITICAL web export > sentry/backup.json 

注意:如果您省略了 -T 或 -e SENTRY_LOG_LEVEL=CRITICAL 部分,您的備份文件將混入日志行,您必須以某種方式將其刪除。

恢復(fù)

使用 export 命令備份后,恢復(fù)它的最簡(jiǎn)單方法是將其放在主 self-hosted 存儲(chǔ)庫(kù)中的 sentry 目錄下,在配置文件旁邊。這個(gè)目錄會(huì)自動(dòng)掛載到 /etc/sentry,所以你可以運(yùn)行以下命令來(lái)恢復(fù)你的備份:

  1. docker-compose run --rm -T web import /etc/sentry/backup.json 

如果您沒(méi)有看到任何錯(cuò)誤并且進(jìn)程以代碼 0 退出,那么恭喜您,您剛剛恢復(fù)了備份。

注意:我們強(qiáng)烈建議您在全新安裝(空數(shù)據(jù)庫(kù)但運(yùn)行遷移)時(shí)在 相同版本的 Sentry 上恢復(fù)備份。否則,您很可能會(huì)遇到錯(cuò)誤并可能損壞您的數(shù)據(jù)庫(kù)。

完整備份

備份和恢復(fù) Sentry 的理想方法是備份和恢復(fù)它使用的所有 Docker 卷。所有保存關(guān)鍵長(zhǎng)期數(shù)據(jù)的卷在安裝時(shí)都已定義為全局卷,并以 sentry- 為前綴:

  • sentry-data
  • sentry-postgres
  • sentry-redis
  • sentry-zookeeper
  • sentry-kafka
  • sentry-clickhouse
  • sentry-symbolicator

注意:只有備份和恢復(fù)這些卷才能恢復(fù)所有持久化數(shù)據(jù)。如果您還需要備份運(yùn)行中的數(shù)據(jù),我們建議備份 docker-compose 自動(dòng)創(chuàng)建的任何特定于項(xiàng)目的卷,通常使用 sentry_self_hosted_sentry- 前綴。

Docker 在他們的文檔中記錄了如何備份和恢復(fù)卷。只要可以毫無(wú)問(wèn)題地讀回卷,您就可以使用不同的方法。

https://docs.docker.com/storage/volumes/#backup-restore-or-migrate-data-volumes

自托管的自定義 CA 根

從 Sentry 21.8.0 開(kāi)始,如果您需要沒(méi)有來(lái)自公共信任 CA 根的 TLS 證書(shū)的 Sentry 訪問(wèn)服務(wù),現(xiàn)在可以輕松地將它們添加到容器中。只需將證書(shū)添加到 Sentry 安裝根目錄內(nèi)的 certificates 文件夾中,然后重新啟動(dòng)容器。除了公共信任的 CA 根之外,還將使用您的自定義 CA 根。

注意:雖然您可以在每個(gè)容器中運(yùn)行 update-ca-certificates,但這將更新磁盤(pán)上系統(tǒng)的根包,但不會(huì)對(duì)內(nèi)存中的任何副本執(zhí)行任何操作。重新啟動(dòng)容器將更新包并確保它被使用。

如果給定的證書(shū)有問(wèn)題,容器的日志將在開(kāi)始時(shí)具有 update-ca-certificates 的輸出。

  • https://manpages.debian.org/buster/ca-certificates/update-ca-certificates.8.en.html

具有捆綁根的依賴(lài)項(xiàng)

一些依賴(lài)項(xiàng)選擇捆綁自己的 CA 根并忽略系統(tǒng) CA 根。在已知的情況下,它們已被配置為使用系統(tǒng)根。如果某些東西似乎忽略了系統(tǒng)根,請(qǐng)創(chuàng)建一個(gè) issue, 以便對(duì)其進(jìn)行跟蹤和修復(fù)。

  • https://github.com/getsentry/self-hosted/issues/new?template=problem-report.yml

覆蓋的捆綁根

  • Python
    • requests
    • botocore
    • grpc

自托管 Email

注意:請(qǐng)記住,一旦更改設(shè)置,您就需要重新啟動(dòng)所有 Sentry 服務(wù)。有關(guān)更多信息,請(qǐng)參閱配置部分。

出站 Email

自托管 Sentry 附帶一個(gè)由 exim4 提供支持的內(nèi)置外發(fā) SMTP server。默認(rèn)配置設(shè)置為使用此服務(wù)器。您需要做的就是為 config.yml 中的 mail.from 設(shè)置設(shè)置一個(gè)有效地址, 并為 .env 中的 SENTRY_MAIL_HOST 設(shè)置 Sentry 實(shí)例的 FQDN。請(qǐng)記住,如果您開(kāi)始向公共地址發(fā)送過(guò)多電子郵件,您的新服務(wù)器可能會(huì)被標(biāo)記為垃圾郵件發(fā)送者并被禁止。

  • https://hub.docker.com/r/tianon/exim4
  • https://en.wikipedia.org/wiki/Fully_qualified_domain_name

如果您想使用外部 SMTP server,您可以在 config.yml 文件中設(shè)置相關(guān)的 mail.* 設(shè)置并忽略?xún)?nèi)置的 SMTP server。有關(guān)每個(gè)設(shè)置的含義和作用的所有詳細(xì)信息,請(qǐng)參閱我們的電子郵件服務(wù)文檔。

由于配置的分層方式,如果您通過(guò) Web 界面更新 mail 設(shè)置,您還需要注釋掉 config.yml 中的 mail.host: 'smtp' 默認(rèn)值,以便選擇所需的設(shè)置。

入站 Email

Sentry 通過(guò) Mailgun 提供的入站 mail 支持非常有限。您可以在我們的入站 email 服務(wù)文檔中找到有關(guān)如何進(jìn)行設(shè)置的所有信息。

https://documentation.mailgun.com/en/latest/quickstart-receiving.html

自托管地理定位

Sentry 可以使用 MaxMind 的免費(fèi) GeoLite2-City 數(shù)據(jù)庫(kù)來(lái)對(duì) IP 地址進(jìn)行地理定位, 為已知最終用戶(hù) IP 地址的錯(cuò)誤事件以及登錄 Sentry 安裝的用戶(hù)的會(huì)話(huà)歷史記錄提供額外的上下文。為此,我們捆綁了 MaxMind 的 geoipupdate 工具。

  • https://dev.maxmind.com/geoip/geoip2/geolite2/
  • https://hub.docker.com/r/maxmindinc/geoipupdate

為了利用服務(wù)器端 IP 地址地理定位,您必須首先將 IP 地址發(fā)送到 Sentry。 默認(rèn)情況下,較新的 SDK 不會(huì)執(zhí)行此操作。

  • https://docs.sentry.io/platforms/python/data-management/sensitive-data/#personally-identifiable-information-pii

要啟用服務(wù)器端 IP 地址地理定位,請(qǐng)注冊(cè)一個(gè)免費(fèi)的 MaxMind 帳戶(hù), 然后通過(guò)將您的 MaxMind 配置文件放在 geoip/GeoIP.conf 來(lái)告訴 Sentry 您的憑據(jù)。

  • https://www.maxmind.com/en/geolite2/signup
  1. AccountID 012345 
  2.  
  3. LicenseKey foobarbazbuz 
  4.  
  5. EditionIDs GeoLite2-City 

有了這個(gè)配置文件,Sentry 的 install.sh 的后續(xù)運(yùn)行將刷新 IP 地址地理定位數(shù)據(jù)庫(kù)。下次您重新啟動(dòng)自托管的 Sentry 實(shí)例(特別是 relay 和 web 服務(wù))時(shí),您應(yīng)該會(huì)看到最新的數(shù)據(jù)。以下是確認(rèn)它是否正常工作的方法:

  • 對(duì)于 relay 服務(wù):Dashboards > Errors by Country 上應(yīng)該有一些紫色。
  • 對(duì)于 web 服務(wù):User Settings > Security > Session History 應(yīng)在表中的 IP 地址下方顯示國(guó)家代碼和地區(qū)(例如,"US (CA)")。

啟動(dòng)后不久看到 sentry_self_hosted_geoipupdate_1 容器退出是正常的,因?yàn)楦碌乩矶ㄎ粩?shù)據(jù)庫(kù)是一次性的批處理過(guò)程,而不是長(zhǎng)時(shí)間運(yùn)行的 job。

升級(jí)

使用 GeoLite2-City.mmdb 文件的服務(wù)需要知道在哪里可以找到它。新安裝將自動(dòng)設(shè)置此設(shè)置,但如果您要升級(jí),則需要在重新啟動(dòng) Sentry 之前手動(dòng)設(shè)置以下內(nèi)容。

在 relay/config.yml 中(示例):

  • https://github.com/getsentry/self-hosted/blob/master/relay/config.example.yml
  1. processing: 
  2.   geoip_path: "/geoip/GeoLite2-City.mmdb" 

在 sentry/sentry.conf.py 中(示例):

  • https://github.com/getsentry/self-hosted/blob/master/sentry/sentry.conf.example.py
  1. GEOIP_PATH_MMDB = '/geoip/GeoLite2-City.mmdb' 

自托管單點(diǎn)登錄 (SSO)

Sentry 中的 SSO 以?xún)煞N方式之一處理:

  • 通過(guò)處理上游代理的中間件來(lái)指示經(jīng)過(guò)身份驗(yàn)證的用戶(hù)
  • 通過(guò)實(shí)現(xiàn)身份驗(yàn)證管道的第三方服務(wù)

使用中間件代理 (SAML2)

從 Sentry 20.6.0 開(kāi)始,自托管 Sentry 內(nèi)置了對(duì) SAML2 和某些身份驗(yàn)證提供程序的支持。對(duì)于舊版本,您需要在運(yùn)行 ./install.sh 之前將以下行添加到 sentry/requirements.txt:

  • https://github.com/getsentry/self-hosted/blob/10.0.1/sentry/requirements.example.txt
  1. sentry-auth-saml2@https://github.com/getsentry/sentry-auth-saml2/archive/master.zip#egg=sentry-auth-saml2 

您可以設(shè)置它的方式與 sentry.io 相同,除了您需要為文檔中提到的 URL 使用自己實(shí)例的 url-prefix。

  • https://develop.sentry.dev/config/#general

有關(guān)所有詳細(xì)信息,請(qǐng)參閱我們的主要 SAML 文檔。

  • https://docs.sentry.io/accounts/sso/#saml2-identity-provider

使用 OAuth 的單點(diǎn)登錄

注意:?jiǎn)⒂?SSO 后,這將是登錄到自托管實(shí)例的唯一方法。如果您需要與 SSO 一起免費(fèi)注冊(cè),您可以在 GitHub PR 上對(duì)此發(fā)表評(píng)論。

  • https://github.com/getsentry/sentry/pull/16247

Google Auth

從 Sentry 9.1 開(kāi)始,自托管的 Sentry 帶有內(nèi)置的 Google Auth 支持。要啟用,您需要為您的 Google App 創(chuàng)建一個(gè) client ID 和 secret, 然后將這些值分別輸入到您的 sentry/config.yaml 文件中:

  1. auth-google.client-id: '<client id>' 
  2. auth-google.client-secret: '<client secret>' 

注意:請(qǐng)記住,一旦更改設(shè)置,您就需要重新啟動(dòng)所有 Sentry 服務(wù)。有關(guān)更多信息,請(qǐng)參閱配置部分。

  • https://developers.google.com/identity/sign-in/web/server-side-flow#step_1_create_a_client_id_and_client_secret
  • https://github.com/getsentry/self-hosted/blob/master/sentry/config.example.yml

GitHub Auth

從 Sentry 10 開(kāi)始, 自托管 Sentry 帶有內(nèi)置的 GitHub Auth 支持。要啟用,您需要在您的組織下創(chuàng)建一個(gè)新的 GitHub App 并安裝它。

為 SSO & integration 創(chuàng)建 GitHub App

GitHub App 名稱(chēng)不得包含任何空格。

如果上面的表單對(duì)您不起作用,您需要為您的 GitHub 應(yīng)用程序進(jìn)行以下設(shè)置:

Setting Value
Homepage URL ${urlPrefix}
User authorization callback URL ${urlPrefix}/auth/sso/
Setup URL (optional) ${urlPrefix}/extensions/github/setup/
Webhook URL ${urlPrefix}/extensions/github/webhook/

不要忘記將所有出現(xiàn)的 {'${urlPrefix}'} 替換為您自己的 url 前綴。

當(dāng)提示輸入權(quán)限時(shí),請(qǐng)選擇以下選項(xiàng):

Permission Setting
Organization permissions / members Read-only
User permissions / Email addresses Read-only
Repository administration Read-only
Repository contents Read-only
Issues Read & write
Pull requests Read & write
Repository webhooks Read & write

使用您的 GitHub App 信息更新您的配置

然后,您需要設(shè)置以下配置值:

在 sentry/sentry.conf.py 中

  1. GITHUB_APP_ID="<App ID>" 
  2. GITHUB_API_SECRET="<Client secret>" 
  3. GITHUB_REQUIRE_VERIFIED_EMAIL = True  # Optional but recommended 
  4.  
  5. Only if you are using GitHub Enterprise 
  6. #GITHUB_BASE_DOMAIN = "git.example.com" 
  7. #GITHUB_API_DOMAIN = "api.git.example.com" 

在 sentry/config.yaml 中

  1. # github-app.id: <App ID> 
  2. # github-app.name'<GitHub App name>' 
  3. # github-app.webhook-secret: '<Webhook secret>' # Use only if configured in GitHub 
  4. # github-app.client-id: '<Client ID>' 
  5. # github-app.client-secret: '<Client secret>' 
  6. # github-app.private-key: | 
  7. #   -----BEGIN RSA PRIVATE KEY----- 
  8. #   privatekeyprivatekeyprivatekeyprivatekey 
  9. #   privatekeyprivatekeyprivatekeyprivatekey 
  10. #   privatekeyprivatekeyprivatekeyprivatekey 
  11. #   privatekeyprivatekeyprivatekeyprivatekey 
  12. #   privatekeyprivatekeyprivatekeyprivatekey 
  13. #   -----END RSA PRIVATE KEY----- 

這還將為您的實(shí)例啟用 GitHub Integration。

注意:請(qǐng)記住,一旦更改設(shè)置,您就需要重新啟動(dòng)所有 Sentry 服務(wù)。有關(guān)更多信息,請(qǐng)參閱配置部分。

自定義 Provider

目前,API 被認(rèn)為是不穩(wěn)定的,可能會(huì)發(fā)生變化。事情可能不會(huì)有太大變化,但有一些地方需要清理。

考慮到這一點(diǎn),如果您想構(gòu)建自己的,請(qǐng)查看上面的參考實(shí)現(xiàn)之一。

  • https://github.com/getsentry/sentry/tree/master/src/sentry/auth/providers

自托管故障排除

請(qǐng)記住,自托管存儲(chǔ)庫(kù)面向中低負(fù)載,并考慮到了簡(jiǎn)單性。需要更大設(shè)置或有事件高峰的人們可以根據(jù)他們的特定需求和環(huán)境從這里擴(kuò)展。

  • https://github.com/getsentry/self-hosted

常見(jiàn)

您可以通過(guò)運(yùn)行 docker-compose logs 來(lái)查看每個(gè)服務(wù)的日志。您可以使用 -f 標(biāo)志來(lái) "follow" 進(jìn)入的日志,并使用 -t 標(biāo)志作為時(shí)間戳。如果您不傳遞任何服務(wù)名稱(chēng),您將獲得所有正在運(yùn)行的服務(wù)的日志。有關(guān)詳細(xì)信息,請(qǐng)參閱 logs 命令的參考。

  • https://docs.docker.com/compose/reference/logs/

Kafka

最有可能導(dǎo)致問(wèn)題的事情之一是 Kafka。最常報(bào)告的錯(cuò)誤是

  1. Exception: KafkaError{code=OFFSET_OUT_OF_RANGE,val=1,str="Broker: Offset out of range"

這發(fā)生在 Kafka 和 consumer 不同步的地方。可能的原因有:

  • 磁盤(pán)空間或內(nèi)存不足
  • 持續(xù)的事件峰值會(huì)導(dǎo)致很長(zhǎng)的處理時(shí)間,導(dǎo)致 Kafka 在超過(guò)保留時(shí)間時(shí)丟棄消息
  • 由于重新啟動(dòng)或 suspend/resume(暫停/恢復(fù)) 循環(huán)導(dǎo)致的 Date/time(日期/時(shí)間) 不同步問(wèn)題

恢復(fù)

正確的解決方案

正確 的解決方案如下 (reported by @rmisyurev):

接收消費(fèi)者列表:

  1. docker-compose run --rm kafka kafka-consumer-groups --bootstrap-server kafka:9092 --list 

獲取群組信息:

  1. docker-compose run --rm kafka kafka-consumer-groups --bootstrap-server kafka:9092 --group snuba-consumers -describe 

使用試運(yùn)行(可選)觀察 offset 會(huì)發(fā)生什么:

  1. docker-compose run --rm kafka kafka-consumer-groups --bootstrap-server kafka:9092 --group snuba-consumers --topic events --reset-offsets --to-latest --dry-run 

將 offset 設(shè)置為最新并執(zhí)行:

  1. docker-compose run --rm kafka kafka-consumer-groups --bootstrap-server kafka:9092 --group snuba-consumers --topic events --reset-offsets --to-latest --execute 

您可以在需要時(shí)將 snuba-consumers 替換為其他 consumer groups 或其他 topics 的 events。

  • https://github.com/getsentry/self-hosted/issues/478#issuecomment-666254392

硬核選項(xiàng)

硬核選項(xiàng) 是刪除所有與 Kafka 相關(guān)的卷并重新創(chuàng)建它們,這將導(dǎo)致數(shù)據(jù)丟失。刪除這些卷后,任何掛起的數(shù)據(jù)都_將_消失。

停止實(shí)例:

  1. docker-compose down --volumes 

刪除 Kafka & Zookeeper 相關(guān)卷:

  1. docker volume rm sentry-kafka 
  2. docker volume rm sentry-zookeeper 

再次運(yùn)行安裝腳本:

  1. ./install.sh 

啟動(dòng)實(shí)例:

  1. docker-compose up -d 

減少磁盤(pán)使用

如果你想減少 Kafka 使用的磁盤(pán)空間,你需要仔細(xì)計(jì)算你攝取的數(shù)據(jù)量,你可以容忍的數(shù)據(jù)丟失量, 然后按照這個(gè)很棒的 StackOverflow 帖子或 我們社區(qū)論壇上的帖子中的建議進(jìn)行操作。

  • https://stackoverflow.com/a/52970982/90297
  • https://forum.sentry.io/t/sentry-disk-cleanup-kafka/11337/2?u=byk

Redis

在自托管設(shè)置中,Redis 既用作事務(wù)數(shù)據(jù)存儲(chǔ)又用作 Celery 的工作隊(duì)列。出于這個(gè)原因,它可能會(huì)在事件高峰期間不堪重負(fù)。從版本 20.10.1 開(kāi)始,我們對(duì)此進(jìn)行了一些重大改進(jìn)。如果您仍然遇到問(wèn)題,您可以考慮擴(kuò)展 Redis 本身或切換到不同的 Celery broker,例如 RabbitMQ。

Workers

如果您看到錯(cuò)誤,例如

  1. Background workers haven’t checked in recently. It seems that you have a backlog of 200 tasks. Either your workers aren’t running or you need more capacity. 

您可能會(huì)從使用額外的專(zhuān)職工作人員中受益。這是通過(guò)在 docker-compose.override.yml 中創(chuàng)建新的 worker 服務(wù)并使用 -Q queue_name 參數(shù)將它們綁定到特定隊(duì)列來(lái)實(shí)現(xiàn)的。一個(gè)例子是:

  1. worker1: 
  2.     << : *sentry_defaults 
  3.     command: run worker -Q events.process_event 

要查看更完整的示例,請(qǐng)參閱我們社區(qū)論壇上的示例解決方案。

  • https://forum.sentry.io/t/how-to-clear-backlog-and-monitor-it/10715/14?u=byk

Postgres

Postgres 用于主數(shù)據(jù)存儲(chǔ),以及用于存儲(chǔ) key/value 數(shù)據(jù)的 nodestore。 node_nodestore 表可以快速增長(zhǎng),尤其是在大量使用性能監(jiān)控功能時(shí),因?yàn)楦檾?shù)據(jù)存儲(chǔ)在該表中。

  • https://develop.sentry.dev/services/nodestore/

node_nodestore 表作為 cleanup 任務(wù)的一部分被清理, 但是 Postgres 可能沒(méi)有機(jī)會(huì)清理表(尤其是在重載情況下),所以即使行可能被刪除,它們?nèi)匀粫?huì)占用磁盤(pán)空間。

您可以使用 pg-repack,它通過(guò)創(chuàng)建一個(gè)新表并在刪除舊表之前復(fù)制數(shù)據(jù)來(lái)重新打包一個(gè)表。您需要在清理腳本之后運(yùn)行它,并注意它在創(chuàng)建表時(shí),磁盤(pán)使用量會(huì)在回落之前激增。

下面是一個(gè)腳本示例:

  1. Only keep the last 7 days of nodestore data. We heavily use performance monitoring. 
  2. docker-compose run -T web cleanup --days 7 -m nodestore -l debug 
  3. # This ensures pg-repack exists before running as the container gets recreated on upgrades 
  4. docker-compose run -T postgres bash -c "apt update && apt install -y --no-install-recommends postgresql-9.6-repack && su postgres -c 'pg_repack -E info -t nodestore_node'" 

其他

如果您仍然遇到問(wèn)題,您可以隨時(shí)訪問(wèn)我們的社區(qū)論壇以搜索現(xiàn)有主題或創(chuàng)建新主題并尋求幫助。請(qǐng)記住,我們希望社區(qū)能夠幫助自己,并且 Sentry 員工也會(huì)在有時(shí)間時(shí)嘗試監(jiān)控和回答論壇問(wèn)題。

  • https://forum.sentry.io/

在報(bào)告問(wèn)題或在論壇上提問(wèn)時(shí)共享您的安裝日志、服務(wù)日志和 Sentry 版本將為您和試圖幫助您的人節(jié)省時(shí)間和精力。

  • https://github.com/getsentry/self-hosted/issues/new/choose

 

責(zé)任編輯:武曉燕 來(lái)源: 黑客下午茶
相關(guān)推薦

2023-10-12 08:57:23

故障排除監(jiān)控

2013-07-25 14:50:03

2024-03-26 00:00:01

2012-01-06 09:33:45

2023-10-10 00:09:14

2018-09-04 15:11:32

VCenter監(jiān)控故障

2024-09-24 13:11:18

2022-08-11 08:27:24

Sentry日志監(jiān)控系統(tǒng)

2024-01-17 08:01:28

Docker語(yǔ)法命令

2022-11-19 09:30:31

開(kāi)源容器

2009-02-26 10:03:00

2009-02-16 09:49:00

軟件防火墻故障

2017-05-23 15:53:52

docker服務(wù)容器

2023-07-26 15:46:52

Docker管理容器

2021-09-14 23:50:17

Sentry后端監(jiān)控

2021-09-27 19:41:31

監(jiān)控Sentry Alerts

2023-10-11 06:50:32

Oracle數(shù)據(jù)庫(kù)系統(tǒng)

2009-12-17 10:40:58

交換機(jī)故障分類(lèi)

2023-08-31 16:43:46

軟件開(kāi)發(fā)調(diào)試

2021-09-29 07:47:49

Sentry 監(jiān)控Environment事件數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产黄色在线观看 | 天天草视频| 久久久久久久一区 | 91日日 | 国产亚洲精品久久久久动 | 米奇7777狠狠狠狠视频 | 欧美精品久久久久 | 久久精品一区二区三区四区 | www日本高清 | 在线观看视频亚洲 | 在线一区二区三区 | 亚洲xx在线 | 久久精品二区 | 午夜影院在线观看免费 | 91精品国产乱码久久久久久 | 一本色道精品久久一区二区三区 | 中文字幕一区二区三区日韩精品 | 国产精品一区二区久久精品爱微奶 | 婷婷色综合| 国产精品福利久久久 | 国产精品日韩高清伦字幕搜索 | 一级毛片视频 | 国产精品久久久久久久久 | 精品综合 | 国产农村妇女毛片精品久久麻豆 | 在线观看免费高清av | av黄色国产 | 亚洲精品日韩视频 | 精品少妇一区二区三区日产乱码 | 天天夜碰日日摸日日澡 | 亚洲高清在线观看 | 日韩精品一区二区三区在线观看 | 97成人精品| 精品在线一区二区三区 | 在线日韩 | a级片网站| 荷兰欧美一级毛片 | 91在线精品一区二区 | 一区中文字幕 | 九九精品在线 | 黄网站色大毛片 |