Sentry 是一個錯誤記錄和聚合的平臺。本指南將指導您在Docker中部署設定自己的內部Sentry。
依賴
- Docker version 1.10+
構建容器映象
首先clone
或forking
getsentry/onpremise。這將成為您自己自定義Sentry的基礎。
在這個倉庫裡面,我們有一個sentry.conf.py和config.yml可以自定義。
最重要的是,我們有一個用於安裝外掛的requirements.txt檔案。
現在我們需要構建自定義的映象。根據您的環境,我們有兩種方法可以做到這一點。
- 如果你有一個私有容器映象服務,你將需要推送到:
REPOSITORY=reg.example.com/sentry make build push
- 如果沒有,你可以在本地構建:
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安裝。您可能想要探索各種可用的外掛。