天天看点

logstash 收集tomcat异常信息

我所期望达到的效果,就是每个日期一条,在kibana界面也是一条。多行异常的也是一条。

其实,很简单,就是加个反向判断。

logstash原理

一个客户端,一个服务器,就是这样的模式

没什么神奇的,最麻烦的正则匹配,不好弄。听说storm更好用。

1.client配置

cat /etc/logstash/conf.d/shipper.conf

patterns_dir => "/etc/logstash/conf.d" 这个东西就是正则表达式

新建一个文件 cat /etc/logstash/conf.d/j2ee

我的日志格式是这样的

如果你的日志不一样,那么j2ee文件要做相应的修改

比如

<a href="http://s2.51cto.com/wyfs02/M00/89/22/wKiom1gIjtTw1-TzAABvblyuSNE276.png-wh_500x0-wm_3-wmp_4-s_2078496716.png" target="_blank"></a>

启动脚本logstash.sh

sh logstash.sh stop/start

2.server配置

cat /etc/logstash/conf.d/indexer.conf

3.kibana效果

<a href="http://s4.51cto.com/wyfs02/M00/89/46/wKioL1gOuiaRdfbuAADZlql089g587.png-wh_500x0-wm_3-wmp_4-s_604642537.png" target="_blank"></a>

多行为一行就不截图了

注意有事启动了logstash,但是没有日志传送过来

input file 匹配类型,正则有问题

filter正则有问题

总而言之,就是配置有问题。

demo

<code>client</code>

<code>cat</code> <code>demo.conf</code>

<code>input {</code>

<code>    </code><code>file</code> <code>{</code>

<code>        </code><code>path =&gt; [</code><code>"/home/python/demo/*/*/*/*"</code><code>]</code>

<code>        </code><code>type</code> <code>=&gt; </code><code>"demo"</code>

<code>        </code><code>start_position =&gt; </code><code>"beginning"</code>

<code>    </code><code>}</code>

<code>}</code>

<code>filter {</code>

<code>  </code><code>if</code> <code>[</code><code>type</code><code>] == </code><code>"demo"</code> <code>{</code>

<code>      </code><code>multiline {</code>

<code>          </code><code>patterns_dir =&gt; </code><code>"/etc/logstash/conf.d/patterns"</code>

<code>          </code><code>pattern =&gt; </code><code>"(^%{MYTIMESTAMP})"</code>

<code>          </code><code>negate =&gt; </code><code>true</code>

<code>          </code><code>what =&gt; </code><code>"previous"</code>

<code>      </code><code>}</code>

<code>  </code><code>grok {</code>

<code>        </code><code>patterns_dir =&gt; </code><code>"/etc/logstash/conf.d/patterns"</code>

<code>        </code><code>match =&gt; [ </code><code>"message"</code><code>, </code><code>"%{MYLOG}"</code> <code>]</code>

<code>        </code><code>add_field =&gt; [ </code><code>"log_ip"</code><code>, </code><code>"172.29.xx.xx"</code> <code>]</code>

<code>  </code><code>}</code>

<code>output {</code>

<code>        </code><code>stdout {}</code>

<code>        </code><code>redis {</code>

<code>        </code><code>host =&gt; </code><code>"172.29.xx.xx"</code>

<code>        </code><code>port =&gt; 6379</code>

<code>        </code><code>password =&gt; </code><code>"xxxxxx"</code>

<code>        </code><code>data_type =&gt; </code><code>"list"</code>

<code>        </code><code>key =&gt; </code><code>"key_count"</code>

<code>cd</code> <code>/etc/logstash/conf</code><code>.d</code><code>/patterns</code>

<code>cat</code> <code>j2ee</code>

<code>JAVACLASS (?:[a-zA-Z$_][a-zA-Z$_0-9]*\.)*[a-zA-Z$_][a-zA-Z$_0-9]*</code>

<code>HTTPPORT  ([a-zA-Z$_0-9]*\-)*([0-9])</code>

<code>JAVALOGMESSAGE (.*)</code>

<code>MYTIMESTAMP 20%{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:%{MINUTE}:%{SECOND}</code>

<code>MYLOG %{MYTIMESTAMP:mytimestamp}\s\[%{HTTPPORT:port}\]\s%{LOGLEVEL:level}\s%{JAVACLASS:class}\s-%{JAVALOGMESSAGE:logmessage}</code>

<code>logstash  -f </code><code>/etc/logstash/conf</code><code>.d</code><code>/logstash-indexer</code><code>.conf  or service logstash start</code>

<code>server</code>

<code>nohup</code> <code>/usr/share/elasticsearch/bin/elasticsearch</code> <code>&amp;</code>

<code>nohup</code> <code>/usr/bin/kibana</code> <code>&amp;</code>

还有es+gra+logstash

本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1863975,如需转载请自行联系原作者

继续阅读