或許你不太會喜歡異常,特別是那些發生後繼而沉默在應用日誌裡那些,你不知道從何開始,因為它們看起來並非那麼平易近人,但是使用者吵著他的資料有問題,你只得硬著頭皮在多個伺服器的日誌裡,翻箱倒櫃,試著從堆疊裡發現些什麼,但是毫無線索,因為你發現這根本是一樁無頭**:沒有足夠的上下文,不知道哪個才是這個使用者的某個操作引起的異常,請求鏈結更無從談起,好吧,再去nginx日誌裡看看吧……
但幸運的是,我們不是唯一面臨這個問題的人,disqus團隊因此而開發了sentry,它是一款精緻的django應用,目的在於幫助開發人員從散落在多個不同伺服器上毫無頭緒的日誌檔案裡發掘活躍的異常,繼而找到潛在的臭蟲,當然這個是概述,像其他監控工具一樣,sentry也是分為客戶端和服務端,客戶端分布在你的每個應用伺服器上,在異常發生時django會通知它,繼而客戶端再把詳細的異常資訊以及相關的使用者、請求資料(包括cookie和環境資訊)傳送到服務端,這樣一來就像sentry**上鼓吹的,它天生就是實時的了。服務端是乙個http server,是接收客戶端傳送異常資訊和相關資料,按照異常名稱進行歸類儲存到單獨的資料庫中,同時提供漂亮的web介面,方便開發檢索異常記錄。
在扇貝網部署sentry的當周,我們開發生活就全部圍繞在修復bug中——自己寫的**所產生的異常已經發生***次了,就擺在sentry web介面,緊急優先順序排在前3名,你還不去修復?現在我們每天都會習慣性的前往sentry看看有沒有發生新的異常,發布時更是緊盯著sentry這個晴雨表。這樣不但可以讓開發時刻關注自己的**質量,也可以了解到乙個異常就有可能是乙個使用者的流失,盡快地修復乙個bug就可以最小化損失。
如何部署?
服務端:
1. pip install sentry
2. sentry start
客戶端:
3. 將服務端機器上的sentry配置檔案中的sentry_key一行複製到settings.py檔案裡
cat ~/.sentry/sentry.conf.py ,複製該行: sentry_key = ***xx
4. 指定sentry服務端: sentry_servers = ['']
Python模組學習 logging 日誌記錄
python的logging模組提供了記錄程式運 況的日誌功能,類似於apache的log4j 許多應用程式中都會有日誌模組,用於記錄系統在執行過程中的一些關鍵資訊,以便於對系統的執行狀況進行跟蹤。在.net平台中,有非常著名的第三方開源日誌元件log4net,c 中,有人們熟悉的log4cpp,而...
記一次日誌
ifconfig am start a android.settings.settings mount o remount,rw system adb connect 192.168.2.186 5555 echo 0 proc sys kernel printk r 3288 韌體工具公升級,如果...
方便記日誌的魔術常量
line 檔案中的當前行號。file 檔案的完整路徑和檔名。如果用在被包含檔案中,則返回被包含的檔名。自 php 4.0.2 起,file 總是包含乙個絕對路徑 如果是符號連線,則是解析後的絕對路徑 而在此之前的版本有時會包含乙個相對路徑。dir 檔案所在的目錄。如果用在被包括檔案中,則返回被包括的...