本章节汇总了使用阿里云Prometheus监控的常见问题。

本页目录

为什么在创建Grafana大盘时,没有Kubelet和API Server的监控指标?

目前只采集了部分免费基础指标,采集指标列表如下:

	  kube_pod_container_status_last_terminated_reason
	  rest_client_requests_total
	  scheduler_pod_scheduling_attempts_bucket
	  scheduler_pending_pods
	  scheduler_scheduler_cache_size
	  kube_node_spec_taint
	  kube_node_status_capacity_pods
	  kubelet_pleg_relist_duration_seconds_bucket
	  kubelet_node_name
	  kubelet_pod_worker_duration_seconds_bucket
	  kubelet_certificate_manager_client_ttl_seconds
	  kubelet_certificate_manager_server_ttl_seconds
	  kubelet_certificate_manager_client_expiration_renew_errors
	  kubelet_server_expiration_renew_errors
	  apiserver_client_certificate_expiration_seconds_count
	  apiserver_client_certificate_expiration_seconds_bucket
	  aggregator_unavailable_apiservice_count
	  aggregator_unavailable_apiservice
	  kubernetes_build_info
	  node_filesystem_readonly
	  node_network_receive_errs_total
	  node_network_transmit_errs_total
	  node_timex_offset_seconds
	  node_timex_sync_status
	  node_network_up
	  kube_resourcequota
	  kube_daemonset_status_current_number_scheduled
	  kube_daemonset_status_desired_number_scheduled
	  kube_daemonset_status_number_misscheduled
	  kube_daemonset_updated_number_scheduled
	  kube_daemonset_status_number_available
	  kube_job_spec_completions
	  kube_job_status_succeeded
	  kube_job_failed
	  kube_persistentvolume_status_phase
	  apiserver_dropped_requests_total
	  container_fs_inodes_total
	  container_fs_inodes_free
	  nvidia_gpu_num_devices
	  etcd_request_duration_seconds_count
	  etcd_request_duration_seconds_sum
	  etcd_object_counts
	  etcd_debugging_mvcc_keys_total
	  etcd_disk_backend_commit_duration_seconds_bucket
	  etcd_server_leader_changes_seen_total
	  etcd_server_has_leader
	  etcd_debugging_mvcc_db_total_size_in_bytes
	  nvidia_gpu_temperature_celsius
	  nvidia_gpu_memory_used_bytes
	  nvidia_gpu_memory_total_bytes
	  nvidia_gpu_power_usage_milliwatts
	  nvidia_gpu_duty_cycle
	  apiserver_request_latencies_summary
	  kube_hpa_status_condition
	  kube_hpa_labels
	  kube_hpa_metadata_generation
	  kube_resourcequota
	  kube_pod_container_status_waiting_reason
	  container_cpu_load_average_10s
	  container_network_receive_errors_total
	  container_network_receive_packets_dropped_total
	  container_network_transmit_errors_total
	  container_network_transmit_packets_dropped_total
	  container_memory_max_usage_bytes
	  container_memory_cache
	  container_memory_swap
	  container_memory_failcnt
	  kube_pod_labels
	  kube_deployment_labels
	  kube_node_labels
	  kube_pod_status_ready
	  kube_node_status_capacity
	  kube_node_status_condition
	  kube_pod_container_resource_limits
	  kubelet_volume_stats_used_bytes
	  kubelet_volume_stats_inodes_used
	  kubelet_volume_stats_inodes_free
	  kubelet_volume_stats_inodes
	  kubelet_volume_stats_capacity_bytes
	  kubelet_volume_stats_available_bytes
	  kube_pod_container_resource_limits
	  node_filesystem_usage
	  container_fs_writes_bytes_total
	  container_fs_reads_bytes_total
	  container_memory_usage_bytes
	  kube_node_labels
	  kube_deployment_status_replicas_unavailable
	  kube_job_status_failed
	  kube_job_status_active
	  kube_job_status_succeeded
	  kube_pod_container_status_restarts
	  kube_pod_container_status_terminated
	  kube_pod_container_status_waiting
	  kube_pod_container_status_running
	  kube_node_spec_unschedulable
	  kube_node_status_condition
	  kube_node_info
	  kube_node_status_allocatable_pods
	  node_filesystem_size
	  kube_deployment_status_replicas_unavailable
	  node_filesystem_free
	  node_uname_info
	  go_gc_duration_seconds
	  go_goroutines
	  container_network_transmit_bytes_total
	  container_network_receive_bytes_total
	  process_resident_memory_bytes
	  process_cpu_seconds_total
	  apiserver_current_inflight_requests
	  apiserver_longrunning_gauge
	  container_memory_rss
	  container_spec_memory_limit_bytes
	  container_network_transmit_bytes_total
	  apiserver_request_total
	  apiserver_request_count
	  apiserver_request_duration_seconds_bucket
	  kube_pod_container_resource_limits_memory_bytes
	  kube_pod_container_resource_limits_cpu_cores
	  container_accelerator_memory_total_bytes
	  container_accelerator_memory_used_bytes
	  container_accelerator_duty_cycle
	  kube_service_info
	  kube_pod_status_phase
	  node_cpu_seconds_total
	  kube_pod_labels
	  kube_deployment_spec_strategy_rollingupdate_max_unavailable
	  kube_deployment_metadata_generation
	  kube_deployment_status_observed_generation
	  kube_deployment_spec_replicas
	  kube_deployment_status_replicas_available
	  kube_deployment_spec_replicas
	  kube_deployment_status_replicas_updated
	  kube_deployment_created
	  kube_node_status_allocatable_memory_bytes
	  kube_node_status_allocatable_cpu_cores
	  kube_node_status_capacity_memory_bytes
	  kube_node_status_capacity_cpu_cores
	  kube_node_status_condition
	  container_cpu_cfs_throttled_periods_total
	  container_cpu_cfs_periods_total
	  container_cpu_cfs_throttled_seconds_total
	  kube_pod_container_resource_requests_memory_bytes
	  kube_pod_container_resource_requests_cpu_cores
	  kube_hpa_spec_max_replicas
	  kube_hpa_spec_min_replicas
	  kube_hpa_status_desired_replicas
	  kube_hpa_status_current_replicas
	  kube_pod_container_status_restarts_total
	  container_network_receive_bytes_total
	  container_memory_working_set_bytes
	  machine_memory_bytes
	  container_cpu_usage_seconds_total
	  machine_cpu_cores
	  kube_pod_info
	  kube_pod_container_info
	  container_fs_usage_bytes
	  container_fs_limit_bytes
	  kube_daemonset_created
	  kube_statefulset_created
	  kube_deployment_created
	  kube_deployment_status_replicas
	  kube_statefulset_replicas
	  kube_daemonset_status_desired_number_scheduled
	  kube_deployment_status_replicas_available
	  kube_statefulset_status_replicas
	  kube_daemonset_status_number_ready
	  kube_pod_container_resource_requests_cpu_cores
	  kube_pod_container_resource_requests_memory_bytes
	  node_boot_time_seconds
	  node_memory_MemAvailable_bytes
	  node_memory_MemTotal_bytes
	  node_memory_MemFree_bytes
	  node_memory_Buffers_bytes
	  node_memory_Cached_bytes
	  node_filefd_allocated
	  node_filesystem_avail_bytes
	  node_filesystem_size_bytes
	  node_filesystem_free_bytes
	  node_load15
	  node_load1
	  node_load5
	  node_disk_io_time_seconds_total
	  node_disk_read_time_seconds_total
	  node_disk_write_time_seconds_total
	  node_disk_reads_completed_total
	  node_disk_writes_completed_total
	  node_disk_io_now
	  node_disk_read_bytes_total
	  node_disk_written_bytes_total
	  node_disk_io_time_weighted_seconds_total
	  node_network_receive_bytes_total
	  node_network_transmit_bytes_total
	  node_netstat_Tcp_CurrEstab
	  node_sockstat_TCP_tw
	  node_netstat_Tcp_ActiveOpens
	  node_netstat_Tcp_PassiveOpens
	  node_sockstat_TCP_alloc
	  node_sockstat_TCP_inuse
	  node_exporter_build_info
	  http_request_duration_microseconds
	  http_response_size_bytes
	  http_requests_total
	  http_request_size_bytes
	  rest_client_requests_total
	  container_spec_cpu_quota
	  container_network_transmit_packets_total
	  container_fs_write_seconds_total
	  container_fs_read_seconds_total
	  kube_pod_owner
	  kube_deployment_metadata_generation
	  kube_pod_deletion_timestamp

