教程:监控您的 nginx 实例
Elastic Stack
Elastic 新手? 请按照我们的入门指南中的步骤,而不是此处描述的步骤。 学习完基础知识后,返回本教程。
使用 nginx Elastic 集成和 Elastic Agent 来收集来自您的 nginx 实例的有价值的指标和日志。 然后,使用内置仪表板和诸如 Discover 之类的工具,在一个地方可视化和监控您的 nginx 数据。 此数据提供了对您的 nginx 实例的有价值的见解——例如
- 某个资源的错误日志激增可能意味着您有一个已删除但仍然需要的资源。
- 访问日志可以显示服务的峰值时间,并且由此可以知道执行维护等操作的最佳时间。
- 客户端请求的突然激增可能指向恶意行为,例如 DDoS 攻击。
本指南将引导您使用 Elastic Observability 来监控您的 nginx 实例,包括
- 使用 Elastic Agent 和 nginx 集成从 nginx 实例收集日志和指标。
- 将数据集中在 Elastic Stack 中。
- 使用定制的仪表板和 Observability UI 实时探索数据。
nginx 集成收集日志和指标。
- 日志
-
收集日志以记录您的 nginx 实例中发生的事件,例如客户端请求和错误何时发生。
访问日志提供有关 nginx 服务器处理的每个请求的信息。 使用这些日志进行故障排除、监控性能和分析用户行为。
错误日志提供有关 nginx 服务器处理请求时发生的错误的诊断信息。 使用这些日志来了解错误发生的原因、评估错误影响和调试问题。
- 指标
- 收集指标以深入了解您的 nginx 实例的状态。 这包括诸如按状态划分的活动客户端连接总数、客户端请求总数等信息。 使用这些指标来监控服务器负载、检测瓶颈、了解客户端行为并规划容量。
在您可以监控 nginx 之前,您需要以下内容
- Elasticsearch 用于存储和搜索您的可观测性数据
- Kibana 用于可视化和管理它。
- 如果要收集指标,请确保您的 nginx 实例已配置为指标收集。
按照以下步骤将 nginx 集成添加到您的部署中
- 在主菜单中找到 集成,或者使用全局搜索字段。
- 在搜索栏中输入“nginx”,然后选择 Nginx 集成。
- 在集成页面顶部选择 添加 Nginx。
- 在页面底部选择 仅添加集成(跳过代理安装)。
nginx 集成可以从您的 nginx 实例中获取不同的日志和指标。 在 添加 Nginx 集成 页面中,配置集成要收集的日志和指标。 有关配置集成的更多信息,请参阅以下各节。
nginx 集成可以收集访问日志和错误日志。
- 访问日志: 开启此选项可收集有关客户端请求的日志。
- 错误日志: 开启此选项可收集有关 nginx 遇到的具有不同严重级别的问题的日志。
为访问日志和错误日志配置以下内容
- 路径
- 您的日志的位置。
- 保留原始事件
- 开启以将原始事件的原始副本添加到
event.original
字段。
nginx 集成从您的实例收集 stub_status
指标。 确保您的 nginx 实例已配置为指标收集。 配置以下内容以收集指标
- 主机
- Elastic 将连接以收集指标的服务器的地址。
- 周期
- 轮询指标的频率。 默认值为每 10 秒。
配置集成后,您需要将 Elastic Agent 添加到您的主机以收集数据并将其发送到 Elastic Stack。 您有两种添加 Elastic Agent 的选择,注册到 Fleet 或 运行独立代理。
有关更多信息
按照 添加代理 屏幕上的说明在您的主机上安装 Elastic Agent
- 在 注册到 Fleet? 下,确保已选择 注册到 Fleet。
- 在 在您的主机上安装 Elastic Agent 下,复制适用于您系统的命令并在您的主机上运行它。 您可以在多个主机上重复使用该命令。
- 代理在您的主机上启动后,您将看到代理已注册到 Fleet 的确认信息。
在安装和运行独立的 Elastic Agent 之前,您需要创建一个 API 密钥。 要创建 Elastic Cloud API 密钥
- 要打开 API 密钥,请在主菜单中找到 Stack Management,或者使用全局搜索字段。
- 选择 创建 API 密钥。
- 给密钥命名。 例如,
nginx API 密钥
。 - 保留其他默认选项,然后选择 创建 API 密钥。
- 在 创建 API 密钥 确认对话框中,将下拉菜单设置从
Encoded
更改为Beats
。 这设置了 Elastic Agent(基于 Beats)和 Elasticsearch 之间通信的 API 密钥格式。 - 复制生成的 API 密钥并将其存储在安全的地方。
创建 API 密钥后,按照 添加代理 屏幕上的说明在您的主机上安装 Elastic Agent
在 注册到 Fleet? 下,选择 运行独立代理。
在 配置代理 下,选择 下载策略。 将
elastic-agent.yml
文件保存到您将在其上安装 nginx 以进行监控的主机上的目录中。打开策略文件,并注意它包含 nginx 和 System 集成的所有输入、输出和其他设置。
替换
username: '${ES_USERNAME}' password: '${ES_PASSWORD}'
使用
api_key: '<your-api-key>'
其中
your-api-key
是您之前在本节中创建的密钥。如果您的主机上已安装具有现有 Elastic Agent 策略的独立代理,请将 配置代理 步骤中的设置添加到您现有的
elastic-agent.yml
文件。在 在您的主机上安装 Elastic Agent 下,选择适用于您的主机操作系统的选项卡并在您的主机上运行这些命令。
如果您收到
Elastic Agent 将安装在 {installation location} 并将作为服务运行。 您想继续吗?
的提示,请回答Yes
。如果您收到
您想将此代理注册到 Fleet 吗?
的提示,请回答no
。运行
status
命令以确认 Elastic Agent 正在运行。elastic-agent status ┌─ fleet │ └─ status: (STOPPED) Not enrolled into Fleet └─ elastic-agent └─ status: (HEALTHY) Running
使用 Kibana 查看 Elastic Agent 收集的指标和日志数据。 有关查看数据的更多信息,请参阅以下各节
nginx 集成具有一个内置仪表板,可在一个地方显示您的 nginx 指标的完整情况。 要打开 nginx 仪表板
- 在主菜单中找到 集成,或者使用全局搜索字段。
- 选择 已安装的集成。
- 选择 Nginx 卡并打开 资产 选项卡。
- 选择
[Metrics Nginx] Overview
仪表板。
Metrics Nginx overview 显示了总请求数、已处理的请求数、心跳/启动、活动连接数、读取/写入/等待速率、请求速率、接受和处理速率以及丢弃速率的可视化表示。

