教程:观察您的 Nginx 实例

编辑

使用 Nginx Elastic 集成 和 Elastic Agent 收集来自 Nginx 实例的宝贵指标和日志。然后,使用 Kibana 中的内置仪表板和工具(如日志资源管理器)在一个地方可视化和监控您的 Nginx 数据。此数据提供了对 Nginx 实例的有价值的洞察——例如

  • 某个资源的错误日志激增可能意味着您有一个仍然需要的已删除资源。
  • 访问日志可以显示服务的峰值时间,并据此确定执行维护等操作的最佳时间。
  • 客户端请求突然激增可能表明存在恶意活动,例如 DDoS 攻击。

您将学到什么

编辑

本指南将引导您使用 Elastic 可观测性来监控您的 Nginx 实例,包括

  • 使用 Elastic Agent 和 Nginx 集成从 Nginx 实例收集日志和指标。
  • 在 Elastic Stack 中集中数据。
  • 使用定制的仪表板和可观测性 UI 实时浏览数据。

数据类型

编辑

Nginx 集成同时收集日志和指标。

日志

收集日志以记录在 Nginx 实例中发生的事件,例如客户端请求和错误何时发生。

访问日志 提供有关 Nginx 服务器处理的每个请求的信息。使用这些日志进行故障排除、性能监控和用户行为分析。

错误日志 提供有关 Nginx 服务器处理请求时发生的错误的诊断信息。使用这些日志了解错误发生的原因,评估错误的影响并调试问题。

指标

收集指标以深入了解 Nginx 实例的状态。这包括按状态计算的活动客户端连接总数、客户端请求总数等信息。使用这些指标来监控服务器负载、检测瓶颈、了解客户端行为并规划容量。

开始之前

编辑

在监控 Nginx 之前,您需要以下内容

  • Elasticsearch 用于存储和搜索您的可观测性数据
  • Kibana 用于可视化和管理数据。
  • 如果您想收集指标,请确保您的 Nginx 实例已 配置为收集指标

步骤 1:添加 Nginx 集成

编辑

请按照以下步骤将 Nginx 集成添加到您的部署中

  1. 在主菜单中找到集成,或使用 全局搜索字段
  2. 在搜索栏中输入“nginx”,然后选择Nginx 集成。
  3. 选择集成页面顶部的添加 Nginx
  4. 在页面底部选择仅添加集成(跳过 Agent 安装)

步骤 2:配置 Nginx 集成

编辑

Nginx 集成可以从您的 Nginx 实例获取不同的日志和指标。在添加 Nginx 集成页面中,配置您希望集成收集哪些日志和指标。有关配置集成的更多信息,请参阅以下部分。

收集日志
编辑

Nginx 集成可以收集访问日志和错误日志。

  • 访问日志: 打开此选项以收集有关客户端请求的日志。
  • 错误日志: 打开此选项以收集有关 Nginx 遇到不同严重级别问题的日志。

为访问日志和错误日志配置以下内容

路径

日志的位置。

保留原始事件

打开以将原始事件的原始副本添加到 event.original 字段。

收集指标
编辑

Nginx 集成从您的实例收集 stub_status 指标。请确保您的 Nginx 实例已 配置为收集指标。配置以下内容以收集指标

主机

Elastic 将连接以收集指标的服务器地址。

周期

轮询指标的频率。默认值为每 10 秒。

步骤 3:添加 Elastic Agent

编辑

配置集成后,您需要将 Elastic Agent 添加到您的主机以收集数据并将其发送到 Elastic Stack。您有两种添加 Elastic Agent 的选项:加入 Fleet独立运行

Fleet

加入 Fleet 允许您自动部署更新并集中管理 Agent。

独立运行

独立 Agent 需要在安装 Agent 的主机上手动更新。

更多关于

加入 Fleet
编辑

按照添加 Agent屏幕中的说明在您的主机上安装 Elastic Agent

  1. 加入 Fleet?下,确保选中加入 Fleet
  2. 在您的主机上安装 Elastic Agent下,复制适合您系统的命令并在您的主机上运行它。您可以在多个主机上重复使用此命令。
  3. Agent 在您的主机上启动后,您将看到确认 Agent 已加入 Fleet 的消息。
运行独立的 Elastic Agent
编辑

在安装和运行独立的 Elastic Agent 之前,您需要创建一个 API 密钥。要创建 Elastic Cloud API 密钥:

  1. 要打开API 密钥,请在主菜单中找到堆栈管理,或使用 全局搜索字段
  2. 选择创建 API 密钥
  3. 为密钥命名。例如,nginx API 密钥
  4. 保留其他默认选项,然后选择创建 API 密钥
  5. 创建 API 密钥确认对话框中,将下拉菜单设置从Encoded更改为Beats。这将设置 Elastic Agent(基于 Beats)和 Elasticsearch 之间通信的 API 密钥格式。
  6. 复制生成的 API 密钥并将其存储在安全的地方。

