logstash收集tomcat-json日志

架构图

image.png

本次没有使用redis,直接用logstash(生产环境的话,建议搭建使用filebeat)收集到的数据送到es中去,这样的坏处,当量大的话,导致es压力上去


1,安装

    jdk,es,kibana省略。。。

#安装tomcat
[root@localhost ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.38/bin/apache-tomcat-8.0.38.tar.gz
[root@localhost ~]# tar xvf apache-tomcat-8.0.38.tar.gz
[root@localhost ~]# mv apache-tomcat-8.0.38 /data/application/tomcat

2,启动tomcat

#来个简单界面
[root@localhost ~]#mkdir /data/application/tomcat/webapps/webdir
[root@localhost ~]#echo "Hello,Tomcat" > /data/application/tomcat/webapps/webdir/index.html
#启动tomcat
[root@localhost webapps]# /data/application/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /data/application/tomcat
Using CATALINA_HOME:   /data/application/tomcat
Using CATALINA_TMPDIR: /data/application/tomcat/temp
Using JRE_HOME:        /data/application/jdk1.8.0_91/
Using CLASSPATH:       /data/application/tomcat/bin/bootstrap.jar:/data/application/tomcat/bin/tomcat-juli.jar

进行访问

image.png

3,修改tomcat日志为json格式

#根据自己需要修改

[root@localhost tomcat]# vim /data/application/tomcat/conf/server.xml

image.png

 <Valve className="org.apache.catalina.valves.AccessLogValve"

directory="logs"

        prefix="tomcat_access_log" suffix=".log"

        pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;method&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;AgentVersion&quot;:&quot;%{User-Agent}i&quot;}"/>

#停止tomcat
[root@localhost tomcat]# ./bin/shutdown.sh
#启动tomcat
[root@localhost tomcat]# ./bin/startup.sh

4,查看tomcat日志格式

image.png

#验证json日志

https://www.json.cn

image.png

4,测试logstash配置文件

[root@localhost server_config]# /data/application/logstash-5.2.0/bin/logstash -f tomcat.conf -t

image.png

#启动logstash服务
[root@localhost server_config]# cat tomcat.conf 
input {
  file {
    path => "/data/application/tomcat/logs/tomcat_access_log*.log"
    start_position => "end"                    
    type => "tomcat-log"                
    stat_interval => "3"
  }
}
output {
  if [type] == "tomcat-log" {      
    elasticsearch {
      hosts => ["192.168.201.135:9200"]    
      index => "tomcat-access-%{+YYYY.MM.dd}" 
      codec => "json"            
    }}
}
[root@localhost server_config]# /data/application/logstash-5.2.0/bin/logstash -f tomcat.conf

image.png


5,查看es状况

image.png

6,kibana效果

image.png

至此tomcat收集日志结束

注意:

  1. logstash的output中,输入同一个集群的不同机器上效果是一致的,因为他们是一个集群。当然也可以指定输出到不同的集群中。

2. 从kibana Tomcat页面中可以看出,Tomcat日志,已经变成了json格式,这是由于logstash中指定了参数codec="json" 的结果,否则kibana这里就是一坨

3. 这个坑是关于时间同步的,如果kibana与你的logstash时间不同步,kibana上的日志可能无法显示,这就需要养成做标准化的习惯,切记


猜你喜欢

转载自blog.51cto.com/hsuing/2108093