Azure 模块编辑

Azure Monitor 功能从各种来源收集和聚合日志和指标,并将它们整合到一个公共数据平台中,以便用于分析、可视化和警报。

Azure Monitor 指标是数值,它们描述了系统在特定时间点的某个方面。它们以固定时间间隔收集,并通过时间戳、名称、值和一个或多个定义标签来标识。

Azure 模块将定期使用 Azure REST API 作为 MetricList 来检索 Azure Monitor 指标。为了检索用户目标资源的信息,将执行额外的 Azure API 调用。

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

仪表盘编辑

Azure 模块附带了几个预定义的仪表盘,用于虚拟机、VM 来宾指标和虚拟机规模集。

VM 概述仪表盘显示有关 CPU、内存、磁盘使用情况以及每秒操作的信息。两个可用过滤器有助于将仪表盘缩小到特定区域和/或资源组。例如

metricbeat azure vm overview

如果启用了 VM 来宾指标,那么来宾指标概述仪表盘可以帮助监控 ASP.NET 应用程序和 SQL Server 指标。例如

metricbeat azure vm guestmetrics overview

虚拟机规模集仪表盘类似于 VM 仪表盘,并显示有关正在运行的 VM 规模集的相关运行状况信息。例如

metricbeat azure vmss overview

Azure 存储仪表盘显示 Blob、文件、表和队列存储服务的相关指标。

metricbeat azure storage overview

Azure 计费仪表盘显示相关的使用情况和预测信息。

metricbeat azure billing overview

Azure app_state 仪表盘显示相关的应用程序洞察信息。

metricbeat azure app state overview

模块特定的配置说明编辑

针对 Azure Monitor REST API 执行的所有任务都将使用 Azure 资源管理器身份验证模型。因此,所有请求都必须使用 Azure Active Directory (Azure AD) 进行身份验证。身份验证客户端应用程序的一种方法是创建 Azure AD 服务主体并检索身份验证 (JWT) 令牌。有关更详细的分步指南,请查看使用 Azure PowerShell 创建服务主体以访问资源 https://docs.microsoft.com/en-us/powershell/azure/create-azure-service-principal-azureps?view=azps-2.7.0。也可以通过 Azure 门户创建服务主体 https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal。用户必须确保分配给应用程序的角色至少包含对监控数据的读取权限,更多有关角色的信息,请参见 https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles.

azure 模块所需的凭据

client_id
应用程序的唯一标识符(也称为应用程序 ID)
client_secret
客户端/应用程序的密钥/秘密
subscription_id
Azure 订阅的唯一标识符
tenant_id
Azure Active Directory 实例的唯一标识符

如果配置了 AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_IDAZURE_SUBSCRIPTION_ID,则可以使用 Azure 凭据密钥

resource_manager_endpoint
字符串 可选,默认情况下将使用 Azure 公共环境,要覆盖它,用户可以提供一个特定的资源管理器终结点以使用不同的 Azure 环境。例如:https://management.chinacloudapi.cn 用于 Azure 中国云 https://management.microsoftazure.de 用于 Azure 德国云 https://management.azure.com 用于 Azure 公共云 https://management.usgovcloudapi.net 用于 Azure 美国政府云
active_directory_endpoint
字符串 可选,默认情况下将使用与资源管理器终结点关联的 Active Directory 终结点,要覆盖它,用户可以提供一个特定的 Active Directory 终结点以使用不同的 Azure 环境。例如:https://login.microsoftonline.com 用于 Azure 中国云 https://login.microsoftonline.us 用于 Azure 德国云 https://login.chinacloudapi.cn 用于 Azure 公共云 https://login.microsoftonline.de 用于 Azure 美国政府云
resource_manager_audience
字符串 可选,默认情况下我们使用 Azure 公共环境,要覆盖它,用户可以提供一个特定的资源管理器受众以使用不同的 Azure 环境。例如:https://management.chinacloudapi.cn/ 用于 Azure 中国云 https://management.microsoftazure.de/ 用于 Azure 德国云 https://management.azure.com/ 用于 Azure 公共云 https://management.usgovcloudapi.net/ 用于 Azure 美国政府云。用户也可以在使用混合云模型的情况下使用它,在混合云模型中,用户可以定义自己的受众。