创建 API 密钥后,按照添加 Agent屏幕中的说明在您的主机上安装 Elastic Agent

  1. 加入 Fleet?下,选择独立运行
  2. 配置 Agent下,选择下载策略。将 elastic-agent.yml 文件保存到您将在其中安装用于监控的 Nginx 的主机的目录。
  3. 打开策略文件,您会注意到它包含 Nginx 和系统集成的所有输入、输出和其他设置。

        username: '${ES_USERNAME}'
        password: '${ES_PASSWORD}'

    替换为

        api_key: '<your-api-key>'

    其中 your-api-key 是您在本节前面创建的密钥。

    如果您已经在具有现有 Elastic Agent 策略的主机上安装了独立 Agent,请将配置 Agent步骤中的设置添加到您现有的 elastic-agent.yml 文件中。

  4. 在您的主机上安装 Elastic Agent下,选择适合您主机操作系统的选项卡并在您的主机上运行命令。
  5. 如果出现提示 Elastic Agent 将安装在 {installation location} 并作为服务运行。您要继续吗?,请输入 Yes

    如果出现提示 您要将此 Agent 加入 Fleet 吗?,请输入 no

  6. 运行 status 命令以确认 Elastic Agent 正在运行。

    elastic-agent status
    
    ┌─ fleet
    │  └─ status: (STOPPED) Not enrolled into Fleet
    └─ elastic-agent
       └─ status: (HEALTHY) Running

步骤 4:浏览您的日志和指标

编辑

使用 Kibana 查看 Elastic Agent 收集的指标和日志数据。有关查看数据的更多信息,请参阅以下部分

在 Kibana 中查看指标
编辑

Nginx 集成具有一个内置仪表板,可在同一位置显示 Nginx 指标的全貌。要打开 Nginx 仪表板:

  1. 在主菜单中找到集成,或使用 全局搜索字段
  2. 选择已安装的集成
  3. 选择Nginx卡片并打开资源选项卡。
  4. 选择[Metrics Nginx] Overview 仪表板。

Metrics Nginx 概述显示总请求、已处理请求、心跳/正常运行、活动连接、读取/写入/等待速率、请求速率、接受和处理速率以及丢弃速率的可视化表示。

nginx metrics dashboard
查看日志
编辑

在您的 Nginx 日志被摄取后,可以使用 日志资源管理器Nginx 日志仪表板 查看和浏览您的日志。

日志资源管理器
编辑

使用日志资源管理器,您可以快速搜索和筛选日志数据,获取有关日志字段结构的信息,并以可视化的方式显示您的查找结果。

要打开日志资源管理器,请在 全局搜索字段中查找 Logs Explorer

筛选结果以从数据选择器中查看来自 Nginx 集成的日志

  1. 集成下,选择Nginx

    nginx integration in the data selector
  2. 选择访问日志或错误日志以查看您要查找的日志。

现在,文档 表格会显示您的 nginx 日志

Logs Explorer showing nginx error logs
nginx 日志仪表盘
编辑

nginx 集成具有内置仪表盘,可在同一位置显示 nginx 日志的完整视图。要打开 nginx 仪表盘

  1. 在主菜单中找到集成,或使用 全局搜索字段
  2. 选择已安装的集成
  3. 选择Nginx卡片并打开资源选项卡。
  4. 选择 [Logs Nginx] 概述 仪表盘或 [Logs Nginx] 访问和错误日志 仪表盘。

Nginx 日志概述 仪表盘显示地理位置日志详细信息、随时间变化的响应代码、随时间变化的错误、发送日志的顶级页面、数据量、发送日志的操作系统的细分以及发送日志的浏览器的细分。

nginx logs overview dashboard

Nginx 访问和错误日志 仪表盘显示随时间变化的访问日志,并列出您的访问和错误日志。

nginx access and error logs dashboard

步骤 5:查找 nginx 访问日志中的异常

编辑

使用 nginx Elastic 集成 机器学习 (ML) 模块来帮助查找 nginx 访问日志中的异常活动。监控访问日志中的异常有助于您检测

  • 安全威胁
  • 网络问题
  • 系统性能问题
  • 运营效率问题
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 ML 作业
编辑

从 nginx 集成添加 nginx ML 作业以开始使用异常检测

  • 要打开 作业,请在主菜单中找到 机器学习,或使用 全局搜索字段

    1. 选择 创建作业
    2. 在搜索栏中,输入 nginx 并选择 Nginx 访问日志 [Logs Nginx]
    3. 使用预配置作业 下,选择 Nginx 访问日志 卡片。
    4. 选择 创建作业

返回 异常检测作业 页面后,您应该会看到 nginx 异常检测作业 — low_request_rate_nginxsource_ip_request_rate_nginxsource_ip_url_count_nginxstatus_code_rate_nginxvisitor_rate_nginx

浏览异常检测作业结果
编辑

使用机器学习菜单下的 异常检测 中的异常资源管理器或单指标查看器查看异常检测作业结果。异常资源管理器显示所有或任何组合的 nginx ML 作业的结果。单指标查看器专注于特定作业。这些工具提供了对异常的全面视图,并有助于查找数据点和时间间隔之间的模式和不规则性。

请参考 查看异常检测作业结果,了解有关查看和理解异常检测作业结果的更多信息。

设置警报
编辑

使用 nginx ML 作业检测异常后,您可以设置规则以在作业满足特定条件时生成警报。例如,您可以对 low_request_rate_nginx 作业设置规则,以便在低请求率达到特定严重性阈值时发出警报。收到警报后,您可以确保服务器没有遇到问题。

请参考 为异常检测作业生成警报,了解有关设置这些规则和生成警报的更多信息。