使用 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 资源编辑
  1. 登录到Azure 门户

    确保您的 Azure 帐户在要部署 Elasticsearch 的订阅上配置了所有者访问权限。要详细了解 Azure 订阅,请参阅Microsoft Azure 文档

  2. 在搜索栏中,输入Elasticsearch,然后选择它。
  3. 单击创建
  4. 输入订阅资源组资源名称
  5. 选择一个区域,然后单击查看 + 创建

    Create Elastic resource

    我们将在本教程的后面部分介绍日志基础设施指标

  6. 要创建 Elasticsearch 部署,请单击创建
  7. 部署完成后,单击转到资源。您可以在此处查看和配置部署详细信息。要访问集群,请单击Kibana

    Elastic resource

  1. 要直接单点登录到 Elastic,请选择您的 Azure 帐户。
  2. 要查看是否有任何可用数据,请单击可观测性。现在应该还没有数据,但接下来您将摄取日志。

    Kibana Observability page (no data)

步骤 2:使用原生集成摄取日志编辑

使用 Microsoft Azure 原生集成将 Azure 订阅和资源日志摄取到 Elastic 中非常简单。

  1. 在 Azure 的 Elasticsearch 资源页面上,单击从 Azure 服务摄取日志和指标

    Click on Ingest logs and metrics from Azure Services

  2. 选中两个复选框,然后单击保存

    Elastic configure logs and metrics

    此配置也可以在 Elastic 资源创建期间应用。为了使概念更清晰,本教程将这两个步骤分开。

    原生指标收集尚不支持,我们将在后面讨论。

  3. 在 Kibana 中,单击可观测性,直到看到一些数据。这可能需要几分钟时间。

    Kibana Observability page (with data)

  4. 要访问 Logs 应用程序并分析所有订阅和资源日志,请单击在应用程序中查看

    Kibana Logs app

步骤 3:从您的虚拟机摄取日志和指标。编辑

  1. 转到您的 Elastic 资源并单击虚拟机

    Elastic resource

  2. 选择要从中收集日志和指标的虚拟机,单击安装扩展,然后单击确定

    Select VMs to collect logs and metrics from

  3. 等待安装完成并开始发送数据(如果列表未更新,请单击刷新)。要在 Logs 应用程序中查看来自虚拟机的日志,请单击日志

    VMs logs in the Logs app

    要查看虚拟机指标仪表板,请单击基础设施

    VMs metrics dashboard

    日志和指标都按您选择的虚拟机名称进行过滤。要查看所有受监控虚拟机的数据,请删除过滤器。

步骤 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 服务主体编辑
  1. 转到Azure 管理门户。搜索并单击Azure Active Directory

    Search and click on Azure Active Directory

  2. 在所选 Active Directory 的导航窗格中单击应用注册,然后单击新注册

    Click on App registrations

  3. 输入您的应用程序的名称(本教程使用monitor-azure),然后单击注册(保留所有其他选项的默认值)。

    Register an application

    复制应用程序(客户端)ID,并将其保存以供将来参考。配置 Metricbeat 以连接到您的 Azure 帐户时需要使用此 ID。

  4. 单击证书和机密。然后,单击新建客户端机密以创建新的安全密钥。

    Click on new client secret

  5. 输入密钥描述,并在到期列表中选择密钥持续时间。单击添加以创建客户端机密。下一页将在字段下显示密钥值。复制机密并将其(以及您的客户端 ID)保存以供将来参考。

    这是您复制此值的唯一机会。离开页面后,您将无法检索密钥值。

为您的服务主体授予访问权限编辑

创建 Azure 服务主体后,您需要为其授予正确的权限。您需要读取者权限才能将 Metricbeat 配置为监控您的服务。

  1. 在 Azure 门户上,搜索并单击订阅

    Search and click on Subscriptions

  2. 在“订阅”页面上,单击您的订阅。
  3. 在订阅导航窗格中单击访问控制 (IAM)
  4. 单击添加,然后选择添加角色分配
  5. 选择读取者角色。
  6. 选择字段中,输入已配置的服务主体的描述名称 (monitor-azure)。

    Add role assignment

  7. 选择应用程序并单击“保存”以授予服务主体对您的订阅的访问权限。
安装和配置 Metricbeat编辑

