logstash 字符串转换
匿名 | 发布于2018年06月07日 | 阅读数:11079
logstash 这块还需要继续优化下:
request_time, upstream_response_time 等的数据类型需要改为float或者double,
以及 status 为int等等,目前默认是string的,
从而无法在kibana上按照histogram或者 average等维度查看请求的状态分布、延迟分布等信息。
日志格式是 文本格式,目前logstash是这样写的。
"message" =>"%{IPV4:remote_addr} - (%{USERNAME:user}|-) \[%{HTTPDATE:nginx_timestamp}\] %{NUMBER:http_status_code} %{BASE10NUM:bytes_sent:int} %{BASE16FLOAT:request_time} (%{BASE16FLOAT:upstream_response_time}|-) %{WORD:scheme} %{HOSTNAME:domain} \"%{WORD:verb} (?<request>\S+) HTTP/%{NUMBER:httpversion}\" \"(?<http_referer>\S+)\" \"(?<http_user_agent>(\S+\s+)*\S+)\" \"(?<http_x_forwarded_for>(\S+\s+)*\S+)\" \"(?<http_pinpoint_traceid>\S+)\""
request_time, upstream_response_time 等的数据类型需要改为float或者double,
以及 status 为int等等,目前默认是string的,
从而无法在kibana上按照histogram或者 average等维度查看请求的状态分布、延迟分布等信息。
日志格式是 文本格式,目前logstash是这样写的。
"message" =>"%{IPV4:remote_addr} - (%{USERNAME:user}|-) \[%{HTTPDATE:nginx_timestamp}\] %{NUMBER:http_status_code} %{BASE10NUM:bytes_sent:int} %{BASE16FLOAT:request_time} (%{BASE16FLOAT:upstream_response_time}|-) %{WORD:scheme} %{HOSTNAME:domain} \"%{WORD:verb} (?<request>\S+) HTTP/%{NUMBER:httpversion}\" \"(?<http_referer>\S+)\" \"(?<http_user_agent>(\S+\s+)*\S+)\" \"(?<http_x_forwarded_for>(\S+\s+)*\S+)\" \"(?<http_pinpoint_traceid>\S+)\""
4 个回复
auroracxy
赞同来自: fantaigan 、duffy 、caogx
nginx部分配置直接用json,省去很多麻烦,注意里面有request_body, 所有后面logstash有一些转义的配置,如果不需要直接把它删了吧
filebeat配置部分:
logstah配置部分:
最后模板:
zqc0512 - andy zhou
赞同来自:
要先看你的日志格式,不匹配的话,修改这个filter..
字段类型 可以在mapping中添加。
fantaigan - JAVA
赞同来自:
mutate{
convert => ["request_time","float"]
}
}
加个filter?
caogx - IT
赞同来自: