中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

logstash處理java堆棧日志的方法

發布時間:2021-06-25 13:49:58 來源:億速云 閱讀:482 作者:chen 欄目:編程語言

本篇內容主要講解“logstash處理java堆棧日志的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“logstash處理java堆棧日志的方法”吧!

一、背景

在我們的java程序中,經常會輸出一些日志,來幫助我們來分析一些問題。但是對于我們的異常來說,它可能存在多行,因此我們就需要處理這種多行的事件。在 logstash 中,我們可以借助 multiline codec 來處理。

二、需求

假設我們有如下數據。

129904 [2021-05-11 13:31:19] [ip=] INFO  o.s.c.a.AnnotationConfigApplicationContext [doClose(984)] - Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3e5d4f6b: startup date [Tue May 11 13:29:11 CST 2021]; parent: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@299321e2
129905 [2021-05-11 13:31:19] [ip=] WARN  o.s.c.a.AnnotationConfigApplicationContext [doClose(994)] - Exception thrown from ApplicationListener handling ContextClosedEvent
org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'eurekaAutoServiceRegistration': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:216)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1080)

logstash處理java堆棧日志的方法

需要將如上的數據做一個多行展示。

129904 的作為一行展示。

129905 的異常堆棧數據作為一行展示。

三、實現思路

1、分析日志

129904 [2021-05-11 13:31:19] [ip=] INFO  o.s.c.a.AnnotationConfigApplicationContext [doClose(984)] - Clos
129905 [2021-05-11 13:31:19] [ip=] WARN  o.s.c.a.AnnotationConfigApplicationContext [doClose(994)] - Exception thrown from ApplicationListener handling ContextClosedEvent

從上方簡化的日志可知,我們的日志每行都是以一個數字開頭,那么可以認為以數字開頭的行是一個單獨的行,以非數字開頭的行是隸屬于上一行的,即是一個多行的。

2、實現,編寫pipeline文件

vim java-exception.conf

input {
    file {
        path => ["/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/java-exception/application*.log"]
        start_position => "end"
        sincedb_path => "/Users/huan/soft/elastic-stack/logstash/logstash/pipeline.conf/java-exception/sincedb.db"
        sincedb_write_interval => "15 seconds"
        mode => "tail"
        type => "application"

        codec => multiline {
            pattern => "^\d+"
            negate => "true"
            what => "previous"
            charset => "UTF-8"
            auto_flush_interval => 3
        }
    }
}

filter {
    
}

output {
    stdout {
        codec => rubydebug {
        
        }
    }
}

我們主要關注的是 multiline中的配置

  • pattern: 這個是用來匹配文本的表達式,也可以是grok表達式

  • what: 如果pattern匹配成功的話,那么匹配行是歸宿于上一個事件,還是歸屬于下一個事件。

    • previous: 歸屬于上一個事件

    • next: 歸屬于下一個事件

  • negate:是否對 pattern 的結果取反

    • false: 不取反,是默認值

    • true: 取反。將多行事件掃描過程中的行匹配邏輯取反(如果pattern匹配失敗,則認為當前行是多行事件的組成部分)

  • auto_flush_interval: 當匹配到一個多行格式時,在 auto_flush_interval秒之內,如果沒有新的行匹配的話,則會轉換成 logstash 的一個事件進行發布。默認沒有設置。單位是:秒(s)

四、注意事項

1、默認情況下,logstash 每讀取到一行就會發送一個事件。

2、如果要發送多行事件,就需要使用 multiline 來實現。

3、如果我們的 logstash 在一個 pipeline 中存在多個輸入,那么多行的處理,應該在發送數據的源頭解決。即,在logstash自身不處理多行。因為可能會導致數據錯亂。

logstash處理java堆棧日志的方法

五、參考文檔

1、https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html

2、https://www.elastic.co/guide/en/logstash/current/multiline.html

到此,相信大家對“logstash處理java堆棧日志的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莆田市| 保定市| 普安县| 福鼎市| 远安县| 武平县| 库伦旗| 荃湾区| 白水县| 临西县| 遂溪县| 中阳县| 子长县| 石家庄市| 凯里市| 辽源市| 乡城县| 连山| 三河市| 广饶县| 洪雅县| 麻栗坡县| 墨脱县| 比如县| 宜川县| 鹤庆县| 洛川县| 会泽县| 宁津县| 武川县| 扎囊县| 沂水县| 岳普湖县| 松潘县| 会昌县| 喀喇| 枣阳市| 永登县| 雅江县| 肃北| 孟州市|