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上的日誌可能無法顯示,這就需要養成做標準化的習慣,切記


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章