{ "description": "Pipeline for parsing Nginx access logs. Requires the geoip and user_agent plugins.", "processors": [ { "grok": { "field": "message", "patterns": [ "\"?(?:%{IP_LIST:nginx.access.remote_ip_list}|%{DATA:source.address}) - %{DATA:user.name} \\[%{HTTPDATE:nginx.access.time}\\] \"%{DATA:nginx.access.info}\" %{NUMBER:http.response.status_code:long} %{NUMBER:http.response.body.bytes:long} \"%{DATA:http.request.referrer}\" \"%{DATA:user_agent.original}\" %{NUMBER:nginx_request_time} > %{NUMBER:nginx_upstream_response_time}" ], "pattern_definitions": { "IP_LIST": "%{IP}(\"?,?\\s*%{IP})*" }, "ignore_missing": true } }, { "grok": { "field": "nginx.access.info", "patterns": [ "%{WORD:http.request.method} %{DATA:url.original} HTTP/%{NUMBER:http.version}", "" ], "ignore_missing": true } }, { "remove": { "field": "nginx.access.info" } }, { "split": { "field": "nginx.access.remote_ip_list", "separator": "\"?,?\\s+", "ignore_missing": true } }, { "split": { "field": "nginx.access.origin", "separator": "\"?,?\\s+", "ignore_missing": true } }, { "set": { "field": "source.ip", "value": "" } }, { "script": { "lang": "painless", "source": "boolean isPrivate(def dot, def ip) { try { StringTokenizer tok = new StringTokenizer(ip, dot); int firstByte = Integer.parseInt(tok.nextToken()); int secondByte = Integer.parseInt(tok.nextToken()); if (firstByte == 10) { return true; } if (firstByte == 192 && secondByte == 168) { return true; } if (firstByte == 172 && secondByte >= 16 && secondByte <= 31) { return true; } if (firstByte == 127) { return true; } return false; } catch (Exception e) { return false; } } try { ctx.source.ip = null; if (ctx.nginx.access.remote_ip_list == null) { return; } def found = false; for (def item : ctx.nginx.access.remote_ip_list) { if (!isPrivate(params.dot, item)) { ctx.source.ip = item; found = true; break; } } if (!found) { ctx.source.ip = ctx.nginx.access.remote_ip_list[0]; }} catch (Exception e) { ctx.source.ip = null; }", "params": { "dot": "." } } }, { "remove": { "field": "source.ip", "if": "ctx.source.ip == null" } }, { "convert": { "field": "source.ip", "target_field": "source.address", "type": "string", "ignore_missing": true } }, { "convert": { "field": "nginx_request_time", "target_field": "nginx.access.request_time", "type": "float", "ignore_missing": true } }, { "convert": { "field": "nginx_upstream_response_time", "target_field": "nginx.access.upstream_response_time", "type": "float", "ignore_missing": true } }, { "remove": { "field": "nginx_request_time" } }, { "remove": { "field": "nginx_upstream_response_time" } }, { "remove": { "field": "message" } }, { "rename": { "field": "@timestamp", "target_field": "event.created" } }, { "date": { "field": "nginx.access.time", "target_field": "@timestamp", "formats": [ "dd/MMM/yyyy:H:m:s Z" ], "on_failure": [{"append": {"field": "error.message", "value": "{{ _ingest.on_failure_message }}"}}] } }, { "remove": { "field": "nginx.access.time" } }, { "user_agent": { "field": "user_agent.original" } }, { "geoip": { "field": "source.ip", "target_field": "source.geo", "ignore_missing": true } }, { "geoip": { "database_file": "GeoLite2-ASN.mmdb", "field": "source.ip", "target_field": "source.as", "properties": [ "asn", "organization_name" ], "ignore_missing": true } }, { "rename": { "field": "source.as.asn", "target_field": "source.as.number", "ignore_missing": true } }, { "rename": { "field": "source.as.organization_name", "target_field": "source.as.organization.name", "ignore_missing": true } } ], "on_failure": [ { "set": { "field": "error.message", "value": "{{ _ingest.on_failure_message }}" } } ] }
相关推荐
本资源结合我的博客一并使用,用于解决filebeat收集nginx日志用的
Filebeat实时收集Nginx日志说明之所以使用 beats 家族的 Filebeat 来替代 Logstash 是因为 Logstash实在太消耗资源了
Nginx完整配置说明,入门级的,高级指令不在这,得自己买书看,别下错了,基本部署用的
nginx.conf nginx-1.20.1.tar.gz 这是关于centos8的nginx 和nginx 的配置https文件
里面 1.7.4 的nginx https 的配置 下载下来后 需要配置一下 nginx 的配置文件即可
使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, ssl证书自动申请、续签、配置等, 最终生成nginx.conf文件并覆盖nginx的默认配置文件, 完成nginx的最终功能配置。 支持nginx...
Nginx配置文件原始版本,这是刚下来的Nginx服务器最原始的版本内容,下载覆盖即可。
实验一:Nginx日志配置 实验目的 熟悉nginx并进行nginx日志配置 实验内容 查看配置文件信息 打开nginx主配置文件 配置nginx日志 实验环境 kali系统 实验步骤 1.查看nginx版本情况 在kali中输入“nginx -t”来查看...
3.1. Nginx的主配置文件概述 3.1.1. 认识配置文件 3.1.2. nginx的配置文件结构 3.1.3. nginx的全局配置 3.2. events配置 3.3. http的配置 3.4. nginx重要指令之location 4. nginx中的rewrite 4.1. 什么是...
nginx配置文件修改保存,自动加载重启,并检查配置文件是否修改成功。 Windows下使用nginx,启动之后,再修改配置文件,无需命令重新加载,修改保存配置文件,实时更新nginx重启。
nginx完整配置手册
nginx完全配置手册,集群配置 nginx完全配置手册,集群配置
实验三:Nginx权限配置 实验目的 熟悉nignx并配置访问权限 实验内容 查看nginx配置文件 修改访问权限 重启nginx 查看结果 实验环境 kali系统 实验步骤 查看nginx配置文件 Nginx的主配置文件为“/etc/nginx/nginx....
Nginx核心配置文件Nginx.conf,keepalived核心配置文件keepalived.conf
Nginx官网配置.pdf Nginx基本配置.pdf Nginx模块.pdf Nginx指南.pdf 第1章 Nginx简介.pdf 第2章 Nginx服务器的安装与配置.pdf 第3章 Nginx的基本配置与优化.pdf 第4章 Nginx与PHP(FastCGI)的安装、配置与优化.pdf 第...
linux下安装Nginx以及配置文件详解,安装说明,所用要的包安装方法顺序步骤,配置文件详解~~~
zabbix5.0+nginx详细配置
nginx集群配置详细步骤
网络上很难找到非常详细的...本文档通过真实的实践经验,从安装OpenSSL和Nginx,到利用openssl生成证书,配置nginx的https(包括配置http请求转发到https)等,详细总结出nginx配置https的步骤,最终能帮助你配置成功。
linux下nginx配置ssl,配置内网ip访问,配置内网域名访问。配置相同网站http重定向到https