[譯] 使用Docker安裝Sentry(一個錯誤記錄和聚合平臺)

GUNN發表於2018-03-02

Sentry 是一個錯誤記錄和聚合的平臺。本指南將指導您在Docker中部署設定自己的內部Sentry。

依賴

  • Docker version 1.10+

構建容器映象

首先cloneforkinggetsentry/onpremise。這將成為您自己自定義Sentry的基礎。 在這個倉庫裡面,我們有一個sentry.conf.py和config.yml可以自定義。 最重要的是,我們有一個用於安裝外掛的requirements.txt檔案。 現在我們需要構建自定義的映象。根據您的環境,我們有兩種方法可以做到這一點。

  1. 如果你有一個私有容器映象服務,你將需要推送到: REPOSITORY=reg.example.com/sentry make build push
  2. 如果沒有,你可以在本地構建: make build 如果您計劃在Docker中執行依賴服務,則我們支援連結容器。

執行相關服務

Redis

docker run \
  --detach \
  --name sentry-redis \
  redis:3.2-alpine
複製程式碼

PostgreSQL

docker run \
  --detach \
  --name sentry-postgres \
  --env POSTGRES_PASSWORD=secret \
  --env POSTGRES_USER=sentry \
  postgres:9.5
複製程式碼

Outbound Email

docker run \
  --detach \
  --name sentry-smtp \
  tianon/exim4
複製程式碼

執行Sentry服務

構建的映象充當Sentry應用程式的所有執行部件的入口點,並且必須為所有容器使用相同的影象 ${REPOSITORY}對應於在上一步中構建映象時使用的名稱。如果沒有指定,預設值是sentry-onpremise。要測試映象是否正常工作,您可以執行以下操作:

docker run \
  --rm ${REPOSITORY} \
  --help
複製程式碼

你應該看到Sentry的幫助輸出。 此時,您需要生成一個secret-key值。你可以這樣做:

docker run \
  --rm ${REPOSITORY} \
  config generate-secret-key
複製程式碼

這個值可以放到你的config.yml中,或者作為一個環境變數SENTRY_SECRET_KEY。如果放入config.yml,你必須重建你的映象。

對於所有下面的Sentry命令呼叫,您必須具有所有必需的容器連結,裝載的卷和相同的環境變數。

如果不同的元件執行不同的配置,Sentry可能會有意想不到的行為。 執行命令的基礎如下所示:

docker run \
  --detach \
  --link sentry-redis:redis \
  --link sentry-postgres:postgres \
  --link sentry-smtp:smtp \
  --env SENTRY_SECRET_KEY=${SENTRY_SECRET_KEY} \
  ${REPOSITORY} \
  <command>
複製程式碼

為簡潔起見,以下文件內容不會提及容器連結或環境變數,但如果使用連結的容器,則所有例項都需要它們,並且${REPOSITORY}將被引用為sentry-onpremise。

初始化(升級)

docker run --rm -it sentry-onpremise upgrade 在初始化過程中,系統會提示您建立將作為超級使用者的初始使用者。 所有模式更改和資料庫升級均通過升級命令處理,這是升級到未來版本的Sentry時要執行的第一件事。

啟動Web服務

Web介面需要將埠9000暴露到容器中。這可以通過-publish 9000:9000完成:

docker run \
  --detach \
  --name sentry-web-01 \
  --publish 9000:9000 \
  ${REPOSITORY} \
  run web
複製程式碼

您現在應該可以通過訪問http://localhost:9000/來測試Web服務。

啟動後臺工作人員

大量的sentry’s工作通過後臺工作人員進行管理:

docker run \
  --detach \
  --name sentry-worker-01 \
  ${REPOSITORY} \
  run worker
複製程式碼

有關配置工作人員的詳細資訊,請參閱非同步工作人

啟動Cron程式

Sentry還需要一個cron程式:

docker run \
  --detach \
  --name sentry-cron \
  ${REPOSITORY} \
  run cron
複製程式碼

建議此時只執行其中一個,否則會看到不必要的額外任務被推入佇列,但如果執行多個節拍程式,系統仍然會按照預期執行。這可以用來實現高可用性。

下一步是什麼?

在這一點上,你應該有一個全功能的Sentry安裝。您可能想要探索各種可用的外掛

相關文章