linux中Sentry事件日志實戰

Sentry 是一個及時的事件日志和聚合平台,基于 Django 構建。 Sentry 可以幫助你將 Python 程序的所有 exception 自動記錄下來,然後在一個好用的 UI 上呈現


不管你用什麽編程語言,都會面臨如何處理錯誤日志的問題。很多程序員對錯誤日志放任自流,直到出現故障了才追悔莫及,如果問我怎麽辦,我會推薦 Sentry!


Sentry 是一個錯誤記錄和聚合的平台,只要看看它漂亮的界面就會喜歡上它:

sentry
sentry

關于如何安裝 Sentry,官方文檔裏已經給出了詳細的說明,建議大家仔細閱讀,一般通過 Virtualenv 來安裝 Sentry,具體可以參考:學習搭建Python環境。

提醒:我在安裝 7.5 的時候,測試有循環重定向,如果你也是可以安裝 7.4:

pip install sentry==7.4.3
安裝完畢後,假設我們要監控 PHP 錯誤日志,那麽通常是在我們的業務代碼裏嵌入官方的 PHP SDK,不過這樣肯定會影響到效能,好在我們可以通過錯誤日志曲線救國,只要定期掃描錯誤日志,把新生成的數據發送給 Sentry 就好了。

BTW:如果發現 Sentry 中的錯誤計數器始終是一,即便有新的錯誤也不更新,那麽多半是因爲沒有權限生成 celerybeat-schedule 文件,缺省是生成在進程的 cwd 目錄中。

如何才能發現新生成的數據呢?需要記錄掃描到了哪個位置,可以通過 Logcheck 中提供的 logtail 或者 logtail2 來實現這個功能,至于它倆的區別,可以參見 man 文檔,簡單點兒說,如果日志被 rotate 的話,logtail 可能會丟失舊日志中的數據,而 logtail2 不會。

<?php

require_once __DIR__ . '/raven-php/lib/Raven/Autoloader.php';

Raven_Autoloader::register();

$dsn = 'http://your/dsn';

$options = array(
'tags' => array(
'php_version' => phpversion(),
),
'trace' => false,
);

$pattern_content = '^\[([^]]+)] PHP ([^:]+):\s+(.+)';

$parrern_level = implode('|', array(
'debug',
'info',
'warning',
'error',
'fatal',
));

$client = new Raven_Client($dsn, $options);

while (($line = fgets(STDIN)) !== false) {
if (!preg_match("/{$pattern_content}/", $line, $match)) {
continue;
}

list($line, $timestamp, $level, $message) = $match;

$timestamp = gmdate('Y-m-d\TH:i:s\Z', strtotime($timestamp));

preg_match("/{$parrern_level}/i", $level, $match);

$level = isset($match[0]) ? $match[0] : 'error';

$client->captureMessage($message, array(), array(
'timestamp' => $timestamp,
'level' => $level,
));
}

?>
做好了以上這些准備工作,剩下的只要通過管道把新數據傳遞給 PHP 腳本即可:

shell> logtail2 -f /path/to/php/error/log | php /path/to/script
建議通過 crontab 定時運行此命令,但是需要注意用 flock 保護一下,以免擁堵

