配置文件只代表个人操作,以为之后还要修改logstash的fileter。所以自己定义好了配置文件的格式。
1 修改服务器日志说明
由于logstash的grok要通过filebeat传输的日志文件进行过滤,在kibana的展示界面才能展示出不同的字段,比如level、message的字段的内容。所以需要统一日志的输出的格式,如果不统一日志格式,在logstash过滤的时候会发生错误,导致在kibana上无法展示相应字段内容。是日志系统失去了价值。
线上服务器修改日志输出格式需要重启服务,请谨慎操作。以下会介绍日志如何格式化输出。
2 Tomcat的log4j配置
2.1 创建log4j.properties文件
首先创建一个log4j.properties文件,并将其放置在tomcat的lib目录$CATALINA_BASE/lib下。内容如下:
log4j.rootLogger=INFO,stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-d{yyyy-MM-dd HH\:mm\:ss,SSS}] [%c] [%p] [%m]%n
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
#c3po config
log4j.logger.com.opensymphony=warn
log4j.logger.com.mchange=warn
#spring config
log4j.logger.org.springframework=warn
#mybatis config
log4j.logger.org.apache.ibatis.logging=warn
log4j.logger.org.apache.ibatis.datasource.pooled=warn
log4j.logger.org.apache.ibatis.transaction.jdbc=warn
log4j.logger.org.mybatis.spring=warn
log4j.logger.cn.com.widgetdo.mybatis.scanner=warn
#调试时看sql语句 将 warn变为 debug就可以了
log4j.logger.cn.com.widgetdo.mapper=debug
#axis config
log4j.logger.org.apache.axis=warn
log4j.logger.org.apache.axis.utils.JavaUtils=error
#quartz config
log4j.logger.org.quartz=warn
# beanutil config
log4j.logger.org.apache.commons.beanutils=warn
#struts2 config
log4j.logger.org.apache.struts2=ERROR
log4j.logger.freemarker=warn
log4j.appender.R.File=${catalina.home}/logs/tomcat.out
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss,SSS}] [%c] [%p] [%m]%n
#log4j.logger.com.opensymphony.xwork2=ERROR
2.2 下载log4j的jar包
需要1.2以上版本
下载地址: http://archive.apache.org/dist/logging/log4j/1.2.17/log4j-1.2.17.jar
2.3 下载tomcat-juli.jar、tomcat-juli-adapters.jar
作为tomcat的外部组件。注意,此处的tomcat-juli.jar和默认的不同,它包含了Apache Commons Logging的全部实现
① 载地址:
http://www.apache.org/dist/tomcat/tomcat-7/v7.0.90/bin/extras/
或者
② 载地址:tomcat官网—>tomcat7
1.1 替换tomcat-juli.jar
将$CATALINA_HOME/bin/tomcat-juli.jar替换为下载的tomcat-juli.jar,并修改成755权限
[root@cxm bin]# chmod 755 tomcat-juli.jar
删除$CATALINA_BASE/conf/logging.properties文件
重启tomcat
2 修改tomcat的access_log
修改tomcat的server.xml配置文件。把
pattern="%h %l %u %t "%r" %s %b%{Referer}i %{User-Agent}i"
修改成:
pattern="%h %l %u [%{yyyy-MM-dd HH:mm:ss,SSS}t] [%r] %s [%{Referer}i] [%{User-Agent}i] %b %T"
3 Nginx日志配置
3.1 主配置文件修改
在nginx主配置文件nginx.conf里添加json的匹配字段。
log_format json '{"@timestamp":"$time_iso8601",'
'"@version":"1",'
'"domain":"$server_addr",'
'"remoteaddr":"$remote_addr",'
'"bodybytessent":"$body_bytes_sent",'
'"requesttime":"$request_time",'
'"uri":"$request_uri",'
'"status":"$status",'
'"httpreferer":"$http_referer",'
'"httpuseragent":"$http_user_agent",'
'"httpxforwardedfor":"$http_x_forwarded_for",'
'"upstreamaddr":"$upstream_addr",'
'"upstreamresponse_time":"$upstream_response_time"}';
3.2 虚拟配置文件修改
在虚拟配置文件的日志文件配置json解析。例如:
access_log /data/nginx_log/asm.access.log json;
4 安装filebeat
直接使用filebeat的rpm包安装即可。去官网下载rpm包,之后上传到服务器,并且直接执行rpm –ivh 包名即可
4.1 下载地址:
官方下载地址
https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.11-x86_64.rpm
4.2 安装程序
[root@localhost software]# rpm -ivh filebeat-5.6.11-x86_64.rpm
5 相关命令及其配置
5.1 相关目录说明
·/etc/filebeat:filebeat主目录,所有filebeat配置文件会放在这。
·/etc/filebeat/filebeat.yml:filebeat配置文件filebeat 配置文件具体配置
·创建/data/filebeat_log目录,为了更好的检测filebeat是否正常抓取日志
5.2 相关命令
启动:systemctl start filebeat.service
停止:systemctl stop filebeat.service
重启:systemctl restart filebeat.service
查看状态:systemctl status filebeat.service
开机自启动:systemctl enable filebeat.service
5.3 配置文件说明
filebeat.modules:
filebeat.prospectors:
- input_type: log
paths: #日志文件路径列表
- /opt/tomcat7/logs/asm.log #日志绝对路径
multiline.pattern: ^\[
#多行匹配模式,后接正则表达式,默认无. 控制Filebeat如何处理跨越多行的日志消息 的选项。其中消息的第一行以方括号([)开头(针对java日志的多行匹配问题)
multiline.negate: true
#多行匹配模式后配置的模式是否取反,默认false
# false匹配pattern的行合并到上一行;true不匹配pattern的行合并到上一行
multiline.match: after
#定义多行内容被添加到模式匹配行之后还是之前,默认无,可以被设置为after或者before
fields:
#添加附件字段,可以使values,arrays,dictionaries或者任何嵌套数据
indexdiy: epg
#输出到es的index
project_tag: asm
#输出到es的项目标签
fields_under_root: true
# 如果该选项设置为true,则新增fields成为顶级目录,而不是将其放在fields目录下。自定义的field会覆盖filebeat默认的field(我们每个都是自定义的所以不使用默认的。)
output.kafka: #elasticsearch输出模块
enabled: true #启用模块
hosts: ["10.10.4.11:9092","10.10.4.12:9092","10.10.4.13:9092"] #ES地址
topic: '%{[indexdiy]}'
output:
file:
path: "/data/filebeat_log"
filename: mix_log
rotate_every_kb: 1000
number_of_files: 3
logging.to_files: true
logging.files: