Sentry--錯誤日誌收集框架

  簡介

  Sentry’s real-time error tracking gives you insight into production deployments and information to reproduce and fix crashes.---官網介紹

  Sentry是一個實時事件日誌記錄和彙集的日誌平臺,其專注於錯誤監控,以及提取一切事後處理所需的信息。他基於Django開發,目的在於幫助開發人員從散落在多個不同服務器上的日誌文件裏提取發掘異常,方便debug。Sentry由python編寫,源碼開放,性能卓越,易於擴展,目前著名的用戶有Disqus, Path, mozilla, Pinterest等。它分爲客戶端和服務端,客戶端就嵌入在你的應用程序中間,程序出現異常就向服務端發送消息,服務端將消息記錄到數據庫中並提供一個web節目方便查看。

  DSN(Data Source Name)

  當你完成sentry配置的時候,你會得到一個稱爲“DSN”的值,看起來像一個標準的URL。Sentry 服務支持多用戶、多團隊、多應用管理,每個應用都對應一個 PROJECT_ID,以及用於身份認證的 PUBLIC_KEY 和 SECRET_KEY。由此組成一個這樣的 DSN:

'{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}'

PROTOCOL 通常會是 http 或者 https,HOST 爲 Sentry 服務的主機名和端口,PATH 通常爲空。

  Sentry支持的語言:

wKiom1gZkXnDOaIBAADqfDmPkEI701.png-wh_50

  安裝

 這裏有兩種方式安裝sentry,我這裏介紹用docker的安裝方式(官網推薦用docker)。

sentry運行需要的服務:

PostgreSQL

Redis

Memcached

Outbound Email

啓動sentry需要依賴的服務:

Web Service

Background Workers

Cron Process

容器安裝sentry需要的環境:

Docker 1.10.0+

Compose 1.6.0+ (optional)

另外redis、數據庫等也可以配置cluster,並結合HAProxy使用。我這裏docker容器全部只安裝在了一臺機器(Ubuntu1404)上。

  1. 安裝docker

增加GPG key:

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 \
--recv-keys 58118E89F3A912897C070ADBF76221572C52609D

配置apt倉庫:

在/etc/apt/sources.list文件最好追加一行:

deb https://apt.dockerproject.org/repo ubuntu-trusty main

安裝 docker-engine:

$ sudo apt-get update
$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
$ sudo apt-get install docker-engine

2、安裝docker-compose

使用pip安裝,如果沒有pip需要先安裝:

$ sudo apt-get install python-pip
$ sudo pip install docker-compose

3、構建容器並創建數據庫和sentry安裝目錄

$ sudo apt-get install git
$ sudo git clone 
$ sudo mkdir -p data/{sentry,postgres}

4、生成secret key並添加到docker-compose文件裏:

$ sudo docker-compose run --rm web config generate-secret-key
# 這裏複製生成的字符串
$ sudo vim docker-compose.yml
# 取消SENTRY_SECRET_KEY的註釋,並把剛剛複製的字符串插入其中,類似如下:

wKiom1gZm-KSduiSAABJVjeSzNA427.png-wh_50

5、重建數據庫,並創建sentry超級管理員用戶

$ sudo docker-compose run --rm web upgrade

這裏採用交互方式創建用戶:

upgrade過程:

wKiom1gZpNjxxOMyAAaudUXbTXk112.png-wh_50

創建用戶,sentry新建的時候需要一個超級管理員用戶:

wKioL1gZpW6ArVEKAANd0oJ7E6g535.png-wh_50

6、啓動所有的服務:

$ sudo docker-compose up -d

wKiom1gZqJ3CSa4HAANG1lNzXj0703.png-wh_50

7、訪問sentry

打開瀏覽器,輸入url:http://ipaddress:9000

訪問之前可以檢查下容器和端口情況:

docker ps看下當前運行的容器:

wKioL1gZqaKiPlY7AAJc5MOnRi0369.png-wh_50

netstat查看端口打開情況:

wKioL1gZqhqAw9TEAAE2XDH4f8g685.png-wh_50

登陸界面,這裏會提示你的Root URL,如果不想更改繼續下一步即可完成:

wKiom1gZqpGx9hd5AAIpp1e6U8g213.png-wh_50

頁面展示:

wKiom1gZqw-zJZg8AADqkoNCxKI808.png-wh_50

至此sentry搭建完成!

補充:

  Sentry目前用戶類型有四種: 超級管理員, 管理員,普通用戶和System agents. 超級用戶只能通過命令行來創建,其他用戶可以自己註冊或由其他用戶邀請註冊加入,然後由超級管理員或管理員分配項目和權限。爲了更好支持團隊協助以及信息安全,新版本Sentry(5.4.2)經過了重新設計,重新設計後的Sentry以Team爲中心組織權限。所謂Team就是一個團隊,一些用戶組織在一起對某些項目有操作權限的組織。一個項目只能屬於一個Team, 一個用戶卻可以屬於多個Team, 並可在不同Team中扮演不同角色, 如用戶A在Team X是管理員而在Team Y中是System agents. Sentry對用戶角色的指定只能到Team級別,不能到Project級別, 所以將某個用戶加入到某個Team之後,這個用戶就對所有所有屬於這個Team下所有project有了相同的權限。

  • 超級管理員: 能創建各種用戶, team和project只能由超級管理員創建。項目的一些設置比如改變Owner, 數據公開可見與否(設爲public的數據可以通過url不登陸也能查看)以及客戶端domain限制的設定。另外還有管理項目的api key(客戶端只有得到此api key才能向Sentry發送消息)的權限等等。

  • 管理員: 能創建用戶, team和項目設定中除改變owner之外的權限, 可以對項目中具體數據做resolve, bookmark, public/public和remove操作。

  • 普通用戶: 無Team界面,只能對項目中具體數據做resolve, bookmark, public/unpublic和remove操作。

  • System agents: 無Team界面,只能對項目中具體數據做bookmark, unpublic和remove操作。

參考鏈接:

docker安裝:https://docs.docker.com/engine/installation/linux/ubuntulinux/

sentry安裝:https://docs.sentry.io/server/installation/

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