1、合并日志
php的錯誤日志中常常會出現(xiàn)這樣的日志
創(chuàng)新互聯(lián)建站長期為上1000+客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為岳陽企業(yè)提供專業(yè)的成都網(wǎng)站建設、成都網(wǎng)站制作,岳陽網(wǎng)站改版等技術服務。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
[03-Jun-2013 13:15:29] PHP Fatal error: Uncaught exception 'Leb_Exception' in /data1/www/bbs.xman.com/htdocs/framework/xbox/ufo.php:68 Stack trace: #0 /data/www/bbs.xman.com/htdocs/framework/dao/abstract.php(299): Leb_Dao_Pdo->connect(Array, 'read') #1 /data/www/bbs.xman.com/htdocs/framework/dao/pdo.php(108): Leb_Dao_Abstract->initConnect(false) #2 /data/www/bbs.xman.com/htdocs/framework/dao/abstract.php(1123): Leb_Dao_Pdo->query('SELECT * FROM `...') #3 /data/www/bbs.xman.com/htdocs/framework/dao/abstract.php(1217): Leb_Dao_Abstract->select(Array) #4 /data/www/bbs.xman.com/htdocs/framework/model.php(735): Leb_Dao_Abstract->daoSelect(Array, false) #5 /data/www/bbs.xman.com/htdocs/app/configure/model/configure.php(40): Leb_Model->find() #6 /data/www/bbs.xman.com/htdocs/app/search/default.php(131): Configure->get_configure_by_type('news') #7 /data/www/bbs.xman.com/htdocs/framework/dispatcher.php(291): defaultController->indexAction() #8 /data/www/bbs.xman.com/htdocs/framework/dispatcher.php(222): Leb_Di in /data1/www/bbs.xman.com/htdocs/framework/dao/pdo.php on line 68
這個時候 logstash一般會只記錄上面一行,所以這類的日志就看不全了。怎么辦呢?logstash提供了一個功能解決了這個問題就是"multiline"
這個filter的功能顧名思義就是對多行的日志進行處理 這個是官網(wǎng)上的說明
multiline filter
This filter will collapse multiline messages into a single event.
The multiline filter is for combining multiple events from a single source into the same event.
下面看下格式
filter { multiline { type => "type" #類型,不多說 pattern => "pattern, a regexp" #參數(shù),也可以認為是字符,有點像grep ,如果符合什么字符就交給下面的 what 去處理 negate => boolean what => "previous" or "next" #這個是符合上面 pattern 的要求后具體怎么處理,處理方法有兩種,合并到上面一條日志或者下面的日志 } }
The 'negate' can be "true" or "false" (defaults false). If true, a message not matching the pattern will constitute a match of the multiline filter and the what will be applied. (vice-versa is also true)
這個 negate 有兩種 true 或者 false,默認是 true,如果選了false 的話估計就是取反的意思。
看看例子
filter { multiline { pattern => "^[^\[]" what => "previous" } }
這個例子是針對我上面的php日志寫的,意思就是 如果不是以 "["開頭的日志 都跟上一個日志合并在一起。以此類推遇到其他的多行日志也可以按照這個方法來做合并。
2、logstash 根據(jù)@message內(nèi)容來觸發(fā)命令"exec"
我當初的想法是這樣的,如果php日志文件中出現(xiàn) "PHP Fatal error"的時候?qū)⑾嚓P的錯誤日志發(fā)給相關開發(fā)的負責人。一開始想到了 output 的 email 功能,但我嘗試
了很多次這個email功能不太穩(wěn)定,有時候能發(fā)出來郵件有的時候卻發(fā)不出來。不知道是郵件服務器的問題還是 logstash本身的問題,具體配置如下
output { email { match => [ "@message", "aaaaa" ] to => "storyskya@gmail.com" from => "monitor@mib.com.cn" options => [ "smtpIporHost", "smtp.mibnet.com", "port", "25", "userName", "monitor@mib.com.cn", "starttls", "true", "password", "opmonitor", "authenticationType", "login" ] subject => "123" body => '123' via => smtp } }
后來換了方法,改用 grep+exec來做,具體思路就是 grep 過濾到了 PHP Fatal error 之后根據(jù)域名將郵件發(fā)給具體人員,格式如下
filter { grep { match => [ "@message", "PHP Fatal error" ] drop => false add_tag => [fatal_error] } grep { tags => [fatal_error] match => [ "@message", ".*(xbox\.com|xbox\.mib\.com\.cn|supports\.game\.mib\.com\.cn)" ] drop => false add_tag => [xboxerror] } } output { exec { tags => [xboxerror] command => "echo '%{@timestamp} %{@source}: %{@message}' | mail -s xbox_phplog_error_message xboxdev@xman.com" } }
如此這般 先定義一個grep tag 為fatal_error 先把帶有 PHP Fatal error 的日志過濾出來,后面的 grep承接上面的 tag fatal_error 過濾出具體的域名之后再新建一個
tag 叫 xboxerror,最后的output 調(diào)用 exec(執(zhí)行) 去調(diào)用一個命令,將時間,源和錯誤信息發(fā)到xboxdev@xman.com 這個郵箱里。
OK 現(xiàn)在就能做到快速的郵件報警了。
3、替換
上面做到了郵件實時提醒,但有的時候我發(fā)現(xiàn)并沒有發(fā)出去郵件,查找原因后發(fā)現(xiàn)如果郵件內(nèi)容中出現(xiàn)很多 單引號 " ' " 的話,mail命令就會報錯沒法發(fā)送。
于是就找到了mutate 這個功能,下面是介紹
The mutate filter allows you to do general mutations to fields. You can rename, remove, replace, and modify fields in your events.
好吧,我現(xiàn)在需要把@message里面的 ' 都給替換成" 這樣就能正常發(fā)郵件了,什么你說開發(fā)換了個符號會看不懂?我#¥%……&*((&……%¥%
格式如下:
mutate { type => "phplog" gsub => [ "@message","'", "\"" ] }
好了,有了這些功能模塊logstash可以工作的比較開心了~~~ 希望你們也開心
當前文章:logstash的更多實用功能
當前URL:http://chinadenli.net/article10/gpdgdo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供ChatGPT、自適應網(wǎng)站、微信公眾號、企業(yè)網(wǎng)站制作、網(wǎng)站設計公司、響應式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)