天天看點

Sentry私有化部署及郵件發送異常處理DockerSentry

Sentry私有化部署及郵件發送異常處理

  • Docker
      • 安裝
      • 常用指令
      • 安裝telnet
      • Docker修改運作容器端口
  • Sentry
      • 部署
      • Sentry無法發送郵件
      • 搭sentry測試環境

Docker

安裝

連結: link

①Docker 軟體包和依賴包已經包含在預設的 CentOS-Extras 軟體源裡,安裝指令如下:

[[email protected] ~]# yum -y install docker
           

安裝完成。

Sentry私有化部署及郵件發送異常處理DockerSentry

②啟動 Docker 背景服務

[[email protected] ~]# service docker start
           
Sentry私有化部署及郵件發送異常處理DockerSentry

③測試運作 hello-world

[[email protected] ~]#docker run hello-world
           
Sentry私有化部署及郵件發送異常處理DockerSentry

由于本地沒有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私有化部署及郵件發送異常處理DockerSentry

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私有化部署及郵件發送異常處理DockerSentry

Sentry無法發送郵件

連結: link

首先sentry服務是正常啟動的,類似這樣

docker ps -a
           
Sentry私有化部署及郵件發送異常處理DockerSentry

sentry-worker-1是sentry的異步隊列

sentry-corn 是sentry的定時任務

my-sentry是主程式

sentry-postgres 是資料庫

sentry-redis是緩存

像測試郵件是使用sentry的主程式測試的,而平常收到的異常日志和邀請郵件是sentry-worker 異步執行的,如果隻改了主程下,那麼就會出現測試郵件的時候正常,卻收不到異常日志和邀請郵件的情況。

配置:

①進入主程式的docker 容器内,“4d7d2a0a715c“是容器id。

docker ps -a
           
Sentry私有化部署及郵件發送異常處理DockerSentry

②安裝vim程式,這樣才能在容器内編輯配置檔案

apt-get update
apt-get install -y vim
           

③進入目錄,修改配置檔案

cd /etc/sentry/
vim config.yml 
           

④配置郵箱

Sentry私有化部署及郵件發送異常處理DockerSentry

⑤安裝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