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 ...
一周排行