使用Logstash multiline 收集PHP、tomcat等應用服務多行堆疊日誌
很多時候應用程式出錯是都是丟擲一堆 堆疊資訊(即在日誌檔案輸出多行),此時logstash可以使用multiline的外掛收集日誌時需要把錯誤堆疊資訊收集為一個記錄。multiline字面意思是多行,顧名思義就是對多行日誌進行處理。
multiline配置與用法
input { stdin { codec => multiline { pattern => "pattern, a regexp" negate => "true" or "false" what => "previous" or "next" } } }
## pattern支援正則表示式,通過正則表示式匹配日誌資訊,grok pattern定義的引數也是支援,Eg:%{TIMESTAMP_ISO8601} ,具體資訊可以檢視grok-patterns
## negate 只支援布林值,true 或者false,預設為false。如果設定為true,表示資訊不跟上面正則表示式(pattern)匹配的內容都與匹配的整合,具體整合在前還是在後,看what引數。如果設定為false,即與pattern匹配的內容
## what 前一行 或者後一行,指出上面對應的規則與前一行內容收集為一行,還是與後一行整合在一起
The pattern should match what you believe to be an indicator that the field is part of a multi-line event. The what must be previous or next and indicates the relation to the multi-line event. The negate can be true or false (defaults to 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)
在這裡用PHP-FPM的慢查詢日誌做個測試
PHP-FPM的慢查詢日誌如下:
[11-Mar-2015 16:54:17] [pool www] pid 12873 script_filename = /data//index.php [0x00007f497fa5b620] curl_exec() /data//Account.php:221 [0x00007f497fa5a4e0] call() /data/gintama_app/jidong/game_code/app/controllers/Game.php:31 [0x00007fff29eea180] load() unknown:0 [0x00007f497fa59e18] call_user_func_array() /data/library/BaseCtrl.php:20 [0x00007fff29eea470] handoutAction() unknown:0 [0x00007f497fa59400] run() /data//index.php:30 [11-Mar-2015 16:56:46] [pool www] pid 12881 script_filename = /data/index.php [0x00007f497fa5b620] curl_exec() /data//Account.php:221 [0x00007f497fa5a4e0] call() /data/Game.php:31 [0x00007fff29eea180] load() unknown:0 [0x00007f497fa59e18] call_user_func_array() /data/library/BaseCtrl.php:20 [0x00007fff29eea470] handoutAction() unknown:0 [0x00007f497fa59400] run() /data/index.php:30
新增Logstash的配置檔案logstash_php-fpm.conf
input { file { path => "/tmp/php-slow.log" ###收集的日誌檔案路徑 codec => multiline { ###使用multiline pattern => "^(\[\d{2}-%{MONTH}-\d{4})" ###使用正則表示式,%{MONTH}是在gork定義好的,這邊偷個懶,直接呼叫 negate => true ###設定為true,即取正則表示式不匹配的行,然後將內容與上一行或者下一行整合 what => "previous" ###設定為previous,表示與上一行內容整合在一起。 } } } output{ stdout { codec => rubydebug } elasticsearch{ hosts => ["110.22.145.155:9200"] index => "logstash-php_%{+YYYY.MM.dd}" } }
##測試配置檔案是否符合語法
{logstash_home}/bin/logstash –t logstash_php-fpm.conf
# /opt/logstash/bin/logstash -t logstash-php_slow.conf
Configuration OK
執行logstash,檢視輸出內容
# /opt/logstash/bin/logstash -f ./logstash-php_slow.conf Settings: Default pipeline workers: 8 Pipeline main started { "@timestamp" => "2017-07-17T05:40:40.310Z", "message" => "[11-Mar-2015 16:54:17] [pool www] pid 12873\nscript_filename = /data//index.php\n[0x00007f497fa5b620] curl_exec() /data//Account.php:221\n[0x00007f497fa5a4e0] call() /data/gintama_app/jidong/game_code/app/controllers/Game.php:31\n[0x00007fff29eea180] load() unknown:0\n[0x00007f497fa59e18] call_user_func_array() /data/library/BaseCtrl.php:20\n[0x00007fff29eea470] handoutAction() unknown:0\n[0x00007f497fa59400] run() /data//index.php:30\n ", "@version" => "1", "tags" => [ [0] "multiline" ], "path" => "/tmp/php-slow.log", "host" => "test2-web" } { "@timestamp" => "2017-07-17T05:40:47.321Z", "message" => "[11-Mar-2015 16:56:46] [pool www] pid 12881\nscript_filename = /data/index.php\n[0x00007f497fa5b620] curl_exec() /data//Account.php:221\n[0x00007f497fa5a4e0] call() /data/Game.php:31\n[0x00007fff29eea180] load() unknown:0\n[0x00007f497fa59e18] call_user_func_array() /data/library/BaseCtrl.php:20\n[0x00007fff29eea470] handoutAction() unknown:0\n[0x00007f497fa59400] run() /data/index.php:30", "@version" => "1", "tags" => [ [0] "multiline" ], "path" => "/tmp/php-slow.log", "host" => "test2-web" }
Tomcat堆疊資訊收集也類似,找出規則,然後進行匹配即可,在此不重複測試
相關推薦
使用Logstash multiline 收集PHP、tomcat等應用服務多行堆疊日誌
很多時候應用程式出錯是都是丟擲一堆 堆疊資訊(即在日誌檔案輸出多行),此時logstash可以使用multiline的外掛收集日誌時需要把錯誤堆疊資訊收集為一個記錄。multiline字面意思是多行,顧名思義就是對多行日誌進行處理。 multiline配置與用法 i
Python的基礎教程,比PHP、GO等前景好的一門開發語言!
動態 www. 成功創業 包括 數據分析 資源 ros 單元 ogl Python代表了將來很長一段時間技術走向,其在人工智能和網絡爬蟲、大數據分析等科學領域是有很大的優勢的。 代表方向 Python的基礎教程,比PHP、GO等前景好的一門開發語言! 人工智能 Python
Linux下配置MySQL、MongoDB、Tomcat等軟體和使用
配置阿里雲的yum倉庫 獲取倉庫配置 wgCentos-7.repoet http://mirrors.aliyun.com/repo/ 修改Linux預設的yum配置 將Centos-7.repo中的內容拷貝到/etc/yum.repo.d/CentOS-Base.repo檔案
Mr.Fang出品:銀企互聯(NC模式)開發者版本(.NET WebService中介軟體,Java、PHP、Python等跨語言測試通過)
本開發者版本特點: ERP系統只需要通過HTTP協議將引數和傳送內容一次性POST到WebService指定頁面,接收應答即可。開發者不需要關注簽名、提交頁面格式、報文頭引數、壓縮模式等,實現了跨平臺、跨語言的簡單開發,技術門檻降至極低。 支援壓縮模式提交大批量指令:rd
Linux 安裝 mysql、apache、php、tomcat、nginx
Mysql 1、檢查安裝: 因為mysql資料庫在Linux上實在是太流行了,所以目前下載的主流Linux系統版本基本上都集成了mysql資料庫在裡面,我們可以通過如下命令來檢視我們的作業系統上是否已經安裝了mysql資料庫 [[email protected
Web伺服器、Apache、Tomcat等概念的理解
以一次JSP請求響應為例,講解伺服器,Apache、Tomcat之間的關係。 帶著這樣一個概念去看:Apache與Apache Tomcat(簡稱Tomcat)都是可以獨立執行的伺服器。你平時見到的apache-tomcat-7.0.72實際上只是Tomca
修改nginx/Tomcat等Web服務的埠監聽地址
我們將一起來學習如何在Linux例項中修改nginx、Tomcat等常見Web服務的埠監聽地址。 PS:如果是Windows例項和IIS服務,請參考 ECS Windows 例項中修改IIS監聽的IP地址。 前提條件 你已經在Linux例項上安裝了Web伺服器。你可以參考以下文件安裝並啟
Docker 定製ssh、java等基礎服務映象
1、啟動一個基於centos映象的容器 # docker run –p 10022:22 -ti centos bash [[email protected] /]# -p是為了等會啟動ssh後測試能否正常登陸 2、在容器中安裝openssh-s
【不斷更新貼】總結程式設計的技巧、語法等,需要多敲程式碼、記憶掌握
1. void DrawRectangle( cv::Mat& img, cv::Rect box ) { cv::rectangle(img,box.tl(),box.br(),cv::Scalar(g_rng.uniform(0, 255), g_rng.uni
Filebeat 關鍵字多行匹配日誌采集(multiline與include_lines)
filebeat 關鍵字多行匹配日誌采集(multiline與include_lines)很多同事認為filebeat采集日誌不能做到多行處理,今天這裏討論下filebeat的multiline與include_lines。 先來個案例,以下日誌,我們只要求采集error的字段,2017/06/22 11:2
Filebeat 關鍵字多行匹配日誌採集(multiline與include_lines)
很多同事認為filebeat採集日誌不能做到多行處理,今天這裡討論下filebeat的multiline與include_lines。先來個案例,以下日誌,我們只要求採集error的欄位,2017/06/22 11:26:30 [error] 26067#0: *17918
一文總結應用、Web、HTTP伺服器,Apache、Nginx,Tomcat、IIS、JBoss、Glassfish等區別
一個學習的總結,或者說是彙總,有些連結給出的觀點過時,已按照自己的理解經過修改編輯; 應用、Web、HTTP伺服器 這篇文章講述典型的Web伺服器的工作原理。 Web伺服器和應用伺服器有什麼區別?EAR和WAR部署包之間的不同? 參考stackove
[iOS]關於 App 混合(Hybrid)開發的優化,包括H5、Weex等(本篇博客主要針對 iOS 應用講解,但該思想同樣適用於Android)
color 數據 後臺 lib 新版 生成 下載地址 代碼 版本 我們知道混合開發,可以節省很多成本(時間成本,經濟成本等等),所以有很多公司比較鐘愛這種開發形式,今天所講的優化方式,也是我在我們公司的應用中實際用了的,而且我寫的這個優化的 SDK 已經開源到 gith
java架構師課程、性能調優、高並發、tomcat負載均衡、大型電商項目實戰、高可用、高可擴展、數據庫架構設計、Solr集群與應用、分布式實戰、主從復制、高可用集群、大數據
慢查詢 主從復制 難題 jms 整合 大數 數據庫設計 企業級 nginx網站 15套Java架構師詳情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color:
Apache、Nginx、Tomcat、PHP的區別
linuxapachenginxApache、Nginx、Tomcat、PHP的區別Apache和Nginx算是市面上兩款比較強大的WEB服務軟件。Apache的優點:支持模塊多,功能多運行穩定性強支持PHP模塊,無需安裝其他多余的組件就可以實現.php動態頁面的解析地址重寫功能(rewrite)強大Ngin
Nginx常見問題 、 Tomcat服務器 、 Tomcat高級應用
nginx常見問題 、 tomcat服務#########################################################################################################nginx優化:nginx優化主要從配置文件來著手優化:wo
android仿微信紅包動畫、Kotlin綜合應用、Xposed模塊、炫酷下拉視覺、UC瀏覽器滑動動畫等源碼
架構分析 body oot googl short html 博文 urn 管理 Android精選源碼 仿微信打開紅包旋轉動畫 使用Kotlin編寫的Android應用,內容你想象不到 Android手機上的免Root Android系統日誌Viewer 一個能讓微
PHP-向瀏覽器輸出數據(print、echo、printf、sprintf等)
AR blog 多個 不能 信息 format 參數 vsp void 1、print (語言結構) pirnt - 輸出字符串 int print ( string $arg ) 舉例: 輸出:Hello World! print("Hello World!"); 等
MongoDB、Hbase、Redis等NoSQL優劣勢、應用場景
tel val 開發 一段時間 2.4 緩沖區 sta 位置 date NoSQL的四大種類 NoSQL數據庫在整個數據庫領域的江湖地位已經不言而喻。在大數據時代,雖然RDBMS很優秀,但是面對快速增長的數據規模和日漸復雜的數據模型,RDBMS漸漸力不從心,無法應對很多數據
Spring Boot 多環境配置 --不通的環境應用不通的配置,生成、測試、開發等
方法一: Properties多環境配置 resouce 下面新建如properties-dev.properties等配置檔案(檔名字必須按照這種格式),不通的環境對應著一個配置檔案,想用那個就在application.properties裡使用例如 spri