如何查看采集到的数据?

方法一:

  1. 打开Grafana大盘概览页
  2. 在左侧导航栏单击Explore图标。
  3. Explore页面顶部下拉框中选择集群,然后在Metrics输入框中输入PromQL语句,单击右上角的Run Query进行调试。
    Prometheus Data Debug

方法二:

  1. 登录ARMS控制台
  2. 在左侧导航栏,选择Prometheus监控
  3. Prometheus监控页面的顶部菜单栏,选择K8s集群所在的地域,单击目标K8s集群的名称。
  4. 在左侧导航栏,单击设置
  5. 在右侧页面,单击Target(beat)页签。
  6. 单击目标Target,并单击目标Endpoint链接,获取原始输出的Metric。
    Prometheus设置-target

为什么获取不到CSI组件的Metric?

请检查ACK CSI组件版本是否为V1.18.8.45或以上,如果不是,请更新相关组件。更多信息,请参考使用csi-plugin组件监控节点侧存储资源

为什么Exporter对应的大盘看不到具体的指标?

  1. 参考如何查看采集到的数据?排查Exporter数据输出是否正常。
    如果存在异常,请按以下步骤排查。
  2. 登录ARMS控制台
  3. 在左侧导航栏,选择Prometheus监控
  4. Prometheus监控页面的顶部菜单栏,选择K8s集群所在的地域,单击目标K8s集群的名称。
  5. 在左侧导航栏,单击Exporter接入
  6. 在需要排查的Exporter右侧操作列,单击日志
    查看是否有报错日志:

