ELK7.4-LostashGrok格式化Nginx日志-创新互联
小生博客:http://xsboke.blog.51cto.com
创新互联是一家专业提供清原企业网站建设,专注与成都网站设计、成都网站建设、H5技术、小程序制作等业务。10年已为清原众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。 -------谢谢您的参考,如有疑问,欢迎交流
目录
- 需求
- 环境
Grok
官方介绍Web
端配置- 部分效果展示
需求
使用filebeat收集nginx访问日志,output到logstash,
logstash使用grok filter plugin将获取到的nginx日志结构化
将结构化的nginx日志output到elasticsearch
环境
这里只列出了和
grok
相关的配置,其他配置参考文章ELK7.4-快速入门实现数据收集.web 172.16.100.251 nignx/filebeat/logstash elasticsearch 172.16.100.252 elasticsearch/kibana
Grok
的官方介绍
解析任意文本并将其结构化。
Grok
是将非结构化日志数据解析为结构化和可查询内容的好方法。该工具非常适合
syslog
日志,apache
和其他Web
服务器日志,mysql
日志,以及通常用于人类而非计算机使用的任何日志格式。Grok
语法:%{SYNTAX:SEMANTIC}
SYNTAX
:匹配语法,也就是Grok
语法.附:点击查看:Grok PatternsSEMANTIC
:用于标识匹配到的字符串,也就是field
.
官方推荐的一个验证Grok语法的web工具,使用方法,将需要解析的字符串写入到第一个文本输入框,将写好的Grok表达式写入第二个输入框,然后勾选
Named Captures Only
即可.示例:
Nginx Log Format
:$request_time|$host|$remote_addr|[$time_local]
Nginx Log
:0.123|baidu.com|192.168.0.1|[18/Oct/2019:11:22:14 +0800]
-- 提示,为了避免"|"被转义,这里使用"\"禁止其转义.
web
配置
Nginx Log Format
# 这里的日志格式比较复杂,是为了更好的展示Grok
log_format access '$request_time|$host|$remote_addr|$remote_user|[$time_local]|$request|$status|$upstream_status|$upstream_response_time|$upstream_addr|$body_bytes_sent|$request_body|$http_referer|$http_user_agent|$http_x_forwarded_for|$http_x_forwarded_path,$server_addr|$upstream_cache_status';
filebeat
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/jpg_access.log
tags: ["nginx_access"]
logstash
vim /etc/logstash/conf.d/nginx.conf
input {
beats {
port => 5044
}
}
filter {
if "nginx_access" in [tags] {
grok {
match => { "message" => "%{NUMBER:request_time}\|%{IPORHOST:host}\|%{IPORHOST:remote_addr}\|%{USERNAME:remote_user}\|\[%{HTTPDATE:time_local}\]\|%{NOTSPACE:request_method} %{NOTSPACE:request} (?:HTTP/%{NUMBER:http_version})\|%{NUMBER:status}\|%{NUMBER:upstream_status}\|%{NUMBER:upstream_response_time}\|%{NOTSPACE:upstream_addr}\|%{NUMBER:body_bytes_sent}\|%{NOTSPACE:request_body}\|%{NOTSPACE:http_referer}\|%{GREEDYDATA:http_user_agent}\|%{NOTSPACE:http_x_forwarded_for}\|%{NOTSPACE:http_x_forwarded_path}\|%{NOTSPACE:upstream_cache_status}" }
}
geoip {
source => "http_x_forwarded_for" # 通过geoip库查询IP归属地
}
}
}
output {
if "nginx_access" in [tags] {
elasticsearch {
hosts => ["172.16.100.252"]
index => "nginx_access-%{+YYYY.MM.dd}"
}
}
}
效果
然后在Kibana
上面添加索引,在Discover
页面就会看多自定义的fields
这样在更利于后期的数据分析,并且在Discover
页面可以更直观的过滤或者查看数据.
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:ELK7.4-LostashGrok格式化Nginx日志-创新互联
标题链接:http://azwzsj.com/article/dogepd.html