使用 Beats 监控 Microsoft Azure
编辑使用 Beats 监控 Microsoft Azure
编辑本教程将指导您如何使用 Elastic 可观测性:日志和基础设施指标来监控您的 Microsoft Azure 部署。
您将学到什么
编辑您将学习如何:
- 在 Azure 门户中创建 Elasticsearch 资源。
- 使用原生集成提取 Azure 平台日志,并在 Kibana 中查看这些日志。
- 提取虚拟机的日志和指标,并在 Kibana 中查看这些日志和基础设施指标。
- 使用 Metricbeat Azure 模块 提取其他指标(例如计费),并在 Kibana 中查看这些指标。
步骤 1:在 Azure 门户中创建 Elasticsearch 资源
编辑Microsoft Azure 允许您在 Azure 门户中查找、部署和管理 Elasticsearch。Microsoft Azure 门户集成使您能够更快、更轻松地在 Azure 环境中体验 Elastic 的价值。幕后,此过程将使用 Elastic Cloud 预配市场订阅。
创建 Elasticsearch 资源
编辑-
登录到 Azure 门户。
确保您的 Azure 帐户已在您想要部署 Elasticsearch 的订阅中配置了 所有者 访问权限。要了解有关 Azure 订阅的更多信息,请参阅 Microsoft Azure 文档。
- 在搜索栏中,输入 Elasticsearch,然后选择它。
- 单击 创建。
- 输入 订阅、资源组 和 资源名称。
-
选择一个区域,然后单击 查看 + 创建。
我们将在本教程的后面部分介绍 日志 和 基础设施指标。
- 要创建 Elasticsearch 部署,请单击 创建。
-
部署完成后,单击 转到资源。在这里您可以查看和配置您的部署详细信息。要访问集群,请单击 Kibana。
- 要直接单点登录到 Elastic,请选择您的 Azure 帐户。
-
要查看是否有任何可用数据,请单击 可观测性。目前应该没有数据,但接下来您将提取日志。
步骤 2:使用原生集成提取日志
编辑使用 Microsoft Azure 原生集成将 Azure 订阅和资源日志提取到 Elastic 非常简单。
-
在 Azure 中的 Elasticsearch 资源页面上,单击 从 Azure 服务提取日志和指标。
-
选中两个复选框,然后单击 保存。
此配置也可以在 Elastic 资源创建期间应用。为了使概念更清晰,本教程将这两个步骤分开。
原生指标收集尚未完全支持,将在后面讨论。
- 在 Kibana 中,在主菜单中找到可观测性 概述,或使用 全局搜索字段。刷新页面直到看到一些数据。这可能需要几分钟。
- 要分析您的订阅和资源日志,请单击 显示日志资源管理器。
步骤 3:从您的虚拟机提取日志和指标
编辑日志和指标都按您选择的虚拟机名称进行筛选。要查看所有受监控虚拟机的數據,請刪除篩選器。
步骤 4:使用 Metricbeat Azure 模块提取其他 Azure 指标
编辑并非所有 Azure 指标都可通过原生集成获得。如果您想收集这些指标,您需要使用 Azure Monitor REST API 和 Metricbeat。
Azure Monitor REST API 允许您使用不同的操作来了解您的 Azure 资源。要访问 Azure Monitor REST API,您需要使用 Azure 资源管理器身份验证模型。因此,您必须使用 Azure Active Directory (Azure AD) 对所有请求进行身份验证。您可以使用 Azure 门户 或 Azure PowerShell 创建服务主体。然后,您需要授予访问权限,此处详细说明了 此处。本教程使用 Azure 门户。
创建 Azure 服务主体
编辑-
转到 Azure 管理门户。搜索并单击 Azure Active Directory。
-
在选定的 Active Directory 的导航窗格中单击 应用注册,然后单击 新建注册。
-
键入您的应用程序名称(本教程使用
monitor-azure
),然后单击 注册(将所有其他选项保留为默认值)。复制 应用程序(客户端)ID 并将其保存以备将来参考。此 ID 对于配置 Metricbeat 以连接到您的 Azure 帐户是必需的。
-
单击 证书和密钥。然后,单击 新建客户端密钥 以创建新的安全密钥。
-
键入密钥说明并选择密钥期限。单击 添加 以创建客户端密钥。下一页将在 值 字段下显示密钥值。复制密钥并将其(以及您的客户端 ID)保存以备将来参考。
这是您唯一一次可以复制此值的机会。离开页面后,您将无法检索密钥值。
为您的服务主体授予访问权限
编辑创建 Azure 服务主体后,您需要为其授予正确的权限。您需要 Reader
权限才能配置 Metricbeat 来监控您的服务。
-
在 Azure 门户上,搜索并单击 订阅。
- 在订阅页面上,单击您的订阅。
- 在订阅导航窗格中单击 访问控制 (IAM)。
- 单击 添加 并选择 添加角色分配。
- 选择 读取者 角色。
-
在 选择 字段中,键入已配置服务主体的描述名称 (
monitor-azure
)。 - 选择应用程序并单击保存以授予服务主体对您订阅的访问权限。
安装和配置 Metricbeat
编辑要配置 Metricbeat,您需要 Elasticsearch 集群详细信息。
-
在 Elasticsearch 资源页面上,单击 管理 Elastic Cloud 中的更改。
-
复制 云 ID 并妥善保管。您稍后将使用它。
-
单击 安全,然后单击 重置密码。确认并复制密码。妥善保管,因为您稍后将使用它。
您可以在任何机器上运行 Metricbeat。本教程使用一台小型 Azure 虚拟机 B2s(2 个 vCPU,4 GB 内存),使用 Ubuntu 发行版。
安装 Metricbeat
编辑下载并安装 Metricbeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-amd64.deb sudo dpkg -i metricbeat-8.16.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-x86_64.rpm sudo rpm -vi metricbeat-8.16.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-darwin-x86_64.tar.gz tar xzvf metricbeat-8.16.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.16.0-linux-x86_64.tar.gz tar xzvf metricbeat-8.16.0-linux-x86_64.tar.gz
- 从 下载页面 下载 Metricbeat Windows zip 文件。
- 将 zip 文件的内容解压缩到
C:\Program Files
。 - 将
metricbeat-<version>-windows
目录重命名为Metricbeat
。 - 以管理员身份打开 PowerShell 提示符(右键单击 PowerShell 图标并选择 以管理员身份运行)。
-
从 PowerShell 提示符运行以下命令,将 Metricbeat 安装为 Windows 服务
PS > cd 'C:\Program Files\Metricbeat' PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1
如果您的系统禁用了脚本执行,您需要将当前会话的执行策略设置为允许脚本运行。例如:PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-metricbeat.ps1
。
设置资源
编辑Metricbeat 附带预定义的资源,用于解析、索引和可视化您的数据。运行以下命令加载这些资源。这可能需要几分钟。
./metricbeat setup -e -E 'cloud.id=YOUR_DEPLOYMENT_CLOUD_ID' -E 'cloud.auth=elastic:YOUR_SUPER_SECRET_PASS'
请将您的云 ID 和管理员的 |
设置 Metricbeat 是管理员级别的任务,需要额外的权限。最佳实践是 使用管理员角色进行设置,并使用更严格的角色进行事件发布(您将在下一步执行此操作)。
配置 Metricbeat 输出
编辑接下来,您将配置 Metricbeat 将输出发送到 Elasticsearch Service。
-
使用 Metricbeat 密钥库存储 安全设置。将云 ID 存储在密钥库中。
./metricbeat keystore create echo -n "<Your Deployment Cloud ID>" | ./metricbeat keystore add CLOUD_ID --stdin
-
为了以最少的权限将指标存储在 Elasticsearch 中,请创建一个 API 密钥,用于将数据从 Metricbeat 发送到 Elasticsearch Service。登录 Kibana(您可以通过云控制台登录,无需输入任何权限)并在 全局搜索字段 中找到
Dev Tools
。从 控制台 发送以下请求POST /_security/api_key { "name": "metricbeat-monitor", "role_descriptors": { "metricbeat_writer": { "cluster": ["monitor", "read_ilm"], "index": [ { "names": ["metricbeat-*"], "privileges": ["view_index_metadata", "create_doc"] } ] } } }
-
响应包含
api_key
和id
字段,可以按以下格式存储在 Metricbeat 密钥库中:id:api_key
。echo -n "IhrJJHMB4JmIUAPLuM35:1GbfxhkMT8COBB4JWY3pvQ" | ./metricbeat keystore add ES_API_KEY --stdin
请确保指定
-n
参数;否则,由于在 API 密钥末尾添加了换行符,您将遇到痛苦的调试过程。 -
要查看是否已存储这两个设置,请运行以下命令
./metricbeat keystore list
-
要将 Metricbeat 配置为输出到 Elasticsearch Service,请编辑
metricbeat.yml
配置文件。将以下几行添加到文件的末尾。cloud.id: ${CLOUD_ID} output.elasticsearch: api_key: ${ES_API_KEY}
-
最后,测试配置是否有效。如果无效,请验证是否使用了正确的凭据并重新添加它们。
./metricbeat test output
现在输出已正常工作,您将设置输入(Azure)。
配置 Metricbeat Azure 模块
编辑要从 Microsoft Azure 收集指标,请使用 Metricbeat Azure 模块。此模块使用 Azure Monitor REST API 定期获取 Microsoft Azure 的监控指标。
此模块可能会产生关于指标查询的额外 Azure 费用。请参阅 关于指标和费用的其他说明,了解更多详情。
-
Azure 模块配置需要三个 ID 和一个密钥。使用以下命令将每个 ID 和密钥存储在密钥库中。
echo -n "<client_id>" | ./metricbeat keystore add AZURE_CLIENT_ID --stdin echo -n "<client_secret>" | ./metricbeat keystore add AZURE_CLIENT_SECRET --stdin echo -n "<tenant_id>" | ./metricbeat keystore add AZURE_TENANT_ID --stdin echo -n "<subscription_id>" | ./metricbeat keystore add AZURE_SUBSCRIPTION_ID --stdin
您可以在主要的 Azure Active Directory 页面中找到
tenant_id
。您可以在主要的订阅页面中找到subscription_id
。 -
启用 Azure 模块。
./metricbeat modules enable azure
-
编辑
modules.d/azure.yml
文件以收集billing
指标。 -
要检查 Metricbeat 是否可以收集数据,请运行以下命令测试输入
./metricbeat test modules azure
如果设置正确,Metricbeat 将会打印
billing
指标到终端。如果返回超时错误,请重试。
test modules
的超时时间很短。 -
输入和输出准备就绪后,启动 Metricbeat 收集数据。
./metricbeat -e
-
最后,登录 Kibana 并打开 [Metricbeat Azure] 账单概览 仪表板。请记住它每 24 小时收集一次数据。