使用 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 中,单击可观测性,直到看到一些数据。这可能需要几分钟时间。
-
要访问 Logs 应用程序并分析所有订阅和资源日志,请单击在应用程序中查看。
步骤 3:从您的虚拟机摄取日志和指标。编辑
-
转到您的 Elastic 资源并单击虚拟机。
-
选择要从中收集日志和指标的虚拟机,单击安装扩展,然后单击确定。
-
等待安装完成并开始发送数据(如果列表未更新,请单击刷新)。要在 Logs 应用程序中查看来自虚拟机的日志,请单击日志。
要查看虚拟机指标仪表板,请单击基础设施。
日志和指标都按您选择的虚拟机名称进行过滤。要查看所有受监控虚拟机的数据,请删除过滤器。
步骤 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,并将其保存以供将来参考。配置 Metricbeat 以连接到您的 Azure 帐户时需要使用此 ID。
-
单击证书和机密。然后,单击新建客户端机密以创建新的安全密钥。
-
输入密钥描述,并在到期列表中选择密钥持续时间。单击添加以创建客户端机密。下一页将在值字段下显示密钥值。复制机密并将其(以及您的客户端 ID)保存以供将来参考。
这是您复制此值的唯一机会。离开页面后,您将无法检索密钥值。
为您的服务主体授予访问权限编辑
创建 Azure 服务主体后,您需要为其授予正确的权限。您需要读取者
权限才能将 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.14.2-amd64.deb sudo dpkg -i metricbeat-8.14.2-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-x86_64.rpm sudo rpm -vi metricbeat-8.14.2-x86_64.rpm
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-darwin-x86_64.tar.gz tar xzvf metricbeat-8.14.2-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.14.2-linux-x86_64.tar.gz tar xzvf metricbeat-8.14.2-linux-x86_64.tar.gz
- 从下载页面下载 Metricbeat Windows 压缩文件。
- 将压缩文件的内容解压缩到
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 执行此操作,而无需键入任何权限),然后选择 管理 → 开发工具。发送以下请求
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 小时收集一次数据。