示例:结合 Elastic Cloud Hosted 使用独立 Elastic Agent 监控 Nginx
本指南将带你了解一个简单的监控场景,以便你学习设置独立式 Elastic Agent 并将其与 Elastic Cloud Hosted 和 Elastic 集成配合使用的基础知识。
按照这些步骤,你将部署 Elastic Stack,在一台主机上安装独立式 Elastic Agent 来监控 nginx Web 服务器实例,并访问基于所收集日志的可视化内容。
- 安装 nginx.
- 创建 Elastic Cloud 部署.
- 创建 Elastic Cloud API 密钥。
- 创建 Elastic Agent 策略.
- 添加 Nginx 集成.
- 配置独立式 Elastic Agent.
- 确认你的 Elastic Agent 数据正在传输.
- 查看您的系统数据.
- 查看你的 nginx 日志数据.
开始之前,您需要准备:
- 一个用于 Elastic Cloud 试用的互联网连接和一个电子邮箱地址。
- 一台将在其上安装 nginx Web 服务器的 Linux 主机。本指南中的命令使用的是 Ubuntu 镜像,但任何 Linux 发行版都可以。
首先,我们将设置一个基本的 nginx Web 服务器。
在 Ubuntu Linux 主机上运行以下命令,或者参阅 nginx 安装文档以获取适合你操作系统的命令。
sudo apt install nginx打开网页浏览器并访问你主机的外部 URL,例如
http://192.168.64.17/。你应该会看到 nginx 欢迎页面。
如果你已经注册了试用部署,可以跳过此步骤。
既然你的 Web 服务器正在运行,让我们开始设置在 Elastic Cloud 中对其进行监控。托管式 Elastic Cloud 部署为你提供 Elastic Stack 的所有功能作为托管服务。要试用你的第一个部署,请注册免费的 Elastic Cloud 试用版
转到我们的 Elastic Cloud 试用页面。
输入您的电子邮箱地址和密码。
登录后,选择创建部署 (Create deployment) 并为你的部署命名。你可以保留默认选项,或选择不同的云服务提供商、区域、硬件配置文件或版本。
选择创建部署 (Create deployment)。
在部署设置过程中,记下你的
elastic超级用户密码并将其保存在安全的地方。部署准备就绪后,选择继续 (Continue)。此时,你可以访问 Kibana 以及一系列设置指南。
- 从 Kibana 菜单转到堆栈管理 (Stack Management) → API 密钥 (API keys)。
- 选择 Create API key(创建 API 密钥)。
- 为密钥命名,例如
nginx example API key。 - 保留其他默认选项,然后选择 Create API key。
- 在创建 API 密钥 (Create API key) 确认对话框中,将下拉菜单设置从
Encoded更改为Beats。这设置了 Elastic Agent(基于 Beats)与 Elasticsearch 之间通信的 API 密钥格式。 - 复制生成的 API 密钥并将其保存在安全的地方。你将在后面的步骤中使用它。
Elastic Agent 是一种单一、统一的方式,用于为主机添加日志、指标和其他类型数据的监控。它还可以保护主机免受安全威胁、从操作系统查询数据等。单一代理使跨基础设施部署监控变得轻松快捷。每个代理都有一个单一策略(输入设置的集合),你可以更新该策略以为新的数据源、安全保护等添加集成。
当 Elastic Cloud 部署准备就绪时,打开 Kibana 菜单并转到舰队 (Fleet) → 代理策略 (Agent policies)。
点击 Create agent policy(创建代理策略)。
为你的策略命名。对于本示例,我们将其命名为
nginx-policy。保持选中收集系统日志和指标 (Collect system logs and metrics)。
点击 Create agent policy(创建代理策略)。
Elastic 集成是一种简化的方法,可将来自常用服务和平台(包括 nginx)的数据连接到 Elastic Stack。
在舰队 (Fleet) → 代理策略 (Agent policies) 选项卡中,单击你的新策略
nginx-policy的链接。
系统集成 (
system-1) 包含在内,因为你之前选择收集系统日志和指标。单击添加集成 (Add integration)。
在“集成”页面上搜索“nginx”。
选择 Nginx 卡片。
单击添加 Nginx (Add Nginx)。
单击仅添加集成(跳过代理安装)(Add integration only (skip agent installation)) 链接。你将在后面的步骤中安装独立式 Elastic Agent。
在这里,你可以选择各种选项,例如存储 nginx 日志的路径、是否收集指标数据以及各种其他设置。
目前,保留所有默认设置并单击保存并继续 (Save and continue),将 Nginx 集成添加到你的
nginx-policy策略中。
在确认对话框中,选择稍后添加 Elastic Agent (Add Elastic Agent later)。
与其选择 Fleet 来集中管理 Elastic Agent,不如将代理配置为以独立模式运行,以便手动对其进行管理。
在 Fleet 中,打开代理 (Agents) 选项卡并单击添加代理 (Add agent)。
对于你要添加什么类型的主机? (What type of host are you adding?) 步骤,如果尚未选中,请从下拉菜单中选择
nginx-policy。对于注册到 Fleet? (Enroll in Fleet?) 步骤,选择独立运行 (Run standalone)。
对于配置代理 (Configure the agent) 步骤,选择下载策略 (Download Policy)。将
elastic-agent.yml文件保存到主机上你将安装 nginx 进行监控的目录中。查看策略文件的内部,注意它包含 Nginx 和系统集成的所有输入、输出和其他设置。如果你已经在具有现有 Elastic Agent 策略的主机上安装了独立代理,则可以使用此处描述的方法添加新集成。将配置代理 (Configure the agent) 步骤中的设置添加到你现有的
elastic-agent.yml文件中。对于在主机上安装 Elastic Agent (Install Elastic Agent on your host) 步骤,选择你的主机操作系统选项卡并在主机上运行相应的命令。
注意Elastic Agent 命令应以
root身份运行。你可以在每个代理命令前面加上sudo,或者通过运行sudo su以root身份启动新的 shell。如果你需要在没有root权限的情况下运行 Elastic Agent 命令,请参考在没有管理权限的情况下运行 Elastic Agent (Run Elastic Agent without administrative privileges)。如果系统提示
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由于你以独立模式运行代理,因此出现
Not enrolled into Fleet(未注册到 Fleet)消息是正常的。打开你保存的
elastic-agent.yml策略文件。在文件顶部附近,替换
username: '${ES_USERNAME}' password: '${ES_PASSWORD}'替换为
api_key: '<your-api-key>'其中
your-api-key是你在第三步:创建一个 Elasticsearch API 密钥中生成的 API 密钥。查找 Elastic Agent 安装中包含的默认
elastic-agent.yml策略文件的位置。安装布局 (Installation layout) 中描述了各个平台的安装目录。在我们的示例 Ubuntu 镜像中,默认策略文件位于/etc/elastic-agent/elastic-agent.yml。用你下载并更新的版本替换默认策略文件。例如
cp /home/ubuntu/homedir/downloads/elastic-agent.yml /etc/elastic-agent/elastic-agent.yml注意你可能需要在
cp命令前加上sudo以获得替换默认文件所需的权限。默认情况下,Elastic Agent 会监控配置文件,并在
elastic-agent.yml更新时自动重新加载配置。再次运行
status命令,这次使用--output yaml选项,它提供结构化且更详细的输出。有关更多详细信息,请参阅elastic-agent status命令文档。elastic-agent status --output yaml结果显示代理状态以及有关运行组件的详细信息,这些组件对应于添加到 Elastic Agent 策略的集成(在此例中为系统和 Nginx 集成)定义的输入和输出。
在命令输出的顶部,
info部分包含有关代理实例的详细信息。记下代理 ID。在本示例中,ID 为4779b439-1130-4841-a878-e3d7d1a457d0。你将在下一节中使用该 ID。elastic-agent status --output yaml info: id: 4779b439-1130-4841-a878-e3d7d1a457d0 version: 8.9.1 commit: 5640f50143410fe33b292c9f8b584117c7c8f188 build_time: 2023-08-10 17:04:04 +0000 UTC snapshot: false state: 2 message: Running
既然 Elastic Agent 正在运行,是时候确认代理数据正在传入 Elasticsearch 了。
检查 Elastic Agent 日志是否在传输。
打开 Kibana 菜单并转到分析 (Analytics) → 发现 (Discover)。
在 KQL 查询栏中,输入查询
agent.id : "{{agent-id}}",其中{{agent-id}}是你从elastic-agent status --output yaml命令中检索到的 ID。例如:agent.id : "4779b439-1130-4841-a878-e3d7d1a457d0"。如果 Elastic Agent 已成功连接到你的 Elastic Cloud 部署,代理日志应该正在传入 Elasticsearch 并在 Kibana 的“发现 (Discover)”中可见。
检查 Elastic Agent 指标是否在传输。
在创建 Elastic Agent 策略的步骤中,你选择收集系统日志和指标,因此你现在可以访问这些内容。
查看你的系统日志。
- 打开 Kibana 菜单并转到管理 (Management) → 集成 (Integrations) → 已安装的集成 (Installed integrations)。
- 选择 System 卡片并打开资产 (Assets) 选项卡。这是访问每个集成自带的所有仪表板、保存的搜索和可视化内容的快捷方式。
- 选择
[Logs System] Syslog dashboard。 - 打开时间过滤器并选择今天 (Today)。Kibana 仪表板显示了 Syslog 事件、主机名和进程等的可视化内容。
查看你的系统指标。
现在让我们查看你的 nginx 日志数据。
打开 Kibana 菜单并转到管理 (Management) → 集成 (Integrations) → 已安装的集成 (Installed integrations)。
选择 Nginx 卡片并打开 Assets 选项卡。
选择
[Logs Nginx] Overview。打开 Kibana 仪表板,其中包含地理日志详细信息、随时间变化的响应代码和错误、热门页面等。多次刷新你的 nginx 网页以更新日志数据。你还可以尝试从不同的网页浏览器访问 nginx 页面。大约一分钟后,
Browsers breakdown(浏览器细分)可视化将显示来自不同浏览器类型的各自请求量。
恭喜!你已成功使用独立式 Elastic Agent 和 Elastic Cloud 部署设置了对 nginx 的监控。
- 了解有关 Fleet 和 Elastic Agent 的更多信息。
- 了解有关 集成 (Integrations) 的更多信息。
- 了解如何管理你的 数据生命周期 (data lifecycle)。