摄取 nginx 日志后,使用 Discover 或 nginx 日志仪表板 查看和探索您的日志。
使用 Discover,您可以快速搜索和过滤您的日志数据,获取有关日志字段结构的信息,并将您的发现显示在可视化中。
在全局搜索字段中查找 Discover
。
过滤您的结果,以从数据选择器中查看来自 nginx 集成的日志。
从数据视图菜单中,选择所有日志。
使用 KQL 搜索栏过滤日志结果。输入
data_stream.dataset : "nginx.error"
以显示 nginx 错误日志,或输入data_stream.dataset : "nginx.access"
以显示 nginx 访问日志。
nginx 集成具有内置的仪表板,可在一个位置显示 nginx 日志的完整情况。要打开 nginx 仪表板
- 在主菜单中找到 集成,或者使用全局搜索字段。
- 选择 已安装的集成。
- 选择 Nginx 卡并打开 资产 选项卡。
- 选择
[Logs Nginx] Overview
仪表板或[Logs Nginx] Access and error logs
仪表板。
Nginx logs overview 仪表板以可视方式显示地理日志详细信息、随时间变化的响应代码、随时间变化的错误、发送日志的热门页面、数据量、发送日志的操作系统分解以及发送日志的浏览器分解。

Nginx access and error logs 仪表板显示随时间变化的访问日志,并列出访问和错误日志。

使用 nginx Elastic 集成 机器学习 (ML) 模块来帮助查找 nginx 访问日志中的异常活动。监控访问日志中的异常有助于检测
- 安全威胁
- 网络问题
- 系统性能问题
- 运营效率问题
nginx ML 模块提供以下异常检测作业
- 低请求率 (
low_request_rate_nginx
) - 使用
low_count
函数来检测异常低的请求率。异常低的请求率可能表示网络问题或其他问题阻止请求到达服务器。 - 异常源 IP - 高请求率 (
source_ip_request_rate_nginx
) - 使用
hight_count
函数来检测来自单个 IP 地址的异常高请求率。来自单个 IP 或一小组 IP 的许多请求可能表示一些恶意行为,例如分布式拒绝服务 (DDoS) 攻击,其中发送大量请求以压垮服务器并使其对用户不可用。 - 异常源 IP - URL 的高不同计数 (
source_ip_url_count_nginx
) - 使用
high_distinct_count
函数来检测访问异常高数量的唯一 URL 的单个 IP 地址。单个 IP 访问许多唯一 URL 可能表示一些恶意行为,例如网络抓取或尝试查找敏感数据或漏洞。 - 异常状态代码率 (
status_code_rate_nginx
) - 使用
count
函数来检测异常的错误状态代码率。高状态代码率可能表示链接损坏、URL 错误或未经授权的访问尝试等问题。高状态代码率也可能指向服务器问题,例如资源有限或代码中的错误。 - 异常访问者率 (
visitor_rate_nginx
) - 使用
non_zero_count
函数来检测异常的访问者率。高访问者率可能表示一些恶意行为,例如 DDoS 攻击。低访问者率可能表示访问服务器的问题。
当您拥有与 ML 模块清单中指定的查询匹配的数据时,这些异常检测作业可用。未遵循本教程的用户可以参考 nginx 集成 ML 模块,以获取有关 ML 模块清单的更多信息。
验证您的环境是否已正确设置为使用机器学习功能。如果启用了 Elasticsearch 安全功能,则您需要具有管理异常检测作业权限的用户。请参阅 设置 ML 功能。
从 nginx 集成添加 nginx ML 作业以开始使用异常检测
要打开作业,请在主菜单中找到机器学习,或使用全局搜索字段。
- 选择创建作业。
- 在搜索栏中,输入 nginx 并选择 Nginx access logs [Logs Nginx]。
- 在使用预配置的作业下,选择 Nginx access logs 卡。
- 选择创建作业。
返回异常检测作业页面,您应该看到 nginx 异常检测作业—low_request_rate_nginx
、source_ip_request_rate_nginx
、source_ip_url_count_nginx
、status_code_rate_nginx
和 visitor_rate_nginx
。
使用机器学习菜单中异常检测下的异常浏览器或单指标查看器查看您的异常检测作业结果。异常浏览器显示来自所有或任何组合的 nginx ML 作业的结果。单指标查看器侧重于特定作业。这些工具提供了异常的全面视图,并有助于查找跨数据点和时间间隔的模式和不规则性。
有关查看和理解异常检测作业结果的更多信息,请参阅 查看异常检测作业结果。
通过 nginx ML 作业检测到异常,您可以设置规则以在您的作业满足特定条件时生成警报。例如,您可以设置 low_request_rate_nginx
作业上的规则,以便在低请求率达到特定严重性阈值时发出警报。当您收到警报时,您可以确保您的服务器没有遇到问题。
有关设置这些规则和生成警报的更多信息,请参阅 为异常检测作业生成警报。