指标集编辑

monitor编辑

此指标集允许用户从指定资源检索指标。这里可以应用附加过滤器,例如检索这些指标的间隔、指标名称、聚合列表、命名空间和指标维度。监控指标的最小时间粒度为 5 分钟,因此 monitor 指标集的 period 应为 300s300s 的倍数。

compute_vm编辑

此指标集将从虚拟机收集指标,这些指标的时间粒度为每 5 分钟,因此 compute_vm 指标集的 period 应为 300s300s 的倍数。

compute_vm_scaleset编辑

此指标集将从虚拟机规模集收集指标,这些指标的时间粒度为每 5 分钟,因此 compute_vm_scaleset 指标集的 period 应为 300s300s 的倍数。

storage编辑

此指标集将从存储帐户收集指标,这些指标的时间粒度为每 5 分钟,因此 storage 指标集的 period 应为 300s300s 的倍数。

container_instance编辑

此指标集将从指定的容器组收集指标,这些指标的时间粒度为每 5 分钟,因此 container_instance 指标集的 period 应为 300s300s 的倍数。

container_registry编辑

此指标集将从容器注册表收集指标,这些指标的时间粒度为每 5 分钟,因此 container_registry 指标集的 period 应为 300s300s 的倍数。

container_service编辑

此指标集将从容器服务收集指标,这些指标的时间粒度为每 5 分钟,因此 container_service 指标集的 period 应为 300s300s 的倍数。

database_account编辑

此指标集将从指定的数据库帐户收集相关指标,这些指标的时间粒度为每 5 分钟,因此 database_account 指标集的 period 应为 300s300s 的倍数。

billing编辑

此指标集将从特定订阅收集相关的使用情况数据和预测信息,这些指标的时间粒度为每 24 小时,因此 billing 指标集的 period 应为 24h24h 的倍数。

app_insights编辑

此指标集将收集应用程序洞察指标,app-insights 指标集的 period(间隔)默认设置为 300s

app_state编辑

此指标集集中于最相关的应用程序洞察指标,并提供仪表盘用于可视化,app_state 指标集的 period(间隔)默认设置为 300s

有关指标和费用的其他说明编辑

费用:指标查询的费用基于标准 API 调用的数量。有关定价的更多信息,请参见 https://azure.microsoft.com/id-id/pricing/details/monitor/.

身份验证:我们在我们这边处理身份验证(创建/续订身份验证令牌),因此我们建议用户仅对 Metricbeat 使用专用凭据。

示例配置

Azure 模块支持在 模块 中描述的标准配置选项。以下是一个示例配置

metricbeat.modules:
- module: azure
  metricsets:
  - monitor
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'
  resources:
    - resource_query: "resourceType eq 'Microsoft.DocumentDb/databaseAccounts'"
      metrics:
      - name: ["DataUsage", "DocumentCount", "DocumentQuota"]
        namespace: "Microsoft.DocumentDb/databaseAccounts"

- module: azure
  metricsets:
  - compute_vm
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- module: azure
  metricsets:
  - compute_vm_scaleset
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- module: azure
  metricsets:
  - storage
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- module: azure
  metricsets:
  - container_instance
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- module: azure
  metricsets:
  - container_service
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- module: azure
  metricsets:
  - container_registry
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- module: azure
  metricsets:
  - database_account
  enabled: true
  period: 300s
  client_id: '${AZURE_CLIENT_ID:""}'
  client_secret: '${AZURE_CLIENT_SECRET:""}'
  tenant_id: '${AZURE_TENANT_ID:""}'
  subscription_id: '${AZURE_SUBSCRIPTION_ID:""}'

- 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:""}'

- module: azure
  metricsets:
    - app_insights
  enabled: true
  period: 300s
  application_id: ''
  api_key: ''
  metrics:
    - id: ["requests/count", "requests/duration"]

- module: azure
  metricsets:
    - app_state
  enabled: true
  period: 300s
  application_id: ''
  api_key: ''

指标集

以下指标集可用