ELK收集java日志

Java日志多由多行行组成,初始行之后的每一行以空格开头,如下例所示:在这种情况下,需要在将事件数据output之前处理多行事件。 log [ERROR] - 2018-09-21 04:19:57.685 (SocketTransfer.java:73) - Socket交互遇到错误 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) 配置multiline参数如下:Multiline codec plugin 参数 说明 pattern 指定正则表达式。与指定正则表达式匹配的行被视为前一行的延续或新多行事件的开始。 what previous或next。该previous值指定与pattern选项中的值匹配的行是上一行的一部分。该next值指定与pattern选项中的值匹配的行是以下行的一部分 negate true或false(默认为false)。如果true,与pattern模式不匹配的消息将构成多行过滤器的匹配what并将应用。 sh 1 2 3 4 5 6 7 8 9 10 11 12 input { file { path => "/root/apache-tomcat-8.5.34/logs/catalina.out" type => "sk" start_position => "beginning" codec => multiline { pattern => "^\[" negate => "true" what => "previous" } } } 如上列日志格式为...

 ·  · 

ELK收集syslog

Logstash通过网络将syslog消息作为事件读取。使用用 UDPSocket, TCPServer 和 LogStash::Filters::Grok 来实现 配置示例 sh 1 2 3 4 5 input { syslog{ port => "514" } } 配置客户端,在修改linux主机/etc/rsyslog.conf sh 1 *.* @@host:port 配置说明 参数 说明 * 类型 * 级别 @ udp @@ tcp host 可为主机名或ip地址 注:收集到的数据,本身就以及是rsyslog格式了,无需再进行grok sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 { "message" => "(root) CMD (/bin/echo 1111 >>/root/1.txt)\n", "@version" => "1", "@timestamp" => "2018-10-05T12:13:01.000Z", "host" => "10....

 ·  · 

Logstash使用

1 logstash概述 logstash是基于Jruby语言研发的server/agent结构的日志收集工具,可以在任何一个能产生日志的服务器上部署其agent。agent能同时监控多个产生日志的服务,并把每个服务所产生的日志信息收集并发送给logstash server端。由于收集到的日志信息是分散的,logstash有专门的节点用来将所有的节点收集到的日志信息按时间序列合并在一起形成一个序列,基于这一个序列请求写入并存储在elasticsearch集群中。 kibana是基于node.js开发的elasticsearch的图形用户接口。它可以将用户的搜索语句发送给ES,有ES完成搜索,并且将结果返回。kibana可以将返回的数据,用非常直观的方式(画图)来做趋势展示的。 logstash基于多种数据获取机制,TCP/UDP协议、文件、syslog、windows EventLogs及STDIN等。同时也支持多种数据输出机制。获取到数据后,它支持对数据执行过滤、修改等操作。 logstash基于JRuby语言研发,需要运行在JVM虚拟机之上。工作于agent/server模型。 1.1 logstash工作机制 在每一个产生日志的节点之上部署一个agent,这个agent通常称为shipper。shipper负责收集日志,并且发送给server端。但是在发送给server端时,为了避免server端可能无法应付大量节点同时发来的信息,会在server端和agent端之间放置一个消息队列,通常称之为broker。这个消息队列比较常见的使用redis。各agent将数据发送至broker,logstash服务器会从broker中依次取出日志拿来在本地做过滤、修改等操作。在完修改后将其发送至ES集群。 对于logstash而言,server端也是插件式的工作的模式,与ES的不同在于,ES的插件是可有可无的。logstash的除核心外的所有功能都是基于插件来完成的。 1.2 logstash工作流程 logstash的工作模式类似于管道,从指定位置读入数据,而后过滤数据,最后将其输出到指定位置。事实上logstash的工作流程为:input | filter | output。如无需对数据额外处理,filter可省略。 1.3 logstash插件分类 input plugin:收集数据 codec plugin:编码插件 filter plugin:过滤 output plugin:输出插件 2 logstash安装下载 官网地址:https://www.elastic.co/cn/products../../images/Logstash 3 logstash的配置使用 /etc../../images/Logstash/conf.d/路径下所有以.conf结尾的文件都被当做配置文件使用。对于logstash的配置文件定义,就是定义插件。从哪得到数据。向哪里输出数据。 3.1 logstash的基本配置框架 sh 1 2 3 4 5 6 7 8 9 10 11 input{ .... } filter{ .... } output{ .... } 简单的 sh 1 2 3 4 5 6 7 8 input{ stdin {} } output { stdout{ codec =>rubydebug } } 检查配置文件语法是否正确logstash -f /etc....

 ·  ·