Sentry私有化部署及郵件發送異常處理
- Docker
-
-
- 安裝
- 常用指令
- 安裝telnet
- Docker修改運作容器端口
-
- Sentry
-
-
- 部署
- Sentry無法發送郵件
- 搭sentry測試環境
-
Docker
安裝
連結: link
①Docker 軟體包和依賴包已經包含在預設的 CentOS-Extras 軟體源裡,安裝指令如下:
[[email protected] ~]# yum -y install docker
安裝完成。
②啟動 Docker 背景服務
[[email protected] ~]# service docker start
③測試運作 hello-world
[[email protected] ~]#docker run hello-world
由于本地沒有hello-world這個鏡像,是以會下載下傳一個hello-world的鏡像,并在容器内運作。
Docker常用指令
常用指令
連結: link
docker組成:docker client、docker server
docker元件:鏡像(image)、容器(container)、倉庫(repository)
Harbor軟體 鏡像倉庫
docker registry docker自帶倉庫
yum install docker -y
systemctl start docker 啟動docker
ifconfig 檢視(docker會啟動單獨的網橋)
docker images 查詢鏡像
docker search centos 搜尋鏡像
docker load --input centos.tar
docker save -o centos.tar centos
docker pull centos 擷取鏡像
docker rmi +id 删除鏡像
docker run centos /bin/echo "hello" 啟動容器,運作centos程序
docker run --name mydocker -t -i centos /bin/bash 啟動僞程序
docker ps -a -l 檢視容器,顯示所有程序
docker ps 顯示正在運作的程序
docker start mydocker 啟動
docker stop +ID 停止容器
docker rm mydocker 删除容器
docker --help
docker attach mydocker 進入容器
docker exec 進入容器
docker inspect -f "{{ .State.Pid }}" mydocker 擷取PID
安裝telnet
yum list telnet* 列出telnet相關的安裝包
yum install telnet-server 安裝telnet服務
yum install telnet.* 安裝telnet用戶端
Docker修改運作容器端口
systemctl stop docker
vim /var/lib/docker/containers/4d7d2a0a715cba70f897f8f688c55e7e54f6c6def14225552e6975143f4c7a59/hostconfig.json
systemctl restart docker
【修正端口号】
4d7d2a0a715cba70f897f8f688c55e7e54f6c6def14225552e6975143f4c7a59是容器ID全名
Sentry
部署
連結: link
①拉取鏡像
docker pull sentry ###目前最新版本9.1.2
docker pull redis
docker pull postgres
②啟動服務
docker run -d --name sentry-redis --restart=always redis ###保證了,異常自動拉起
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry --restart=always postgres
③生成sentry秘鑰
docker run --rm sentry config generate-secret-key
④資料庫及賬戶初始化
# 注意:過程中需要你建立使用者和密碼
docker run -it --rm -e SENTRY_SECRET_KEY='xxxxx' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade
⑤啟動sentry的web服務
docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='xxxxx' --link sentry-redis:redis --link sentry-postgres:postgres --restart=always sentry
⑥啟動sentry-cron/work服務
docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='xxxx' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron
docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='xxxxx' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
⑦登入測試效果
ip或域名+:9000 例:szsilinux:9000
Sentry無法發送郵件
連結: link
首先sentry服務是正常啟動的,類似這樣
docker ps -a
sentry-worker-1是sentry的異步隊列
sentry-corn 是sentry的定時任務
my-sentry是主程式
sentry-postgres 是資料庫
sentry-redis是緩存
像測試郵件是使用sentry的主程式測試的,而平常收到的異常日志和邀請郵件是sentry-worker 異步執行的,如果隻改了主程下,那麼就會出現測試郵件的時候正常,卻收不到異常日志和邀請郵件的情況。
配置:
①進入主程式的docker 容器内,“4d7d2a0a715c“是容器id。
docker ps -a
②安裝vim程式,這樣才能在容器内編輯配置檔案
apt-get update
apt-get install -y vim
③進入目錄,修改配置檔案
cd /etc/sentry/
vim config.yml
④配置郵箱
⑤安裝django的插件
pip install django-smtp-ssl
⑥退出容器,再重新開機容器
exit
docker restart 4d7d2a0a715c
然後将sentry-worker-1 容器也一樣改掉就行。
就會愉快的發現自己可以收到郵件了。
搭sentry測試環境
docker run -d --name sentry-redis-test --restart=always redis
docker run -d --name sentry-postgres-test -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry --restart=always postgres
docker run --rm sentry config generate-secret-key
docker run -it --rm -e SENTRY_SECRET_KEY='a(x_bwn7)vxiofju4ty9r(m1o2!rj%m-0g!xwm-ok^fa7-sxb7' --link sentry-postgres-test:postgres --link sentry-redis-test:redis sentry upgrade
docker run -d -p 9010:9000 --name my-sentry-test -e SENTRY_SECRET_KEY='a(x_bwn7)vxiofju4ty9r(m1o2!rj%m-0g!xwm-ok^fa7-sxb7' --link sentry-redis-test:redis --link sentry-postgres-test:postgres --restart=always sentry
docker run -d --name sentry-cron-test -e SENTRY_SECRET_KEY='a(x_bwn7)vxiofju4ty9r(m1o2!rj%m-0g!xwm-ok^fa7-sxb7' --link sentry-postgres-test:postgres --link sentry-redis-test:redis sentry run cron
docker run -d --name sentry-worker-1-test -e SENTRY_SECRET_KEY='a(x_bwn7)vxiofju4ty9r(m1o2!rj%m-0g!xwm-ok^fa7-sxb7' --link sentry-postgres-test:postgres --link sentry-redis-test:redis sentry run worker