{ "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 }}" } } ] }
相关推荐
在 Nginx 配置中,我们可以通过修改 `nginx.conf` 文件来定制日志格式,使其符合 JSON 格式,以便 Filebeat 更好地解析。如文中所示,创建一个名为 `json` 的日志格式,包含时间戳、远程地址、用户、发送的字节数、...
本资源结合我的博客一并使用,用于解决filebeat收集nginx日志用的
5. **模块化设计**:Filebeat通过模块化来支持特定的日志源,如Nginx、MySQL、Apache等,每个模块包含特定的配置和解析规则,简化了配置过程。 6. **配置动态更新**:在运行过程中,Filebeat支持通过命令行或者使用...
Nginx完整配置说明 Nginx是当前最流行的Web服务器软件之一,常用于搭建Web服务器、反向代理服务器、负载均衡器等。下面是Nginx的完整配置说明,涵盖基本配置、反向代理、FastCGI等方面的知识点。 一、基本配置 在...
根据提供的文件信息,我们将详细探讨Nginx的配置要点,同时兼顾其作为Web服务器和反向代理服务器的特点。Nginx是一个高性能的HTTP和反向代理服务器,由Igor Sysoev编写,最初用于俄罗斯访问量第二大的网站rambler.ru...
在编译和安装Nginx之前,我们需要配置编译选项。打开配置脚本并添加必要的模块,例如`--with-http_ssl_module`以启用HTTPS支持: ```bash ./configure --prefix=/usr/local/nginx --with-http_ssl_module ``` 完成...
**Nginx动态配置详解** 在Web服务器领域,Nginx以其高性能、高并发的特点而备受推崇。"02nginx动态配置.zip"这个压缩包文件提供了关于如何管理和配置Nginx的一些基本操作,旨在帮助用户更好地理解和应用Nginx。下面...
在Windows平台上,使用Nginx作为Web服务器时,配置文件的管理和更新是日常运维工作的重要环节。当Nginx的配置文件被修改后,通常需要手动执行`nginx -s reload`命令来使改动生效,这在频繁调整配置时可能会显得繁琐...
标题"nginx多配置文件"和描述中提到的问题,就是如何有效地管理这些不同环境的配置,避免混淆。 Nginx的配置文件结构允许我们将不同的服务器块和相关设置分散到多个文件中,而不是全部写在一个庞大的`nginx.conf`主...
本章还会介绍Nginx的工作原理,包括其非阻塞I/O模型以及多进程和线程模型。此外,还会讲解如何下载、编译和安装Nginx,为后续的配置和优化奠定基础。 第二章:Nginx服务器的安装与配置 这一章将详细讲解如何在不同...
接下来,进入Nginx的配置文件,通常位于`/etc/nginx/nginx.conf`或者`/etc/nginx/sites-available/default`,具体位置取决于你的操作系统和Nginx安装方式。在配置文件中,你需要为每个需要HTTPS支持的域创建一个新的...
使用WebUI配置nginx的各项功能, 包括http协议转发, tcp协议转发, 反向代理, 负载均衡, ssl证书自动申请、续签、配置等, 最终生成nginx.conf文件并覆盖nginx的默认配置文件, 完成nginx的最终功能配置。 支持nginx...
Nginx配置文件(nginx.conf)配置详解 Nginx配置文件(nginx.conf)是Nginx服务器的核心配置文件,用于定义Nginx服务器的行为和配置。下面是Nginx配置文件的详细配置解释: 用户和组 Nginx配置文件中指定了用户和组,...
Nginx配置文件原始版本,这是刚下来的Nginx服务器最原始的版本内容,下载覆盖即可。
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完整配置手册
在本文中,我们将深入探讨如何配置Nginx以实现多域名访问,同时涵盖访问数量统计、日志请求头配置以及针对手机访问的重定向策略。 ### 1. Nginx多域名配置 在Nginx中,配置多域名主要通过`server`块来实现。每个`...
### Linux 下 Nginx 的安装与配置详解 #### 一、Nginx 概述 Nginx(发音为 "engine X")是一款开源的 Web 服务器,它以高性能著称,尤其在处理高并发连接方面表现优异。Nginx 除了作为 HTTP 服务器外,还可以作为...
安装完Nginx后,我们需要配置它的配置文件`nginx.conf`。这个文件通常位于`nginx`安装目录下的`conf`子目录中。在这个文件中,我们需要定义服务器块来监听HTTP请求,并指定PHP处理器的位置。例如: ```nginx server...
Nginx 配置文件 nginx.conf 详解 Nginx 配置文件 nginx.conf 是 Nginx 服务器的核心配置文件,它控制着 Nginx 服务器的行为和性能。在这个配置文件中,我们可以设置服务器的用户和组、工作进程数、错误日志、进程...