You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AKS集群/节点/容器指标发送至Log Analytics?是否需Application Insights?

问题描述

我已通过以下Terraform代码创建了AKS集群:

resource "azurerm_virtual_network" "test" {
  name                = var.virtual_network_name
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  address_space       = [var.virtual_network_address_prefix]

  subnet {
    name           = var.aks_subnet_name
    address_prefix = var.aks_subnet_address_prefix
  }

  tags = var.tags
}

data "azurerm_subnet" "kubesubnet" {
  name                 = var.aks_subnet_name
  virtual_network_name = azurerm_virtual_network.test.name
  resource_group_name  = azurerm_resource_group.rg.name
  depends_on           = [azurerm_virtual_network.test]
}

# Create Log Analytics Workspace
module "log_analytics_workspace" {
  source                = "./modules/log_analytics_workspace"
  count                 = var.enable_log_analytics_workspace == true ? 1 : 0
  app_or_service_name   = "log" 
  subscription_type     = var.subscription_type 
  environment           = var.environment 
  resource_group_name   = azurerm_resource_group.rg.name 
  location              = var.location 
  instance_number       = var.instance_number  
  sku                   = var.log_analytics_workspace_sku
  retention_in_days     = var.log_analytics_workspace_retention_in_days 
  tags                  = var.tags
}

resource "azurerm_kubernetes_cluster" "k8s" {
  name       = var.aks_name
  location   = azurerm_resource_group.rg.location
  dns_prefix = var.aks_dns_prefix

  resource_group_name = azurerm_resource_group.rg.name

  http_application_routing_enabled = false

  linux_profile {
    admin_username = var.vm_user_name

    ssh_key {
      key_data = file(var.public_ssh_key_path)
    }
  }

  default_node_pool {
    name            = "agentpool"
    node_count      = var.aks_agent_count
    vm_size         = var.aks_agent_vm_size
    os_disk_size_gb = var.aks_agent_os_disk_size
    vnet_subnet_id  = data.azurerm_subnet.kubesubnet.id
  }

  service_principal {
    client_id     = local.client_id
    client_secret = local.client_secret
  }

  network_profile {
    network_plugin     = "azure"
    dns_service_ip     = var.aks_dns_service_ip
    docker_bridge_cidr = var.aks_docker_bridge_cidr
    service_cidr       = var.aks_service_cidr
  }

  # Enabled the cluster configuration to the Azure kubernets with RBAC
  azure_active_directory_role_based_access_control { 
    managed                     = var.azure_active_directory_role_based_access_control_managed
    admin_group_object_ids      = var.active_directory_role_based_access_control_admin_group_object_ids
    azure_rbac_enabled          = var.azure_rbac_enabled
  }

  oms_agent {
    log_analytics_workspace_id  = module.log_analytics_workspace[0].id
  }

  timeouts {
    create = "20m"
    delete = "20m"
  }  

  depends_on = [data.azurerm_subnet.kubesubnet,module.log_analytics_workspace]
  tags       = var.tags
}

我希望将AKS的集群、节点、Pod、容器指标发送至Log Analytics工作区,以便在Azure Monitoring中查看。我已配置了如下诊断设置:

resource "azurerm_monitor_diagnostic_setting" "aks_cluster" {
  name                       = "${azurerm_kubernetes_cluster.k8s.name}-audit"
  target_resource_id         = azurerm_kubernetes_cluster.k8s.id
  log_analytics_workspace_id = module.log_analytics_workspace[0].id

  log {
    category = "kube-apiserver"
    enabled  = true

    retention_policy {
      enabled = false
    }
  }

  log {
    category = "kube-controller-manager"
    enabled  = true

    retention_policy {
      enabled = false
    }
  }

  log {
    category = "cluster-autoscaler"
    enabled  = true

    retention_policy {
      enabled = false
    }
  }

  log {
    category = "kube-scheduler"
    enabled  = true

    retention_policy {
      enabled = false
    }
  }

  log {
    category = "kube-audit"
    enabled  = true

    retention_policy {
      enabled = false
    }
  }

  metric {
    category = "AllMetrics"
    enabled  = false

    retention_policy {
      enabled = false
    }
  }
}

请问当前配置是否足以实现需求?我看到有文章使用azurerm_application_insights,疑惑为何它被用来捕获集群级指标?


回答

当前配置的不足

当前配置不足以完全满足需求,具体问题如下:

  • 诊断设置中的AllMetrics被设为enabled = false,这会导致集群核心指标(比如节点CPU/内存使用率、集群健康状态、API服务性能等)无法发送到Log Analytics,必须将其改为enabled = true才能获取集群级指标。
  • 虽然AKS资源中启用了oms_agent,它会负责收集节点、Pod、容器的性能数据,但需要确保Log Analytics工作区中已经启用ContainerInsights解决方案——否则这些指标无法被正常解析和展示在Azure Monitoring的仪表板中。
  • 现有配置仅开启了日志类别采集,未开启指标类别,会缺失集群运行的关键监控数据。

关于Application Insights的作用

Application Insights本质是应用性能监控(APM)工具,但它和AKS集成后能实现更全面的监控能力,常见使用场景包括:

  • 搭配Application Insights for Kubernetes插件,不仅能收集集群、节点、Pod的基础资源指标,还能追踪应用的调用链、依赖关系,把应用性能数据和集群资源使用情况关联起来,快速定位“应用响应慢是集群资源不足还是代码问题”这类混合故障。
  • 若需要对AKS上部署的应用做深度性能分析、异常检测,或者构建端到端的业务监控视图,Application Insights比单纯的Log Analytics更合适——它提供了现成的可视化仪表板、智能警报和分布式追踪能力。
  • 但如果你的需求只是收集集群、节点、Pod、容器的基础指标并在Azure Monitoring中查看,Log Analytics + ContainerInsights就足够,不需要额外部署Application Insights。

内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:20:35