首页云计算 正文

ELK logstash 处理多行事件(25th)

2024-11-19 5 0条评论
  1. 首页
  2. 证书相关
  3. ELK logstash 处理多行事件(25th)

ELK logstash 处理多行事件(25th)

发布日期:2017-04-23

有些日志是分多行输出的,为了能正确的处理这些多行的事件,logstash必须哪些行是单一事件的一部分。多行事件处理是比较复杂的,需依赖正确的事件顺序。最佳方法是尽早的在管道中处理以保证日志有序。这就是本文要说到的logstash管道multiline codec,专门来处理合并多行事件的。

multiline插件最重要的方面:

  •  pattern 选项指定一个正则表达式。 事件匹配指定的正则表达式来确定是前一个事件的内容还是新的事件的内容。可以使用grok正则表达式的模板来配置该选项。
  •  what 选项有两个选择值:previous 或者 next。previous 值指定行匹配pattern选项的内容是上一行的一部分。 next 指定行匹配pattern选项的内容是下一行的一部分。* negate选项适用于 multiline codec 行不匹配pattern选项指定的正则表达式。

了解更多还需要看看multiline codec 和 multiline filter 插件的配置项。

下面介绍三个例子:

  • java 堆栈跟踪单个事件
  • C-style 线连续成单个事件
  • 从时间标记事件

java stack traces

Java stack traces  包含多行内容,后面几行与初始行缩进,如下所示:

1 2 3 4 Exception in thread “main” java . lang . NullPointerException          at com . example . myproject . Book . getTitle ( Book . java : 16 )          at com . example . myproject . Author . getBookTitles ( Author . java : 25 )          at com . example . myproject . Bootstrap . main ( Bootstrap . java : 14 )

logstash配置如下:

1 2 3 4 5 6 7 8 input {    stdin {      codec = > multiline {        pattern = > “^\s”        what = > “previous”      }    } }

该配置将任何以空白开始的行与上一行合并。

输出的结果如下:

1 2 3 4 5 6 7 8 9 {      “@timestamp” = > “2015-12-11T07:32:20.872Z” ,        “message” = > “Exception in thread \”main\” java.lang.NullPointerException\n        at com.example.myproject.Book.getTitle(Book.java:16)\n        at com.example.myproject.Author.getBookTitles(Author.java:25)\n        at com.example.myproject.Bootstrap.main(Bootstrap.java:14)Settings: Default filter workers: 4″ ,        “@version” = > “1” ,            “tags” = > [          [ 0 ] “multiline”      ] ,            “host” = > “trustauth.cn” }

line continuations

多种编程语言使用\字符在一行末尾表示该行继续,如:

1 2 printf ( “%10.10ld  \t %10.10ld \t %s\   %f” , w , x , y , z ) ;

logstash配置如下:

1 2 3 4 5 6 7 8 input {    stdin {      codec = > multiline {        pattern = > “\\$”        what = > “next”      }    } }

该配置将以\字符结尾的任何行合并到下一行。

输出的结果如下:

1 2 3 4 5 6 7 8 9 {      “@timestamp” = > “2015-12-11T07:46:02.116Z” ,        “message” = > “printf (\”%10.10ld  \\t %10.10ld \\t %s\\\n  %f\”, w, x, y, z );” ,        “@version” = > “1” ,            “tags” = > [          [ 0 ] “multiline”      ] ,            “host” = > “trustauth.cn” }

timestamps

有些日志是以时间戳开始的,如:

1 2 [ 2015 08 24 11 : 49 : 14 , 389 ] [ INFO ] [ env                        ] [ Letha ] using [ 1 ] data paths , mounts [ [ / ( / dev / disk1 ) ] ] , net usable _space [ 34.5gb ] , net total _space [ 118.9gb ] , types [ hfs ]

logstash配置如下:

1 2 3 4 5 6 7 8 9 input { stdin {      codec = > multiline {        pattern = > “^%{TIMESTAMP_ISO8601} “        negate = > true        what = > previous      }    } }

该配置使用negate => true 选项来指定任何不是以时间戳开始的行属于前行。也就是不匹配pattern的行都属于前行的内容的一部分。

输出的结果如下:

1 2 3 4 5 6 7 8 9 {      “@timestamp” = > “2015-12-11T08:08:37.013Z” ,        “message” = > “[2015-08-24 11:49:14,389][INFO ][env                      ] [Letha] using [1] data paths, mounts [[/\n(/dev/disk1)]], net usable_space [34.5gb], net total_space [118.9gb], types [hfs]” ,        “@version” = > “1” ,            “tags” = > [          [ 0 ] “multiline”      ] ,            “host” = > “trustauth.cn” }

 

文章转载来自:trustauth.cn

上一篇:zabbix监控多JMX端口

下一篇:Python日常巡检程序(daily-check)

相关新闻

  • SSL证书对网站访问速度有影响吗
  • 个人隐私数据泄露有哪些危害?如何预防?
  • 部署SSL证书有哪些常见的错误
  • 国际证书、国产证书和国密证书
  • 游戏开发为什么离不开代码签名?
  • 僵尸网络攻击手法与防范方式
  • SSL证书助力保障网络数据安全
  • 网站加密与不加密区别
  • SSL证书有哪些类型和价格差异
  • ca机构颁发的证书包括那些内容呢?
文章版权及转载声明

本文作者:admin 网址:http://news.edns.com/post/113149.html 发布于 2024-11-19
文章转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码