2019独角兽企业重金招聘Python工程师标准>>>
一:ELK日志收集器组件filebeat下载
- 官方下载地址:https://www.elastic.co/downloads/beats/filebeat
- 官方文档地址:https://www.elastic.co/guide/en/beats/filebeat/current/index.html
二: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 配置文件,配置如下:
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 配置文件,配置如下: