使用 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 门户集成使你能够更快、更轻松地体验 Elastic 在 Azure 环境中的价值。在幕后,此过程将使用 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 服务主体后,你需要授予其正确的权限。你需要 读取者
权限来配置 Metricbeat 以监控你的服务。
-
在 Azure 门户中,搜索并单击 订阅。
- 在“订阅”页面中,单击你的订阅。
- 在订阅导航窗格中,单击 访问控制 (IAM)。
- 单击 添加,然后选择 添加角色分配。
- 选择 读取者 角色。
-
在 选择 字段中,输入已配置服务主体的描述名称(
monitor-azure
)。 - 选择应用程序,然后单击“保存”以授予服务主体对你的订阅的访问权限。
安装和配置 Metricbeat
编辑要配置 Metricbeat,你需要 Elasticsearch 集群详细信息。
-
在 Elasticsearch 资源页面上,单击 管理 Elastic Cloud 中的更改。
-
复制 Cloud ID 并妥善保管。你稍后将使用它。
-
单击 安全性,然后单击 重置密码。确认并复制密码。妥善保管,因为你稍后将使用它。
你可以在任何机器上运行 Metricbeat。本教程使用一台小型 Azure VM,B2s(2 个 vCPU,4 GB 内存),使用 Ubuntu 发行版。
安装 Metricbeat
编辑下载并安装 Metricbeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-amd64.deb sudo dpkg -i metricbeat-8.17.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-x86_64.rpm sudo rpm -vi metricbeat-8.17.0-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-darwin-x86_64.tar.gz tar xzvf metricbeat-8.17.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-linux-x86_64.tar.gz tar xzvf metricbeat-8.17.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'
在此命令中替换你的 Cloud ID 和管理员的 |
设置 Metricbeat 是一项需要额外权限的管理员级任务。作为最佳实践,使用管理员角色进行设置,并为事件发布使用更具限制性的角色(你将在下一步中执行)。
配置 Metricbeat 输出
编辑接下来,你将配置 Metricbeat 输出到 Elasticsearch Service。
-
使用 Metricbeat 密钥库存储 安全设置。将 Cloud ID 存储在密钥库中。
./metricbeat keystore create echo -n "<Your Deployment Cloud ID>" | ./metricbeat keystore add CLOUD_ID --stdin
-
要以最小权限将指标存储在 Elasticsearch 中,请创建一个 API 密钥以将数据从 Metricbeat 发送到 Elasticsearch Service。登录到 Kibana(你可以从 Cloud Console 执行此操作,而无需键入任何权限),并在 全局搜索字段 中找到
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 和一个密钥。使用以下命令将它们分别存储在密钥库中。
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 小时收集一次数据。