教程:观察您的 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 集成。
- 在集成页面顶部选择 Add Nginx。
- 在页面底部选择 Add integration only (skip agent installation)。
Nginx 集成可以从您的 Nginx 实例获取不同的日志和指标。在 Add Nginx integration 页面上,配置您希望集成收集的日志和指标。有关配置集成的更多信息,请参阅以下部分。
Nginx 集成可以收集访问日志和错误日志。
- 访问日志:启用此选项以收集有关客户端请求的日志。
- 错误日志:启用此选项以收集有关 Nginx 在不同严重级别遇到的问题的日志。
为访问日志和错误日志配置以下内容
- Paths(路径)
- 您的日志位置。
- 保留原始事件
- 启用以将原始事件的副本添加到
event.original字段。
Nginx 集成从您的实例收集 stub_status 指标。确保您的 Nginx 实例已配置为收集指标。配置以下内容以收集指标
- 主机
- Elastic 将连接以收集指标的服务器地址。
- 周期
- 轮询指标的频率。默认值为每 10 秒。
配置完集成后,您需要将 Elastic Agent 添加到主机以收集数据并将其发送到 Elastic Stack。您有两种添加 Elastic Agent 的选项:注册到 Fleet 或 运行独立。
有关更多信息
按照 Add agent 屏幕中的说明在主机上安装 Elastic Agent
- 在 Enroll in Fleet? 下,确保选中了 Enroll in Fleet。
- 在 Install Elastic Agent on your host 下,复制您系统的命令并在您的主机上运行。您可以在多个主机上重复使用该命令。
- 代理在您的主机上启动后,您将看到代理已注册到 Fleet 的确认信息。
在安装和运行独立 Elastic Agent 之前,您需要创建一个 API 密钥。创建 Elastic Cloud API 密钥
- 要打开 API keys,请在主菜单中查找 Stack Management 或使用全局搜索字段。
- 选择 Create API key (创建 API 密钥)。
- 为此密钥命名。例如,
nginx API key。 - 保留其他默认选项,然后选择 Create API key (创建 API 密钥)。
- 在 Create API key 确认对话框中,将下拉菜单设置从
Encoded更改为Beats。这会为 Elastic Agent(基于 Beats)与 Elasticsearch 之间的通信设置 API 密钥格式。 - 复制生成的 API 密钥并将其保存在安全的地方。
创建 API 密钥后,请按照 Add agent 屏幕中的说明在主机上安装 Elastic Agent
在 Enroll in Fleet? 下,选择 Run standalone。
在 Configure the agent 下,选择 Download Policy。将
elastic-agent.yml文件保存到将安装 Nginx 以进行监控的主机上的一个目录中。打开策略文件,注意它包含 Nginx 和 System 集的所有输入、输出和其他设置。
替换
username: '${ES_USERNAME}' password: '${ES_PASSWORD}'替换为
api_key: '<your-api-key>'其中
your-api-key是您在本节前面创建的密钥。如果您已在具有现有 Elastic Agent 策略的主机上安装了独立代理,请将 Configure the agent 步骤中的设置添加到您现有的
elastic-agent.yml文件中。在 Install Elastic Agent on your host 下,选择适合您主机操作系统的选项卡,并在您的主机上运行命令。
如果您收到提示
Elastic Agent will be installed at {installation location} and will run as a service. Do you want to continue?(Elastic Agent 将安装在 {安装位置} 并作为服务运行。您要继续吗?),请回答Yes(是)。如果您收到提示
Do you want to enroll this Agent into Fleet?(您要将此代理注册到 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 仪表板
- 在主菜单中找到集成,或使用全局搜索字段。
- 选择 Installed integrations。
- 选择 Nginx 卡片,然后打开 Assets (资产) 选项卡。
- 选择
[Metrics Nginx] Overview仪表板。
Metrics Nginx overview 显示总请求数、已处理请求数、心跳/正常、活动连接数、读/写/等待速率、请求速率、接受和处理速率以及丢弃速率的可视化表示。
在您的 Nginx 日志被摄取后,使用 Discover 或 Nginx 日志仪表板查看和探索您的日志。
使用 Discover,您可以快速搜索和过滤日志数据,获取有关日志字段结构的信息,并以可视化方式展示您的发现。
在全局搜索字段中找到 Discover。
从数据选择器中过滤结果,以查看来自 Nginx 集成的日志
从 Data view 菜单中,选择所有日志。
使用 KQL 搜索栏过滤日志结果。输入
data_stream.dataset : "nginx.error"以显示 Nginx 错误日志,或输入data_stream.dataset : "nginx.access"以显示 Nginx 访问日志。
Nginx 集成具有内置仪表板,可在其中一处显示您的 Nginx 日志的完整图景。要打开 Nginx 仪表板
- 在主菜单中找到集成,或使用全局搜索字段。
- 选择 Installed integrations。
- 选择 Nginx 卡片,然后打开 Assets (资产) 选项卡。
- 选择
[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 作业以开始使用异常检测
要打开 Jobs,请在主菜单中查找 Machine Learning 或使用全局搜索字段。
- 选择 Create job。
- 在搜索栏中,输入 nginx 并选择 Nginx access logs [Logs Nginx]。
- 在 Use preconfigured jobs 下,选择 Nginx access logs 卡片。
- 选择 Create jobs。
回到 Anomaly Detection Jobs 页面,您应该会看到 Nginx 异常检测作业 — low_request_rate_nginx、source_ip_request_rate_nginx、source_ip_url_count_nginx、status_code_rate_nginx 和 visitor_rate_nginx。
使用 Machine Learning 菜单下的 Anomaly Explorer 或 Single Metric Viewer 查看您的异常检测作业结果。Anomaly Explorer 显示所有 Nginx ML 作业或任何组合的结果。Single Metric Viewer 专注于特定作业。这些工具提供了异常情况的全面视图,并有助于查找数据点和时间间隔中的模式和异常。
有关查看和理解异常检测作业结果的更多信息,请参阅查看异常检测作业结果。
通过 Nginx ML 作业检测异常,您可以设置规则,当您的作业满足特定条件时生成警报。例如,您可以为 low_request_rate_nginx 作业设置一个规则,在低请求速率达到特定严重级别阈值时发出警报。当收到警报时,您可以确保您的服务器没有遇到问题。
有关设置这些规则和生成警报的更多信息,请参阅为异常检测作业生成警报。