ELK之日志收集filebeat,并对nginx,tomcat access日志JSON格式化

一:ELK日志收集器组件filebeat下载

二:filebeat 配置说明 filebeat.yml

2.1 input plugin 配置说明

`- type: log
# 是否生效该配置
enabled: true 
# 读取文件的路径,能够多个
paths: 
-C:\Users\Administrator\.IntelliJIdea2017.1\system\tomcat\Unnmed_jjj\logs\localhost_access_log.*.txt
- D:\programFiles\nginx-1.13.6\logs\host.access.log
# 字符行是json格式,以下配置
# json 全部的key 是否在顶级key(json)下
  json.keys_under_root: true
# 若是外部存在key,是否覆盖
  json.overwrite_keys: true
# 是否添加错误key,如解析出错,会添加解析错误信息
  json.add_error_key: true
# 添加message 的key
  json.message_key: log

2.2 output plugin 配置说明

2.2.1 开启ElasticSearch输出

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
   #Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

2.2.2 开启Logstash输出

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["127.0.0.1:4560"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

三:统一发送JSON结构定义:

字段名称 字段类型 字段说明
localIp string 本地服务ip
status string 请求状态
method string 请求方法
url string 请求地址
reqIp string 请求客户端ip
port string 端口
duration string 请求时长
reqTime string 请求时间
serviceType string 服务容器类型,nginx,tomcat...

四:nginx access 日志json格式化配置

字段 说明
request_time 整个请求的总时间,以秒为单位
status 记录请求返回的http状态码,好比成功是200。
upstream_status upstream状态,好比成功是200.
body_bytes_sent 发送给客户端的文件主体内容的大小,好比899,能够将日志每条记录中的这个值累加起来以粗略估计服务器吞吐量
remote_addr 远程客户端的IP地址。
request 请求的URI和HTTP协议,这是整个PV日志记录中最有用的信息,记录服务器收到一个什么样的请求
http_referer 记录从哪一个页面连接访问过来的(请求头Referer的内容 )
http_user_agent 客户端浏览器信息(请求头User-Agent的内容 )
http_x_forwarded_for 客户端的真实ip,一般web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,经过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,能够增长
upstream_response_time 请求过程当中,upstream的响应时间,以秒为单位
upstream_addr upstream的地址,即真正提供服务的主机地址
remote_user 远程客户端用户名称,用于记录浏览者进行身份验证时提供的名字,如登陆百度的用户名scq2099yt,若是没有登陆就是空白。

在nginx.conf 配置文件,配置以下:html

http {
	·····
	log_format  main '{"localIp":"$http_host","status":"$status","method":"$request_method","url":"$request","reqIp":"$remote_addr","port":"","duration":"$request_time","reqTime":"[$time_local]","serviceType":"nginx"}';
	access_log  logs/access.log  main;
	server {
		·····
		access_log  logs/host.access.log  main;
		·····
	}
}

五:tomcat access 日志json格式化配置

字段 说明
%a 远端IP
%A 本地IP
%b 发送的字节数,不包含HTTP头,若是为0,使用”-”
%B 发送的字节数,不包含HTTP头
%h 远端主机名(若是resolveHosts=false),远端的IP
%H 请求协议
%l 从identd返回的远端逻辑用户名,老是返回’-’
%m 请求的方法
%p 收到请求的本地端口号
%q 查询字符串
%r 请求的第一行
%s 响应的状态码
%S 用户的sessionID
%t 日志和时间,使用一般的log格式
%u 认证之后的远端用户(若是存在的话,不然为’-’)
%U 请求的URI路径
%v 本地服务器的名称
%D 处理请求的时间,以毫秒为单位
%T 处理请求的时间,以秒为单位

在server.xml 配置文件,配置以下:nginx

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
			   prefix="localhost_access_log." suffix=".txt"
			   pattern="{&quot;reqTime&quot;:&quot;%t&quot;,&quot;reqIp&quot;:&quot;%a&quot;,&quot;duration&quot;:&quot;%T&quot;,&quot;url&quot;:&quot;%U&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;method&quot;:&quot;%m&quot;,&quot;localIp&quot;:&quot;%A&quot;,&quot;port&quot;:&quot;%p&quot;,&quot;serviceType&quot;:&quot;tomcat&quot;}" />
相关文章
相关标签/搜索