一、介紹
- Sentry 是一個開源的實時錯誤追蹤系統,可以幫助開發者實時監控並修復異常問題。它主要專注於持續集成、提高效率並且提升用戶體驗。Sentry 分爲服務端和客戶端 SDK,前者可以直接使用它家提供的在線服務,也可以本地自行搭建;後者提供了對多種主流語言和框架的支持,包括 React、Angular、Node、Django、RoR、PHP、Laravel、Android、.NET、JAVA 等。同時它可提供了和其他流行服務集成的方案,例如 GitHub、GitLab、bitbuck、heroku、slack、Trello 等。目前公司的項目也都在逐步應用上 Sentry 進行錯誤日誌管理
二、環境準備
- 添加豆瓣的pip源
mkdir .pip
tee ~/.pip/pip.conf <<-'EOF'
[install]
use-mirrors = true
mirrors = http://b.pypi.python.org
[global]
index-url = http://pypi.douban.com/simple/
trusted-host = pypi.douban.com
EOF
- 添加docker鏡像源
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://1nj0zren.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
EOF
sudo service docker restart
三、根據官方安裝docket-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
docker-compose version 1.25.4, build 8d51620a
四、安裝Sentry服務
- Sentry 本身是基於 Django 開發的,使用到zookeepe,kafka,Postgresql、 Redis、Smtp等組件,兩種途徑進行安裝:通過 Docker 或用 Python 搭建。官網下分別有以下的兩個介紹:
Python搭建:https://docs.sentry.io/error-reporting/quickstart/?platform=javascript
docker-compose:https://docs.sentry.io/server/installation/
- 使用Python安裝可以參考之前文章
- 官方推薦使用docker-compose安裝
git clone https://github.com/getsentry/onpremise.git
cd onpremise
./install.sh
- 文件說明
install.sh:執行文件
docker-compose:全局配置和docker服務配置
config.example.yml和sentry.conf.example.py:兩個默認的配置文件
config.yml和sentry.conf.py:執行後從默認例子文件copy過來的,你可以根據你自己需要的配置這兩個文件
config.yml:記錄運行sentry服務全局配置,包括郵件服務、系統設置、文件存儲等
sentry.conf.py:記錄運行Django的web服務配置,包括:數據庫配置、Redis配置、RabbitMQ、端口配置等
- 拉取docker鏡像
- 創建超級用戶,填寫郵箱地址和密碼
- 啓動Sentry服務
docker-compose up -d
- 查詢服務運行狀態
- 修改配置,重啓Sentry服務
# 停止,建議使用stop,down會刪除掉鏡像,重啓後鏡像ID會變
docker-compose stop
# docker-compose down
# 啓動
docker-compose up -d
五、nginx服務配置
server {
listen 80;
server_name sentry.example.com;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_redirect off;
# keepalive + raven.js is a disaster
keepalive_timeout 0;
# use very aggressive timeouts
proxy_read_timeout 5s;
proxy_send_timeout 5s;
send_timeout 5s;
resolver_timeout 5s;
client_body_timeout 5s;
# buffer larger messages
client_max_body_size 5m;
client_body_buffer_size 100k;
location / {
proxy_pass http://localhost:9000;
add_header Strict-Transport-Security "max-age=31536000";
}
}
- 用瀏覽器訪問Sentry服務
六參考
- https://docs.sentry.io/server/installation/
- https://github.com/getsentry/onpremise
- http://sinhub.cn/2019/07/getting-started-guide-of-sentry/