紀錄一次sentry升級歷史

首發於:我的博客

起因

IOS同事說他發現了sentry的一個bug。說是因爲9.0.0的bug導致debug file 提示上傳成功,但是上網站卻發現根本沒有上傳。所以就開始了我的升級之路。

調研

因爲我的sentry不僅僅用在了服務器端,而且還用在了客戶端上。所以我需要解決如果sentry停止了,那麼如何解決請求等待的問題。

Nginx

那麼我首先想到的就是修改nginx的配置文件。

下面是我更新的相關內容

server {
    listen       80;
    server_name  track.example.com;

    set_real_ip_from 127.0.0.1;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    location / {
        // 添加這兩行
        default_type text/html; // 設置 content-type 表示這是一個網頁
        return 202; # 返回 202 表示已經接收,但是並不處理
        client_max_body_size    100M;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header Host-Real-IP  $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-Pcol http;
        proxy_pass http://localhost:10000;
    }
}

使用這兩行,就可以保證客戶端正常請求了數據,但是我卻把它給拋棄了。保證客戶端的正常瀏覽。

sentry 升級

接下來就是對sentry進行升級了。

首先,進入到指定目錄

cd /data/

對相關目錄進行備份(備份是個好習慣,千萬不要丟棄)

cp -r onpremise onpremise2

然後進入目錄

cd onpremise

停止sentry的運行

docker-compose down

拉取最新代碼

git pull

這個時候可能會提示以下錯誤:

error: Your local changes to the following files would be overwritten by merge:
    docker-compose.yml
Please commit your changes or stash them before you merge.

首先我們先對內容進行diff,查看修改的部分:

git diff docker-compose.yml

將輸出記錄下來,以便更新代碼之後對該文件進行還原。

這是因爲你對該文件進行了修改。但是該文件是被追蹤的,所以說需要先還原,然後再次拉取,執行以下代碼:

git checkout docker-compose.yml
git pull

執行完成後就表示拉取最新版本庫成功了。

現在就要把配置的docker-compse.yml內容給還原回來。

接下來就是設置環境變量了:

export SENTRY_IMAGE='sentry:9.1.2'

爲什麼要這麼設置呢。因爲通過閱讀Dockerfile文件可得知,該文件需要讀取環境變量SENTRY_IMAGE來拉取相關的docker文件。

再次構建我們的服務

docker-compose build --pull

運行中可能會提示:

09:31:05 [WARNING] sentry.utils.geo: settings.GEOIP_PATH_MMDB not configured.

這個提示應該沒有配置GEO數據庫的地址。先不管,等以後以後機會可以再去研究它。

現在就是要執行遷移了:

docker-compose run --rm web upgrade

在遷移中可能會提示如下消息:

The following content types are stale and need to be deleted:

    sentry | dsymapp
    sentry | versiondsymfile
    sentry | projectdsymfile
    sentry | grouphashtombstone

Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
If you're unsure, answer 'no'.

    Type 'yes' to continue, or 'no' to cancel:

因爲我也不清楚發生了什麼。所以我的回答是no

遷移完成就是剩下啓動服務了:

docker-compose up -d

一切正常。

最後我們就是把我們的nginx 202響應給註銷掉,然後重啓nginx就ok了。

總結

再次進入之後,發現了UI有一些變化。並且IOS大哥的問題也解決了。但是也產生了一些問題,就是統計的bug統計數據都沒了。這不重要,只要bug數據還在,那就可以。

通過這次的升級,瞭解了很多的東西,對我的成長很有幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章