Nginx 集成
编辑Nginx 集成
编辑Nginx 集成允许您监控 Nginx 服务器。为指标数据流启用了时间序列 索引模式。
使用 Nginx 集成从您的服务器收集指标和日志。然后在 Kibana 中可视化这些数据,使用机器学习应用程序查找 HTTP 访问日志中的异常活动,创建警报以在出现问题时通知您,并在排除问题时参考数据。
例如,如果您想在特定时间段内某个数量的客户端请求失败时收到通知,您可以安装 Nginx 集成以将日志发送到 Elastic。然后,您可以在可观测性日志应用程序中实时查看流入 Elastic 的日志流。您还可以在日志应用程序中设置新的日志阈值规则,以便在特定时间段内发生超过一定数量的失败状态事件时发出警报。
数据流
编辑Nginx 集成收集两种类型的数据:日志和指标。
日志 帮助您记录 Nginx 服务器中发生的事件。这包括何时发生客户端请求或错误。
指标 让您深入了解 Nginx 服务器的状态。这包括诸如按状态划分的活动客户端连接总数、客户端请求总数等信息。
要求
编辑您需要 Elasticsearch 来存储和搜索您的数据,并需要 Kibana 来可视化和管理它。您可以使用我们在 Elastic Cloud 上的托管 Elasticsearch 服务(推荐),或者在您自己的硬件上自行管理 Elastic Stack。
每个数据源都使用特定的 Nginx 版本进行了测试。有关更多信息,请参见 日志参考 和 指标参考。
在 Windows 上,该模块使用从 Chocolatey 存储库安装的 Nginx 进行了测试。
设置
编辑有关如何设置集成的分步说明,请参见 入门 指南。
日志参考
编辑时区支持
此数据源解析不包含时区信息的日志。对于这些日志,Elastic Agent 读取本地时区,并在解析时使用它将时间戳转换为 UTC。用于解析的时区包含在事件的 event.timezone
字段中。
要禁用此转换,可以使用 drop_fields
处理器删除 event.timezone
字段。
如果日志来自时区与本地时区不同的系统或应用程序,可以使用 add_fields
处理器使用原始时区覆盖 event.timezone
字段。
访问日志
编辑访问日志收集 Nginx 访问日志。
测试版本
编辑Nginx 访问日志流已使用 Nginx 1.19.5 进行了测试。
示例
access
的示例事件如下所示
{ "@timestamp": "2022-12-09T10:39:23.000Z", "_tmp": {}, "agent": { "ephemeral_id": "34369a4a-4f24-4a39-9758-85fc2429d7e2", "id": "ef5e274d-4b53-45e6-943a-a5bcf1a6f523", "name": "docker-fleet-agent", "type": "filebeat", "version": "8.5.0" }, "data_stream": { "dataset": "nginx.access", "namespace": "ep", "type": "logs" }, "ecs": { "version": "8.11.0" }, "elastic_agent": { "id": "ef5e274d-4b53-45e6-943a-a5bcf1a6f523", "snapshot": false, "version": "8.5.0" }, "event": { "agent_id_status": "verified", "category": [ "web" ], "created": "2022-12-09T10:39:38.896Z", "dataset": "nginx.access", "ingested": "2022-12-09T10:39:40Z", "kind": "event", "outcome": "success", "timezone": "+00:00", "type": [ "access" ] }, "host": { "architecture": "x86_64", "containerized": false, "hostname": "docker-fleet-agent", "id": "66392b0697b84641af8006d87aeb89f1", "ip": [ "172.18.0.7" ], "mac": [ "02-42-AC-12-00-07" ], "name": "docker-fleet-agent", "os": { "codename": "focal", "family": "debian", "kernel": "5.15.49-linuxkit", "name": "Ubuntu", "platform": "ubuntu", "type": "linux", "version": "20.04.5 LTS (Focal Fossa)" } }, "http": { "request": { "method": "GET" }, "response": { "body": { "bytes": 97 }, "status_code": 200 }, "version": "1.1" }, "input": { "type": "log" }, "log": { "file": { "path": "/tmp/service_logs/access.log" }, "offset": 0 }, "nginx": { "access": { "remote_ip_list": [ "127.0.0.1" ] } }, "related": { "ip": [ "127.0.0.1" ] }, "source": { "address": "127.0.0.1", "ip": "127.0.0.1" }, "tags": [ "nginx-access" ], "url": { "original": "/server-status", "path": "/server-status" }, "user_agent": { "device": { "name": "Other" }, "name": "curl", "original": "curl/7.64.0", "version": "7.64.0" } }
ECS 字段参考
有关 ECS 字段的详细信息,请参阅以下文档。
导出的字段
字段 | 描述 | 类型 |
---|---|---|
@timestamp |
事件时间戳。 |
日期 |
cloud.image.id |
云实例的镜像 ID。 |
关键字 |
data_stream.dataset |
数据流数据集。 |
constant_keyword |
data_stream.namespace |
数据流命名空间。 |
constant_keyword |
data_stream.type |
数据流类型。 |
constant_keyword |
event.dataset |
事件数据集 |
constant_keyword |
event.module |
事件模块 |
constant_keyword |
host.containerized |
如果主机是容器。 |
布尔值 |
host.os.build |
操作系统构建信息。 |
关键字 |
host.os.codename |
操作系统代号(如果有)。 |
关键字 |
input.type |
输入类型 |
关键字 |
log.offset |
日志偏移量 |
长整型 |
nginx.access.remote_ip_list |
远程 IP 地址的数组。这是一个列表,因为它通常包含客户端 IP 地址以及来自 |
关键字 |
错误日志
编辑错误日志收集 Nginx 错误日志。
测试版本
编辑Nginx 错误日志流已使用 Nginx 1.19.5 进行了测试。
示例
error
的示例事件如下所示
{ "@timestamp": "2022-12-09T10:40:03.000Z", "agent": { "ephemeral_id": "34369a4a-4f24-4a39-9758-85fc2429d7e2", "id": "ef5e274d-4b53-45e6-943a-a5bcf1a6f523", "name": "docker-fleet-agent", "type": "filebeat", "version": "8.5.0" }, "data_stream": { "dataset": "nginx.error", "namespace": "ep", "type": "logs" }, "ecs": { "version": "8.11.0" }, "elastic_agent": { "id": "ef5e274d-4b53-45e6-943a-a5bcf1a6f523", "snapshot": false, "version": "8.5.0" }, "event": { "agent_id_status": "verified", "category": [ "web" ], "created": "2022-12-09T10:40:18.973Z", "dataset": "nginx.error", "ingested": "2022-12-09T10:40:24Z", "kind": "event", "timezone": "+00:00", "type": [ "error" ] }, "host": { "architecture": "x86_64", "containerized": false, "hostname": "docker-fleet-agent", "id": "66392b0697b84641af8006d87aeb89f1", "ip": [ "172.18.0.7" ], "mac": [ "02-42-AC-12-00-07" ], "name": "docker-fleet-agent", "os": { "codename": "focal", "family": "debian", "kernel": "5.15.49-linuxkit", "name": "Ubuntu", "platform": "ubuntu", "type": "linux", "version": "20.04.5 LTS (Focal Fossa)" } }, "input": { "type": "log" }, "log": { "file": { "path": "/tmp/service_logs/error.log" }, "level": "warn", "offset": 0 }, "message": "conflicting server name \"localhost\" on 0.0.0.0:80, ignored", "nginx": { "error": {} }, "process": { "pid": 1, "thread": { "id": 1 } }, "tags": [ "nginx-error" ] }
ECS 字段参考
有关 ECS 字段的详细信息,请参阅以下文档。
导出的字段
字段 | 描述 | 类型 |
---|---|---|
@timestamp |
事件时间戳。 |
日期 |
cloud.image.id |
云实例的镜像 ID。 |
关键字 |
data_stream.dataset |
数据流数据集。 |
constant_keyword |
data_stream.namespace |
数据流命名空间。 |
constant_keyword |
data_stream.type |
数据流类型。 |
constant_keyword |
event.dataset |
事件数据集 |
constant_keyword |
event.module |
事件模块 |
constant_keyword |
host.containerized |
如果主机是容器。 |
布尔值 |
host.os.build |
操作系统构建信息。 |
关键字 |
host.os.codename |
操作系统代号(如果有)。 |
关键字 |
input.type |
输入类型 |
关键字 |
log.offset |
日志偏移量 |
长整型 |
nginx.error.connection_id |
连接标识符。 |
长整型 |
指标参考
编辑Stub 状态指标
编辑Nginx stubstatus
流从 Nginx ngx_http_stub_status
模块收集数据。它从 ngx_http_stub_status
生成的网页中抓取服务器状态数据。请验证您的 Nginx 发行版是否带有提到的模块,并且该模块在 Nginx 配置文件中已启用。
location /nginx_status { stub_status; allow 127.0.0.1; # only allow requests from localhost deny all; # deny all other hosts }
将 127.0.0.1
替换为您的服务器 IP 地址,并确保只有您可以访问此页面。
测试版本
编辑Nginx stubstatus
流已使用 Nginx 1.19.5 进行了测试,并且预计适用于所有版本 >= 1.19。
示例
stubstatus
的示例事件如下所示
{ "@timestamp": "2024-02-08T08:12:10.668Z", "agent": { "ephemeral_id": "c3d516ba-b659-4190-a29d-d28200d74d48", "id": "2ea50bee-9250-43d1-8d70-949f242aa275", "name": "docker-fleet-agent", "type": "metricbeat", "version": "8.10.1" }, "data_stream": { "dataset": "nginx.stubstatus", "namespace": "ep", "type": "metrics" }, "ecs": { "version": "8.11.0" }, "elastic_agent": { "id": "2ea50bee-9250-43d1-8d70-949f242aa275", "snapshot": false, "version": "8.10.1" }, "event": { "agent_id_status": "verified", "dataset": "nginx.stubstatus", "duration": 1156104, "ingested": "2024-02-08T08:12:13Z", "module": "nginx" }, "host": { "architecture": "x86_64", "containerized": false, "hostname": "docker-fleet-agent", "id": "28da52b32df94b50aff67dfb8f1be3d6", "ip": [ "172.24.0.7" ], "mac": [ "02-42-AC-18-00-07" ], "name": "docker-fleet-agent", "os": { "codename": "focal", "family": "debian", "kernel": "5.15.0-89-generic", "name": "Ubuntu", "platform": "ubuntu", "type": "linux", "version": "20.04.6 LTS (Focal Fossa)" } }, "metricset": { "name": "stubstatus", "period": 10000 }, "nginx": { "stubstatus": { "accepts": 33, "active": 1, "current": 33, "dropped": 0, "handled": 33, "hostname": "elastic-package-service-nginx-1:80", "reading": 0, "requests": 33, "waiting": 0, "writing": 1 } }, "service": { "address": "http://elastic-package-service-nginx-1:80/server-status", "type": "nginx" }, "tags": [ "nginx-stubstatus" ] }
ECS 字段参考
有关 ECS 字段的详细信息,请参阅以下文档。
导出的字段
字段 | 描述 | 类型 | 指标类型 |
---|---|---|---|
@timestamp |
事件时间戳。 |
日期 |
|
agent.id |
关键字 |
||
cloud.account.id |
用于在多租户环境中标识不同实体的云帐户或组织 ID。示例:AWS 帐户 ID、Google Cloud ORG ID 或其他唯一标识符。 |
关键字 |
|
cloud.availability_zone |
此主机运行所在的可用区。 |
关键字 |
|
cloud.image.id |
云实例的镜像 ID。 |
关键字 |
|
cloud.instance.id |
主机机器的实例 ID。 |
关键字 |
|
cloud.provider |
云提供商的名称。示例值有 aws、azure、gcp 或 digitalocean。 |
关键字 |
|
cloud.region |
此主机运行所在的区域。 |
关键字 |
|
container.id |
唯一的容器 ID。 |
关键字 |
|
data_stream.dataset |
数据流数据集。 |
constant_keyword |
|
data_stream.namespace |
数据流命名空间。 |
constant_keyword |
|
data_stream.type |
数据流类型。 |
constant_keyword |
|
event.dataset |
事件数据集 |
constant_keyword |
|
event.module |
事件模块 |
constant_keyword |
|
host.containerized |
如果主机是容器。 |
布尔值 |
|
host.name |
主机的名称。它可以包含 Unix 系统上 |
关键字 |
|
host.os.build |
操作系统构建信息。 |
关键字 |
|
host.os.codename |
操作系统代号(如果有)。 |
关键字 |
|
nginx.stubstatus.accepts |
接受的客户端连接总数。 |
长整型 |
计数器 |
nginx.stubstatus.active |
当前活动的客户端连接数,包括等待连接。 |
长整型 |
计量表 |
nginx.stubstatus.current |
当前客户端请求数。 |
长整型 |
计量表 |
nginx.stubstatus.dropped |
丢弃的客户端连接总数。 |
长整型 |
计数器 |
nginx.stubstatus.handled |
处理的客户端连接总数。 |
长整型 |
计数器 |
nginx.stubstatus.hostname |
Nginx 主机名。 |
关键字 |
|
nginx.stubstatus.reading |
当前 Nginx 正在读取请求标头的连接数。 |
长整型 |
计量表 |
nginx.stubstatus.requests |
客户端请求总数。 |
长整型 |
计数器 |
nginx.stubstatus.waiting |
当前等待请求的空闲客户端连接数。 |
长整型 |
计量表 |
nginx.stubstatus.writing |
当前 Nginx 正在将响应写回客户端的连接数。 |
长整型 |
计量表 |
service.address |
从中收集有关此服务的数据的地址。这应该是一个 URI、网络地址(ipv4:port 或 [ipv6]:port)或资源路径(套接字)。 |
关键字 |
异常检测配置
编辑当您拥有与 清单中指定的查询匹配的数据时,这些异常检测作业可在 Kibana 的机器学习应用程序中使用。
Nginx 访问日志
编辑查找 HTTP 访问日志中的异常活动。
作业 | 描述 |
---|---|
|
HTTP 访问日志:检测异常的访问者率 |
|
HTTP 访问日志:检测异常的状态代码率 |
|
HTTP 访问日志:检测异常的源 IP - URL 的高唯一计数 |
|
HTTP 访问日志:检测异常的源 IP - 高请求率 |
|
HTTP 访问日志:检测低请求率 |
变更日志
编辑变更日志
版本 | 详细信息 | Kibana 版本 |
---|---|---|
1.24.0 |
增强 (查看拉取请求) |
8.13.0 或更高版本 |
1.23.0 |
增强 (查看拉取请求) |
8.13.0 或更高版本 |
1.22.0 |
增强 (查看拉取请求) |
8.13.0 或更高版本 |
1.21.0 |
增强 (查看拉取请求) |
8.12.0 或更高版本 |
1.20.0 |
增强 (查看拉取请求) |
8.12.0 或更高版本 |
1.19.1 |
错误修复 (查看拉取请求) |
8.8.0 或更高版本 |
1.19.0 |
增强 (查看拉取请求) |
8.8.0 或更高版本 |
1.18.0 |
增强 (查看拉取请求) |
8.8.0 或更高版本 |
1.17.0 |
增强 (查看拉取请求) |
8.8.0 或更高版本 |
1.16.0 |
增强 (查看拉取请求) |
8.8.0 或更高版本 |
1.15.1 |
错误修复 (查看拉取请求) |
8.8.0 或更高版本 |
1.15.0 |
增强 (查看拉取请求) |
8.8.0 或更高版本 |
1.14.1-beta |
Bug 修复 (查看拉取请求) |
— |
1.14.0 |
增强 (查看拉取请求) |
8.8.0 或更高版本 |
1.13.0-beta |
增强 (查看拉取请求) |
— |
1.12.0-beta |
增强 (查看拉取请求) |
— |
1.11.1 |
Bug 修复 (查看拉取请求) |
8.5.0 或更高版本 |
1.11.0 |
增强 (查看拉取请求) |
8.5.0 或更高版本 |
1.10.0 |
增强 (查看拉取请求) |
8.5.0 或更高版本 |
1.9.0 |
增强 (查看拉取请求) |
8.5.0 或更高版本 |
1.8.0 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.7.1 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.7.0 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.6.0 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.5.1 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.5.0 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.4.1 |
增强 (查看拉取请求) |
8.0.0 或更高版本 |
1.4.0 |
增强 (查看拉取请求) |
— |
1.3.2 |
增强 (查看拉取请求) |
— |
1.3.1 |
增强 (查看拉取请求) |
7.14.0 或更高版本 |
1.3.0 |
增强 (查看拉取请求) |
— |
1.2.3 |
Bug 修复 (查看拉取请求) |
— |
1.2.2 |
Bug 修复 (查看拉取请求) |
— |
1.2.1 |
Bug 修复 (查看拉取请求) |
7.14.0 或更高版本 |
1.2.0 |
增强 (查看拉取请求) |
7.14.0 或更高版本 |
1.1.2 |
增强 (查看拉取请求) |
— |
1.1.1 |
Bug 修复 (查看拉取请求) |
— |
1.1.0 |
增强 (查看拉取请求) |
7.14.0 或更高版本 |
1.0.0 |
增强 (查看拉取请求) |
— |
0.8.2 |
增强 (查看拉取请求) |
— |
0.8.1 |
增强 (查看拉取请求) |
— |
0.8.0 |
增强 (查看拉取请求) |
— |
0.7.0 |
增强 (查看拉取请求) |
— |
0.6.2 |
增强 (查看拉取请求) |
— |
0.6.1 |
Bug 修复 (查看拉取请求) |
— |
0.6.0 |
增强 (查看拉取请求) |
— |
0.5.0 |
增强 (查看拉取请求) |
— |
0.4.1 |
增强 (查看拉取请求) |
— |
0.3.11 |
增强 (查看拉取请求) |
— |
0.3.10 |
增强 (查看拉取请求) |
— |
0.1.0 |
增强 (查看拉取请求) |
— |