更多相關文章
  • 在linux中find是查找搜索文件而rm是刪除文件,下面我們來看一篇linux中find與rm實現查找並刪除目錄或文件的實例,希望文章對大家會有所幫助.刪除指定目錄下指定文件find 要查找的目錄名 -name .svn |xargs rm -rf刪除指定名稱的文件或文件夾: find -type
  • 下面來爲各位整理一個關于linux中dos2unix與unix2dos實現dos文件轉換例子,希望文章對各位有幫助.在使用window下編緝好的文件傳送到linux系統時,最鬧心的莫過于文件不同的修改.之前我也寫過一篇關于excel下的文件複制到linux下時造成的問題.vi查看空格.制表符等特殊符
  • 本文章來給大家介紹Rsync+Inotify-tools實現數據及時同步的具體方法,文章來自一個網友寫的,希望此例子對你做數據備份會有所幫助.說明:操作系統:CentOS 5.X源伺服器:192.168.21.129目標伺服器:192.168.21.127,192.168.21.128目的:把源伺服 ...
  • 下面我來給大家介紹一篇利用linux的logrotate命令對nginx 與mysql數據庫的日志進行切割壓縮的例子,希望例子對各位會帶來幫助.logrotate簡介日志輪轉特別適用于具有固定文件名的日志文件,比如MySQL的出錯日志.常規查詢日志.慢查詢日志等.Linux系統有一個非常好用的根據l
  • 在linux中我們要實現doc ppt文件轉換成pdf文件可以安裝一個wps for linux就可以解決了,具體步驟如下.doc ppt轉pdf在linux還是沒有完美解決,不管是openoffice,還是libreoffice.打開doc,ppt文檔可能會出現布局錯亂的情況.libreoffic
  • 在linux 中mv命令可以實現文件的移動或目錄的移動了,並且mv命令與cp命令有一個不同之處是mv命令移動文件,文件個數沒有增加:cp命令複制文件,文件個數增加.mv命令還可以進行文件或目錄的改名了.Linux mv命令mv [選項] 源文件或目錄 目標文件或目錄例子例如將m1.c文件改名爲m2.
  • Zabbix是一個linux中常用的監控軟件了,我們可以使用Zabbix監控Memcached PHP-FPM Tomcat Nginx MySQL 網站日志了,下面一起來看一個例子哦.Zabbix作爲監控軟件非常的靈活,支持的數據類型非常豐富,比如數字(無正負),數字(浮點),日志,文字等.我們需 ...
  • linux中實現Web伺服器負載均衡(HAProxy+Keepalived)
    負載均衡是我們做大流量網站時必須要考慮的一個問題了,下面我給各位整理了一篇關于在linux中利用HAProxy+Keepalived來實現網站負載均衡的配置技巧. 說明:操作系統:CentOS 5.X 64位Web伺服器:192.168.21.127.192.168.21.128站點:bbs.111 ...
一周排行
  • 許多的蘋果開發者或果粉會發現升級Xcode7後Pod無法用的問題了,碰到這種問題我們要如何來處理 呢,下文我們就一起來看看解決方案.在升級的Xcode7之後,進行真機調試,結果CocoaPod裏的東西搞死都編譯失敗,
  • 1. apache的安裝.同樣適合大多數人的一路next,next過程中可能需要填寫server domain,admin email等類似的東西,這個可以跳過,但是要注意端口的選擇,默認情況下是只有80與8080端
  • Galaxy MEGA如何更改字體大小(I9200,P729)
    當您在查看短信或螢幕菜單的時候,感覺字體較小,想將文字調大看得清楚一些,請按照以下步驟操作
  • 主從同步是mysql數據庫的一個常用的備份功能了,但使用過程中也會經常出現問題了,這裏我們一起來看看Mysql 5.6主從同步失敗的解決辦法明天就五一了, 結果數據庫挂了~原因還沒搞清楚,不過主從同步也隨之出問題了~
  • ihttpmodule是個什麽東西呢?對我們web開發有什麽用呢? 先從名字來看他是一個接口,接口就是讓人來繼承的,我們要用它就得繼承他,並實現他的方法.module的意思是模塊.組件的意思.如果說我們實現了這個接口
  • 上傳圖片預覽效果就是在file中加一個onchange事件,當用戶改變input file中的值了我們就會自動把file中的指值獲取並給定義好的div來顯示圖片,原理很簡單下面我來給大家介紹上傳圖片預覽效果與一些兼容
  • 遇到一個dedecms亂碼的問題,查了好久的原因,原來是.htaccess配置的問題,現在把這個問題描述及解決方法列出,再總結幾個DEDECMS亂碼的問題.朋友的dedecms亂碼,文件的編碼以及head裏面的met ...
  • 今天在mysql刪除條目報錯Cannot delete or update a parent row: a foreign key constraint fails 錯誤,下面我們一看解決辦法在SQLyog中刪除條目
  • 在mysql中如果我們要把查詢導出來保存.sql文件我們可以使用into outfile或mysql -uroot -p 就可以實現了,下面我來給大家介紹介紹.1.新建查詢語句文件query.sql,內容如下: 代碼 ...
  • 小米2S怎麽恢複出廠設置小米2S恢複出廠設置教程
    小米2S怎麽恢複出廠設置呢?如果手機使用久了出現一些問題了我們就可以利用恢複出廠設置來還原