logstash收集tomcat-json日志

架构图html

image.png

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


1,安装redis

    jdk,es,kibana省略。。。apache

#安装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
json

#来个简单界面
[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

进行访问
bootstrap

image.png

3,修改tomcat日志为json格式
vim

#根据本身须要修改tomcat

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

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上的日志可能没法显示,这就须要养成作标准化的习惯,切记

相关文章
相关标签/搜索