小生博客:http://xsboke.blog.51cto.com
<代码> - - - - - - -谢谢您的参考,如有疑问,欢迎交流代码><人力资源/>
目录
-
<李>需求李>
<李>环境李>
<李> <代码>欣赏代码>官方介绍李>
<李> <代码>网络> 代码端配置李>
<李>部分效果展示李>
需求
<代码>使用filebeat收集nginx访问日志,输出到logstash, logstash使用神交过滤器插件将获取到的nginx日志结构化 将结构化的nginx日志输出到elasticsearch 代码>
环境
-
<李>
这里只列出了和<代码>神交> 代码相关的配置,其他配置参考文章ELK7.4——快速入门实现数据收集。
<代码> web 172.16.100.251 nignx/filebeat/logstash elasticsearch 172.16.100.252 elasticsearch/kibana 代码>李>
<代码> 代码>心领神会的官方介绍
-
<李>
解析任意文本并将其结构化。
李> <李><代码>欣赏代码>是将非结构化日志数据解析为结构化和可查询内容的好方法。
李> <李>该工具非常适合<代码> syslog 代码>日志,<代码> apache> 代码和其他<代码>网络> 代码服务器日志,mysql <代码> 代码>日志,以及通常用于人类而非计算机使用的任何日志格式。
李> <李><代码>欣赏代码>语法:<代码> %{语法:语义}代码>
-
<李> 代码>:<代码>语法匹配语法,也就是<代码>欣赏代码>语法。附:点击查看:欣赏模式李>
<李> <代码>语义代码>:用于标识匹配到的字符串,也就是<代码> 代码>。李>
官方推荐的一个验证神交语法的web工具,使用方法,将需要解析的字符串写入到第一个文本输入框,将写好的神交表达式写入第二个输入框,然后勾选<代码>命名了alt=" ELK7.4-Lostash神交格式化Nginx日志"> 李> <李>提示,为了避免“|“被转义,这里使用“\“禁止其转义。李> 李>
<代码>网络> 代码配置
<代码> #这里的日志格式比较复杂,是为了更好的展示神交 log_format访问“美元request_time |主机| remote_addr美元| $ remote_user | (time_local美元)| |请求状态| $美元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’; 代码>
<代码> vim/etc/filebeat/filebeat.yml filebeat.inputs: 类型:日志 启用:真 道路: ——/var/log/nginx/jpg_access.log 标签(“nginx_access”): 代码>
<代码> vim/etc/logstash/conf.d/nginx.conf 输入{ 节拍{ 端口=比;5044 } } 过滤器{ 如果在[标记]“nginx_access”{ 神交{ 匹配=比;{“消息”=比;“%{号码:request_time} \ | % {IPORHOST:主机}\ | % {IPORHOST: remote_addr} \ | %{用户名:remote_user} \ | \ [% {HTTPDATE: time_local} \] \ | % {NOTSPACE: request_method} % {NOTSPACE:请求}(?:HTTP/%{号码:http_version}) %{号码:地位}\ \ | | %{号码:upstream_status} \ | %{号码:upstream_response_time} \ | % {NOTSPACE: upstream_addr} \ | %{号码: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 { 源=比;“http_x_forwarded_for”#通过geoip库查询IP归属地 } } } 输出{ 如果在[标记]“nginx_access”{ elasticsearch { 主机=比;[" 172.16.100.252 "] 指数=比;“nginx_access - % {+ YYYY.MM.dd}” } } }代码>
效果
然后在<代码> Kibana> 代码上面添加索引,在<代码> 代码>页发现面就会看多自定义的<代码>字段代码>
这样在更利于后期的数据分析,并且在<代码> 代码>页发现面可以更直观的过滤或者查看数据。