教程:监控您的 Nginx 实例

编辑

使用Nginx Elastic 集成和 Elastic Agent 从您的 Nginx 实例收集有价值的指标和日志。然后,使用 Kibana 中内置的仪表板和日志资源管理器等工具,在一个位置可视化和监控您的 Nginx 数据。此数据可为您的 Nginx 实例提供有价值的见解,例如

  • 特定资源的错误日志激增可能意味着您有一个仍然需要的已删除资源。
  • 访问日志可以显示服务的峰值时间,并由此得出执行维护等操作的最佳时间。
  • 客户端请求的突然激增可能指向恶意行为,例如 DDoS 攻击。

您将学到什么

编辑

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

  • 使用 Elastic Agent 和 Nginx 集成从 Nginx 实例收集日志和指标。
  • 将数据集中在 Elastic Stack 中。
  • 使用定制的仪表板和可观察性用户界面实时探索数据。

数据类型

编辑

Nginx 集成收集日志和指标。

日志

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

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

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

指标

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

开始之前

编辑

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

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

步骤 1:添加 Nginx 集成

编辑

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

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

步骤 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 可以让您自动部署更新并集中管理代理。

独立

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

有关更多信息

加入 Fleet
编辑

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

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

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

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

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

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

    替换

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

        api_key: '<your-api-key>'

    其中 your-api-key 是您之前在此部分中创建的密钥。

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

  4. 在您的主机上安装 Elastic Agent下,选择您的主机操作系统对应的选项卡,并在您的主机上运行命令。
  5. 如果提示 Elastic Agent 将安装在 {安装位置} 并将作为服务运行。您是否要继续? 请回答

    如果提示 您是否要将此代理加入 Fleet? 请回答

  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] 概述仪表板。

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

nginx metrics dashboard
查看日志
编辑

在摄取 Nginx 日志后,使用日志资源管理器Nginx 日志仪表板查看和探索日志。

日志资源管理器
编辑

通过日志资源管理器,您可以快速搜索和筛选日志数据,获取有关日志字段结构的信息,并在可视化中显示您的发现。

要打开日志浏览器,请在全局搜索字段中查找日志浏览器

从数据选择器中筛选结果,以查看来自 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 作业设置一个规则,以便在低请求速率达到特定严重性阈值时发出警报。当您收到警报时,您可以确保您的服务器没有遇到问题。

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