- A+
所属分类:ELKstack
要修改为json格式tomcat日志文件:localhost_access_log
在 tomcat 主配置文件 server.xml 中在最下面找到定义 localhost_access_log 日志格式的配置:
- # tomcat/conf/server.xml
- ......
- ......
- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
- prefix="localhost_access_log" suffix=".txt" # 日志默认名称(也可以修改)
- pattern="%h %l %u %t "%r" %s %b" /> # 此行就是定义访问日志的配置
- ......
- ......
我们将定义访问日志格式的配置替换为如下配置:
- <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
- prefix="tomcat-access-log" suffix=".txt"
- pattern="{"clientip":"%h", "Client User":"%l", "authenticated":"%u", "AccessTime":"%t", "method":"%r", "status":"%s", "SendBytes":"%b", "Query?string":"%q", "partner":"%{Referer}i", "AgentVersion":"%{User-Agent}i"}"/>
日志格式配置简单解释:以一个 "clientip":"%h" 为例,其中的 " 就是双引号,被两个 " 中的 clientip 是key, %h是一个值,这个值也是必须tomcat中支持的。
修改好以上配置之后重启tomcat,访问页面,然后查看日志输出,对日志输出是否是json格式验证一下看我们是否修改成正确,验证网址:https://www.json.cn/
tomcat 访问日志格式修改好之后就可以配置logstash配置并重启,然后在 kibana 界面添加索引进行查看日志了
logstash配置参考:
- [root@elk-node3 ~]# vim /etc/logstash/conf.d/logstash-tomcat-access-log.conf
- input {
- file {
- path => "/usr/local/tomcat/logs/localhost_access_log.*.log"
- type => "tomcat-access-log-node3"
- start_position => "beginning"
- stat_interval => "2"
- codec => "json" # 日志如果是json格式的话需要配置对json解析的编码
- }
- }
- output {
- elasticsearch {
- hosts => ["192.168.56.31:9200"]
- index => "logstash-tomcat-access-log-node3-%{+YYYY.MM.dd}"
- }
- file { # 这里输出到文件可以进行调试,调试成功之后将该配置去除即可
- path => "/tmp/tomcat.txt"
- }
- }
- [root@elk-node3 conf]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash-tomcat-access-log.conf -t