如何将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
相关产品推荐
相关产品推荐