要配置 Metricbeat,您需要 Elasticsearch 集群详细信息。

  1. 在 Elasticsearch 资源页面上,单击管理 Elastic Cloud 中的更改

    Elastic resource

  2. 复制云 ID并妥善保管。您稍后将使用它。

    Elastic Cloud deployment

  3. 单击安全,然后单击重置密码。确认并复制密码。妥善保管,因为您稍后将使用它。

    Elastic Cloud security

您可以在任何计算机上运行 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
设置资产编辑

Metricbeat 附带预定义的资产,用于解析、索引和可视化您的数据。运行以下命令以加载这些资产。这可能需要几分钟时间。

./metricbeat setup -e -E 'cloud.id=YOUR_DEPLOYMENT_CLOUD_ID' -E 'cloud.auth=elastic:YOUR_SUPER_SECRET_PASS' 

在此命令中替换您的 Cloud ID 和管理员的 用户名:密码。要查找您的 Cloud ID,请单击您的 部署

设置 Metricbeat 是一项需要额外权限的管理员级别任务。最佳做法是,使用管理员角色进行设置,并使用限制性更强的角色进行事件发布(您将在下一步中执行此操作)。

配置 Metricbeat 输出编辑

接下来,您将配置 Metricbeat 输出到 Elasticsearch Service。

  1. 使用 Metricbeat 密钥库来存储安全设置。将 Cloud ID 存储在密钥库中。

    ./metricbeat keystore create
    echo -n "<Your Deployment Cloud ID>" | ./metricbeat keystore add CLOUD_ID --stdin
  2. 要以最小权限将指标存储在 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"]
            }
          ]
        }
      }
    }
  3. 响应包含一个 api_key 和一个 id 字段,可以以下格式存储在 Metricbeat 密钥库中:id:api_key

    echo -n "IhrJJHMB4JmIUAPLuM35:1GbfxhkMT8COBB4JWY3pvQ" | ./metricbeat keystore add ES_API_KEY --stdin

    确保指定了 -n 参数;否则,由于在 API 密钥末尾添加了换行符,您将进行痛苦的调试会话。

  4. 要查看是否已存储这两个设置,请运行以下命令

    ./metricbeat keystore list
  5. 要将 Metricbeat 配置为输出到 Elasticsearch Service,请编辑 metricbeat.yml 配置文件。将以下行添加到文件末尾。

    cloud.id: ${CLOUD_ID}
    output.elasticsearch:
      api_key: ${ES_API_KEY}
  6. 最后,测试配置是否有效。如果不起作用,请验证您是否使用了正确的凭据并再次添加它们。

    ./metricbeat test output

现在输出已经正常工作,您将设置输入(Azure)。

配置 Metricbeat Azure 模块编辑

要从 Microsoft Azure 收集指标,请使用 Metricbeat Azure 模块。此模块使用 Azure Monitor REST API 定期从 Microsoft Azure 获取监控指标。

此模块可能会产生指标查询的额外 Azure 费用。有关更多详细信息,请参阅有关指标和成本的附加说明

  1. 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

  2. 启用 Azure 模块。

    ./metricbeat modules enable azure
  3. 编辑 modules.d/azure.yml 文件以收集 billing 指标。

    - module: azure
      metricsets:
      - billing  
      enabled: true
      period: 24h  
      client_id: '${AZURE_CLIENT_ID:""}'
      client_secret: '${AZURE_CLIENT_SECRET:""}'
      tenant_id: '${AZURE_TENANT_ID:""}'
      subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'
      refresh_list_interval: 600s

    billing 指标集是一个预定义的指标集,用于收集已配置订阅的相关使用数据和预测信息。

    每 24 小时收集一次指标。billing 指标集的周期应为 24h24h 的倍数。

  4. 要检查 Metricbeat 是否可以收集数据,请通过运行以下命令来测试输入

    ./metricbeat test modules azure

    如果设置正确,Metricbeat 会将 billing 指标打印到终端。

    如果返回超时错误,请重试。test modules 超时时间很短。

  5. 当输入和输出准备就绪后,启动 Metricbeat 以收集数据。

    ./metricbeat -e
  6. 最后,登录 Kibana 并打开 [Metricbeat Azure] 账单概览 仪表板。请记住,它每 24 小时收集一次数据。

    Metricbeat azure billing overview dashboard