尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Nightingale 集成 Azure Monitor:使用 Categraf 采集 Azure 云资源指标完整指南

Nightingale 集成 Azure Monitor:使用 Categraf 采集 Azure 云资源指标完整指南 Nightingale 集成 Azure Monitor使用 Categraf 采集 Azure 云资源指标完整指南【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale导读Azure Monitor 是微软 Azure 云平台的统一监控服务提供云资源虚拟机、SQL 数据库、存储、负载均衡器等的性能指标与日志数据。本文基于夜莺Nightingale开源仓库中的 Azure 集成插件文档完整讲解如何使用 Categraf 采集器对接 Azure Monitor API将 Azure 资源指标纳入夜莺监控体系从服务主体Service Principal注册、Monitor Reader 授权到三种采集目标配置指定资源 / 资源组 / 订阅与aggregation_interval聚合粒度调优并提供可直接复制运行的 TOML 配置。读完本文你将能够独立完成 Azure 云资源的指标接入、配额评估与常见问题排查。Azure 采集插件概述该插件位于仓库 integrations/Azure 目录下中文说明文档为 integrations/Azure/markdown/azure.md对应英文版为 integrations/Azure/markdown/README.en_US.md配套的采集配置文件为 integrations/Azure/collect/azure/azure.toml。它的核心职责是通过 Azure Monitor 的 REST API 拉取 Azure 资源的指标数据。插件本身不负责存储和告警而是作为采集器 Categraf 的一个输入插件运行——夜莺项目本身不提供监控数据采集能力官方推荐使用 Categraf 作为采集器通过 Remote Write 协议将数据推送给夜莺再由夜莺转存到时序库如 Prometheus、VictoriaMetrics并提供告警与可视化能力见 README_zh.md。从配置文件的结构可以推断出插件的工作流使用client_id、client_secret、tenant_id向 Azure Active DirectoryEntra ID换取访问令牌Access Token携带令牌按配置的采集目标资源 / 资源组 / 订阅枚举资源调用 Azure Monitor 指标查询 API 拉取原始数据点按aggregation_interval将原始点聚合为指定粒度的指标序列输出为时序数据。配额须知每小时 12,000 次读取限制文档中特别标注了一个重要约束Azure API 每小时有 12,000 次读取限制。请确保在配置的时间间隔内您的总指标数量不超过此限制。这意味着采集规模不能无限放大。估算时需考虑采集的资源数量 × 每个资源的指标数量 × 每小时查询次数总和应低于 12,000。合理设置interval查询周期与aggregation_interval聚合粒度是在配额内获取足够数据密度的关键后文会给出具体调优建议。前置准备注册服务主体与授权注册服务主体Service Principal插件通过服务主体进行身份认证因此第一步必须在 Azure 中注册一个服务主体Service Principal。这是标准的应用注册流程在 Azure Active Directory现称 Microsoft Entra ID下注册一个应用程序系统会生成client_id应用 ID与client_secret客户端密钥用于插件换取访问令牌。授权Monitor Reader 角色仅注册服务主体还不够还需要为它授予读取 Azure Monitor 数据的权限。文档明确指出所需权限为Monitor Reader中文界面显示为监视查阅者。请将服务主体以该角色授权到目标订阅、资源组或资源上否则后续指标查询会因权限不足而失败。关键属性获取指南文档列出了各认证属性在 Azure 门户中的查找位置整理如下属性含义获取位置subscription_id订阅 ID访问 Azure 资源必需应用程序/服务的概述 要点Overview Essentialsclient_id应用 ID在 Azure Active Directory 下注册应用程序后获得client_secret客户端密钥在 Azure Active Directory 下注册应用程序后获得tenant_id租户 IDAzure Active Directory 属性Propertiesresource_id资源目标资源唯一标识应用程序/服务的概述 要点 JSON 视图JSON Viewcloud_option云环境端点可选AzureChina、AzureGovernment、AzurePublic默认AzurePublic需要注意resource_id的取值格式配置注释中明确要求它必须以resourceGroups/...开头并去掉资源 ID 属性值开头的/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx前缀示例resource_id resourceGroups/flashcat/providers/Microsoft.Compute/virtualMachines/lfn-testcloud_option用于指定 Azure 主权云Sovereign Cloud的 API 端点。若使用公有云可保持默认AzurePublic不填若资源位于中国区或政府云则需要显式配置。配置详解完整配置以 TOML 格式编写实际使用时可参考 integrations/Azure/collect/azure/azure.toml 这个可直接落地的版本。先看基础部分# Gather Azure resources metrics from Azure Monitor API # 每2m查询一次azure monitor, 查询时间范围也为2m interval 2m [[instances]] # can be found under Overview-Essentials in the Azure portal for your application/service subscription_id # can be obtained by registering an application under Azure Active Directory client_id # can be obtained by registering an application under Azure Active Directory. # If not specified Default Azure Credentials chain will be attempted: # - Environment credentials (AZURE_*) # - Workload Identity in Kubernetes cluster # - Managed Identity # - Azure CLI auth # - Developer Azure CLI auth client_secret # can be found under Azure Active Directory-Properties tenant_id # Define the optional Azure cloud option e.g. AzureChina, AzureGovernment or AzurePublic. The default is AzurePublic. # cloud_option AzurePublic # 聚合粒度 # 比如我采集周期是10m, 指标上报周期是30s, 那么在10m内会有20个原始点 # 经过该参数的聚合处理后比如聚合粒度是1m, 那么就会获取到10个点 # 注意最小值是1m aggregation_interval 1minterval查询周期顶层interval定义采集器多久查询一次 Azure Monitor。示例为2m即每 2 分钟查询一次查询的时间范围同样为 2 分钟。该参数同时决定了数据新鲜度与 API 调用频次是配额消耗的第一影响因素。client_secret缺省时的凭据链值得注意的一个细节client_secret注释中说明若未指定插件会依次尝试 Default Azure Credentials 链顺序为环境变量凭据AZURE_*Kubernetes 集群内的 Workload Identity托管标识Managed IdentityAzure CLI 认证Developer Azure CLI 认证。这意味着在 AKS 等场景中可以借助 Workload Identity 或 Managed Identity 免去明文密钥提升安全性。aggregation_interval聚合粒度这是控制数据点密度与 API 消耗的核心参数。文档给出了一个非常直观的例子比如采集周期是 10m指标上报周期是 30s那么在 10m 内会有 20 个原始点经过该参数的聚合处理后比如聚合粒度是 1m那么就会获取到 10 个点。注意最小值是 1m。配置文件注释进一步补充了约束见 azure.toml支持的取值为1m, 5m, 15m, 30m, 1h, 6h, 12h, 1daggregation_interval不能大于interval聚合粒度越粗单次查询返回的数据点越少占用的读取配额越少适合大规模资源场景。cloud_option云环境端点# Define the optional Azure cloud option e.g. AzureChina, AzureGovernment or AzurePublic. The default is AzurePublic. # cloud_option AzurePublic可选值为AzureChina、AzureGovernment、AzurePublic默认AzurePublic用于对接 Azure 主权云。采集目标配置三种方式文档与配置文件共同说明采集目标支持三种定义方式三种方式可以同时使用resource_target通过资源 ID 从特定资源收集指标resource_group_target从资源组下具有特定资源类型的资源收集指标subscription_target从订阅下具有特定资源类型的资源收集指标。方式一指定具体资源resource_target适合只关心某几台虚拟机等少量具体资源时使用# resource target #1 to collect metrics from [[instances.resource_target]] # can be found under Overview-Essentials-JSON View in the Azure portal for your application/service # must start with resourceGroups/... (/subscriptions/xxxxxxxx-xxxx-xxxx-xxx-xxxxxxxxxxxx # must be removed from the beginning of Resource ID property value) resource_id resourceGroups/flashcat/providers/Microsoft.Compute/virtualMachines/lfn-test # the metric names to collect # leave the array empty to use all metrics available to this resource # metrics [ METRIC, METRIC ] # metrics aggregation type value to collect # can be Total, Count, Average, Minimum, Maximum # leave the array empty to collect all aggregation types values for each metric # aggregations [ AGGREGATION, AGGREGATION ]每个资源目标下有两个可选子配置metrics要采集的指标名数组。留空数组表示采集该资源可用的全部指标aggregations指标的聚合方式数组可选Total、Count、Average、Minimum、Maximum。留空数组表示采集每种指标的全部聚合值。方式二指定资源组resource_group_target按资源组批量采集——资源组下可声明多个resource块每个块按resource_type过滤# resource group target #1 to collect metrics from resources under it with resource type [[instances.resource_group_target]] # the resource group name resource_group flashcat # defines the resources to collect metrics from [[instances.resource_group_target.resource]] # the resource type resource_type Microsoft.Compute/virtualMachines # metrics [ METRIC, METRIC ] # aggregations [ AGGREGATION, AGGREGATION ] # resource group target #2 [[instances.resource_group_target]] resource_group RESOURCE_GROUP_NAME [[instances.resource_group_target.resource]] resource_type RESOURCE_TYPE metrics [ METRIC, METRIC ] aggregations [ AGGREGATION, AGGREGATION ]资源类型使用完整的 ARM 类型名称例如Microsoft.Compute/virtualMachines。方式三指定订阅subscription_target在订阅维度按资源类型批量采集覆盖范围最广# subscription target #1 to collect metrics from resources under it with resource type [[instances.subscription_target]] resource_type RESOURCE_TYPE metrics [ METRIC, METRIC ] aggregations [ AGGREGATION, AGGREGATION ] # subscription target #2 [[instances.subscription_target]] resource_type RESOURCE_TYPE metrics [ METRIC, METRIC ] aggregations [ AGGREGATION, AGGREGATION ]三种方式的粒度从细到粗单资源 → 资源组 → 订阅。从实现角度看插件需要根据目标类型调用不同的资源列举与指标查询接口因此目标覆盖范围越大单轮采集产生的 API 调用越多配置时应结合配额限制评估。指标选择与配额控制实战建议关于可采集的指标清单文档指引查阅 Azure 官方的支持的指标页面了解各资源类型可用的指标。综合文档与配置约束给出以下工程实践建议优先用resource_target精确圈定资源避免订阅级全量采集带来的配额压力善用metrics白名单只采集真正需要关注的指标不要留空采集全部指标按告警精度需求设置aggregation_interval1m粒度最精细但配额消耗最大长周期存储或大规模资源可上调至5m、15m甚至更粗保证aggregation_interval ≤ interval并注意interval本身也直接决定每小时查询次数评估规模时将资源数 × 每资源指标数 × 每小时查询次数与 12,000 的每小时配额对照留出余量。小结本文基于夜莺仓库中的 integrations/Azure/markdown/azure.md 与配套的 azure.toml 配置文件系统梳理了 Azure Monitor 指标接入夜莺生态的完整链路通过服务主体 Monitor Reader 授权打通 API 访问用三种采集目标方式圈定监控范围再借助aggregation_interval在配额与数据密度之间取得平衡。接入完成后Azure 资源指标即可与本地机房、其他云厂商的指标统一汇入夜莺实现跨云统一监控、告警与可视化的运维目标。【免费下载链接】nightingaleNightingale is to monitoring and alerting what Grafana is to visualization.项目地址: https://gitcode.com/GitHub_Trending/ni/nightingale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表