Sentry初體驗

最近由于工作需要人弓,接觸了兩類監(jiān)控類產(chǎn)品癞季,一類是對于系統(tǒng)資源,系統(tǒng)狀態(tài)阁吝、應(yīng)用狀態(tài)等信息的監(jiān)控砚婆,主要是使用prometheus+grafana,這個打算以后更熟悉了寫幾篇科普的文章突勇,用起來感覺還是很酷也很實用的装盯;另外一類是error tracking類的產(chǎn)品,我用的是sentry甲馋,很早以前就聽過它了埂奈,粗略了解之后感覺部署還是不簡單就放棄了,后來突然想到可以使用docker來進行部署定躏,就仔細(xì)讀了它的部署文檔账磺,使用docker-compose來部署還是很簡單的,這里我就不說了痊远,網(wǎng)上這類文章也很多垮抗,有問題的讀者可以找一篇比較詳細(xì)的文章進行了解。

由于想對haipproxy再做一些優(yōu)化碧聪,其中一個優(yōu)化點便是如何對其做監(jiān)控冒版。以前面試的時候,面試官問了我一個問題:你日志是通過什么來查看的呢逞姿?我當(dāng)時愣了一下壤玫,說豁护,肉眼看的。確實通過肉眼可以一行一行讀可以大大提升我們trouble shotting的能力欲间,我也因此受益良多楚里。但是在日志特別大的時候,這種方式就比較低效了猎贴。Sentry將我們從bug trace中解救了出來班缎,我們可以在項目中將一些重要信息使用Sentry進行上報,它可以通過郵件或者其它方式(如slack)通知開發(fā)者進行查看她渴,及時發(fā)現(xiàn)問題达址。它的使用也非常簡單,當(dāng)我們在它的頁面通過New Project建立好項目之后趁耗,它會顯示一個Sentry_DSN沉唠,比如

http://82c130028fa942f29add1e0aa0ff9cbd:cffa174304d248b9aa2bdb385d3b01b8@127.0.0.1:9000/6

然后我們安裝對應(yīng)語言的客戶端,我用的是Python苛败,則

pip install raven

raven就是它的客戶端满葛,然后生成一個Client的實例,用于上報重要信息

client = Client(http://82c130028fa942f29add1e0aa0ff9cbd:cffa174304d248b9aa2bdb385d3b01b8@127.0.0.1:9000/6)

之后罢屈,在需要進行上報信息的地方導(dǎo)入該實例即可嘀韧,比如我在Scrapy的下載中間件中,使用Sentry的代碼如下

class ErrorTraceMiddleware(object):
    def process_response(self, request, response, spider):
        if response.status >= 400:
            reason = 'error http code {} for {}'.format(response.status, request.url)
            self._faillog(request, HttpError, reason, spider)
        return response

    def process_exception(self, request, exception, spider):
        self._faillog(request, DownloadException, exception, spider)
        return

    def _faillog(self, request, exc, reason, spider):
        if USE_SENTRY:
            try:
                raise exc
            except Exception:
                message = 'error occurs when downloading {}'.format(request.url)
                client.captureException(message=message)
        else:
            print(reason)

如果同時需要跟蹤頁面解析錯誤的信息缠捌,那么需要實現(xiàn)一個SpiderMiddleware锄贷,或者通過signals來做,這里由于篇幅就不介紹了曼月。

下面是在Haipproxy中關(guān)于使用Sentry的一些Bug Trace相關(guān)信息


haipproxy errors

也有詳細(xì)的錯誤信息

details

可見還是非常直觀的

如果是非scrapybug trace谊却,我以前的做法是寫一個裝飾器捕獲可能出現(xiàn)但是自己又沒想到的錯誤,記錄在日志中哑芹,然后通過定期查看日志來完善這部分代碼因惭,有了sentry之后,一切變得更加簡單了绩衷,比如我為爬蟲解析頁面寫的一個捕獲未知錯誤的裝飾器,結(jié)合sentry可以這樣寫

def parse_decorator(return_value):
    def page_parse(func):
        @wraps(func)
        def handle_error(*keys):
            try:
                return func(*keys)
            except Exception as e:
                client.captureException()
                return return_value
        return handle_error
    return page_parse

使用sentry激率,我們主要調(diào)用的就是client.captureException()方法咳燕,它在except作用域中,用于收集錯誤堆棧乒躺,為了便于復(fù)現(xiàn)或者調(diào)試錯誤招盲,有的時候,我們可能需要附加除了錯誤堆棧之外的一些其它信息嘉冒,這時候可以用message這個參數(shù)曹货。它可以傳遞一些額外的信息咆繁,這樣更加方便跟蹤錯誤。

還有一個client.captureMessage()方法顶籽,它的主要作用在于上報一些重要信息而非錯誤堆棧玩般。


目前只是對其的一些簡單使用,后續(xù)還會加深了解礼饱,比如多團隊多用戶協(xié)作坏为,與其它項目管理軟件進行集成(如Gitlab),如何做高可用等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末镊绪,一起剝皮案震驚了整個濱河市匀伏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蝴韭,老刑警劉巖够颠,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榄鉴,居然都是意外死亡履磨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門牢硅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹬耘,“玉大人,你說我怎么就攤上這事减余∽厶Γ” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵位岔,是天一觀的道長如筛。 經(jīng)常有香客問我,道長抒抬,這世上最難降的妖魔是什么杨刨? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮擦剑,結(jié)果婚禮上妖胀,老公的妹妹穿的比我還像新娘。我一直安慰自己惠勒,他們只是感情好赚抡,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纠屋,像睡著了一般涂臣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上售担,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天赁遗,我揣著相機與錄音署辉,去河邊找鬼。 笑死岩四,一個胖子當(dāng)著我的面吹牛哭尝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炫乓,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼刚夺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了末捣?” 一聲冷哼從身側(cè)響起侠姑,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箩做,沒想到半個月后莽红,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡邦邦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年安吁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片燃辖。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡鬼店,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出黔龟,到底是詐尸還是另有隱情妇智,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布氏身,位于F島的核電站巍棱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蛋欣。R本人自食惡果不足惜航徙,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望陷虎。 院中可真熱鬧到踏,春花似錦、人聲如沸尚猿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谊路。三九已至,卻和暖如春菩彬,著一層夾襖步出監(jiān)牢的瞬間缠劝,已是汗流浹背潮梯。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留惨恭,地道東北人秉馏。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像脱羡,于是被迫代替她去往敵國和親萝究。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本博客講講App異常監(jiān)控锉罐,每個app都要保證使用質(zhì)量帆竹,這樣才能保住用戶量,所以對于應(yīng)用程序的監(jiān)控顯得尤為重要脓规。想象...
    Hozan閱讀 9,321評論 5 12
  • 文章圖片上傳不正常栽连,如需文檔,可聯(lián)系微信:1017429387 目錄 1 安裝... 4 1.1 配置探針... ...
    Mrhappy_a7eb閱讀 6,320評論 0 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理侨舆,服務(wù)發(fā)現(xiàn)秒紧,斷路器,智...
    卡卡羅2017閱讀 134,693評論 18 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,002評論 6 13
  • 共贏是中國的對外開放戰(zhàn)略挨下,是科學(xué)發(fā)展觀關(guān)于“統(tǒng)籌國內(nèi)發(fā)展和對外開放”目標(biāo)的具體體現(xiàn)熔恢。同理共贏思維也決定一個人的格局...
    田田教練閱讀 373評論 0 3