如何禁止默认报警自动创建

Prometheus监控会为接入的应用自动创建默认报警。关于这些自动创建的默认报警,请参见报警规则说明

控制默认报警自动创建的参数为defaultAlert,取值为true时表示自动创建默认的报警,取值为false时表示不自动创建默认的报警。

对于已接入Prometheus监控的应用,如果您希望禁止默认报警自动创建,您需要将Prometheus监控插件的defaultAlert设置为false。在禁止默认报警自动创建后,建议您手动删除Prometheus监控之前为您自动创建的默认报警规则。

为容器服务K8s集群进行设置的操作步骤如下:

  1. 将Prometheus监控插件的defaultAlert设置为false
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,选择目标集群,并在目标集群右侧的操作列下,单击应用管理
    4. 无状态页面,选择命名空间为arms-prom,找到以arms-prom开头的deployment,例如arms-prom-ack-arms-prometheus,在其右侧操作列,单击编辑
    5. 编辑页面的生命周期区域的启动执行参数文本框中,添加-defaultAlert=false,然后在页面右上角,单击更新
      Prometheus监控插件完成更新后,等待3分钟~5分钟,Prometheus监控不再为该集群创建默认报警。
  2. 可选:删除默认报警规则。
    1. 登录ARMS控制台
    2. 在左侧导航栏,单击Prometheus监控
    3. Prometheus监控页面,单击目标K8s集群的名称。
    4. 在左侧导航栏,单击设置
    5. 在页面,单击规则页签,然后删除以下报警规则。
      规则

如何开启报警自动启用

报警的状态默认为关闭。

控制报警自动启用的参数为alert,取值为true时表示报警自动启用,取值为false时表示报警不自动启用。

对于已接入Prometheus监控的应用,如果您希望创建报警后,报警自动启用,您需要将Prometheus监控插件的alert设置为true

为容器服务K8s集群进行设置的操作步骤如下:

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,选择目标集群,并在目标集群右侧的操作列下,单击应用管理
  4. 无状态页面,选择命名空间为arms-prom,找到以arms-prom开头的deployment,例如arms-prom-ack-arms-prometheus,在其右侧操作列,单击编辑
  5. 编辑页面的生命周期区域的启动执行参数文本框中,添加-alert=true,然后在页面右上角,单击更新
    Prometheus监控插件完成更新后,等待3分钟~5分钟,所有报警的 状态显示启用。

Grafana、Istio和HPA等第三方系统如何集成Prometheus监控?

Grafana、Istio和HPA等第三方系统集成Prometheus监控时,需要获取Prometheus监控的API接口地址。可以按照以下操作步骤获取API接口地址:

  1. 登录ARMS控制台
  2. 在左侧导航栏单击Prometheus监控
  3. Prometheus监控页面左上角选择容器服务K8s集群所在的地域,并在目标集群右侧的操作列单击设置
  4. 设置页面顶部单击Agent设置
  5. Agent设置页签上,复制步骤2:API接口地址后的地址。
    pg_pm_settings_tab_agent_settings

获取到API接口地址后,将其添加到Grafana、Istio和HPA等第三方系统中,即可集成Prometheus监控。完整的Grafana集成Prometheus监控的操作请参见将阿里云Prometheus监控数据接入本地Grafana

为什么ACK集群已删除,Prometheus Agent没有同步删除?

背景

在同一地域下,删除ACK集群后出现以下情况:

  • Prometheus控制台集群列表页面出现若干置灰集群。
  • 重新创建同名集群失败。

解决方案

Prometheus控制台中卸载Prometheus监控插件,具体操作,请参见卸载Prometheus监控插件