监控 nginx:观察 nginx 实例的日志和指标

编辑

监控 nginx:观察 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. 在页面底部选择 仅添加集成(跳过代理安装)

步骤 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. 从 Kibana 菜单中,转到 堆栈管理API 密钥
  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 和系统集成的所有输入、输出和其他设置。

        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 将安装在 {installation location} 并作为服务运行。您要继续吗?,请回答

    如果系统提示您 您想将此代理注册到 Fleet 吗?,请回答

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

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

步骤 4:浏览日志和指标编辑

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

查看指标编辑

nginx 集成有一个内置仪表板,可在同一个位置显示 nginx 指标的全貌。要打开 nginx 仪表板,请执行以下操作

  1. 打开 Kibana 菜单,然后转到 管理集成已安装的集成
  2. 选择 Nginx 卡片,然后打开 资产 选项卡。
  3. 选择 [指标 Nginx] 概览 仪表板。

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

nginx metrics dashboard

查看日志编辑

提取 nginx 日志后,可以使用 日志资源管理器nginx 日志仪表板 查看和浏览日志。

日志资源管理器编辑

使用日志资源管理器,您可以快速搜索和过滤日志数据、获取有关日志字段结构的信息,以及在可视化中显示您的发现。要查看 nginx 日志,请打开 Kibana 并转到 可观测性日志资源管理器

从数据选择器中过滤结果以查看来自 nginx 集成的日志

  1. 集成 下,选择 Nginx

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

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

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

nginx 集成具有内置仪表板,可在同一个位置显示 nginx 日志的全貌。要打开 nginx 仪表板,请执行以下操作

  1. 打开 Kibana 菜单,然后转到 管理集成已安装的集成
  2. 选择 Nginx 卡片,然后打开 资产 选项卡。
  3. 选择 [日志 Nginx] 概览 仪表板或 [日志 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 地址。访问许多唯一 URL 的单个 IP 可能表明存在恶意行为,例如网络抓取或尝试查找敏感数据或漏洞。
异常状态代码率 (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. 在 Kibana 主菜单中,转到 机器学习。在 异常检测 下,选择 作业
  2. 选择 创建作业
  3. 在搜索栏中,输入 nginx 并选择 Nginx 访问日志 [日志 Nginx]
  4. 使用预配置的作业 下,选择 Nginx 访问日志 卡片。
  5. 选择 创建作业

返回 异常检测作业 页面后,您应该会看到 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 作业上设置规则,以便在低请求率达到特定严重性阈值时发出警报。收到警报后,您可以确保您的服务器没有遇到问题。

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