| 指标名称 | 类型 | 含义 |
|---|---|---|
| container_cpu_load_average_10s | gauge | 过去10秒容器CPU的平均负载 |
| container_cpu_usage_seconds_total | counter | 容器在每个CPU内核上的累积占用时间(单位:秒) |
| container_cpu_system_seconds_total | counter | SystemCPU累积占用时间(单位:秒) |
| container_cpu_user_seconds_total | counter | UserCPU累积占用时间(单位:秒) |
| container_fs_usage_bytes | gauge | 容器中文件系统的使用量(单位:字节) |
| container_fs_limit_bytes | gauge | 容器可以使用的文件系统总量(单位:字节) |
| container_fs_reads_bytes_total | counter | 容器累积读取数据的总量(单位:字节) |
| container_fs_writes_bytes_total | counter | 容器累积写入数据的总量(单位:字节) |
| container_memory_max_usage_bytes | gauge | 容器的最大内存使用量(单位:字节) |
| container_memory_usage_bytes | gauge | 容器当前的内存使用量(单位:字节) |
| container_spec_memory_limit_bytes | gauge | 容器的内存使用量限制 |
| machine_memory_bytes | gauge | 当前主机的内存总量 |
| container_network_receive_bytes_total | counter | 容器网络累积接收数据总量(单位:字节) |
| container_network_transmit_bytes_total | counter | 容器网络累积传输数据总量(单位:字节) |
如果您知道container_last_seen度量的数据点之间的间隔(称为scrape_interval,通常在Prometheus配置文件中配置),则可以使用以下查询来计算前一天容器运行的持续时间(以秒为单位):
count_over_time(
(changes(container_last_seen{id=~"/docker/.*",instance=~"$node"}[<3*scrape_interval>])>0)
[1d:<3*scrape_interval>]
)*<3*scrape_interval>
复制
例如,如果scrape_interval等于10s,则查询将如下所示:
count_over_time(
(changes(container_last_seen{id=~"/docker/.*",instance=~"$node"}[30s])>0)
[1d:30s]
)*30
复制
当container_last_seen时间序列至少有一次更改时,此查询使用PromQL subqueries计算number 30s intervals。
- 详解:
gloable:
resolve_timeout: # 在没有报警的情况下声明为已解决的时间
- 其他邮件相关配置,如示例
route: # 所有报警信息进入后的根路由,用来设置报警的分发策略
group_by: ['LABEL_NAME','alertname', 'cluster','job','instance',...]
这里的标签列表是接收到报警信息后的重新分组标签,例如,接收到的报警信息里面有许多具有 cluster=A 和alertname=LatncyHigh 这样的标签的报警信息将会批量被聚合到一个分组里面
group_wait: 30s
当一个新的报警分组被创建后,需要等待至少group_wait时间来初始化通知,这种方式可以确保您能有足够的时间为同一分组来获取多个警报,然后一起触发这个报警信息。
group_interval: 5m
当第一个报警发送后,等待'group_interval'时间来发送新的一组报警信息。
repeat_interval: 5m
如果一个报警信息已经发送成功了,等待'repeat_interval'时间来重新发送他们
match:
label_name: NAME
匹配报警规则,满足条件的告警将被发给 receiver
match_re:
label_name: <regex>, ...
正则表达式匹配。满足条件的告警将被发给 receiver
receiver: receiver_name
将满足match 和 match_re的告警发给后端 告警媒介(邮件,webhook,pagerduty,wechat,...) 必须有一个default receivererr="root route must specify a default receiver"
routes:
- <route> ...
配置多条规则。
templates:
[ - <filepath> ... ]
配置模板,比如邮件告警页面模板
receivers:
- <receiver> ...# 列表
- name:receiver_name # 用于填写在route.receiver中的名字
email_configs: # 配置邮件告警
- to: <tmpl_string>
send_resolved: <boolean> | default = false # 故障恢复之后,是否发送恢复通知
kube-state-metrics常见监控指标
Pod
kube_pod_info # 有关pod的信息。
kube_pod_start_time # pod的unix时间戳记中的开始时间。
kube_pod_completion_time #pod的unix时间戳记中的完成时间。
kube_pod_owner # 有关Pod所有者的信息。
kube_pod_labels # Kubernetes标签转换为Prometheus标签。
kube_pod_status_phase # Pod当前阶段。
kube_pod_status_ready # 描述容器是否准备好处理请求。
kube_pod_status_scheduled # 描述pod的调度过程的状态。
kube_pod_container_info # 有关容器中container的信息。
kube_pod_container_status_waiting # 描述容器当前是否处于等待状态。
kube_pod_container_status_waiting_reason # 描述容器当前处于等待状态的原因。
kube_pod_container_status_running # 描述容器当前是否处于运行状态。
kube_pod_container_status_terminated # 描述容器当前是否处于终止状态。
kube_pod_container_status_terminated_reason # 描述容器当前处于终止状态的原因。
kube_pod_container_status_last_terminated_reason # 描述容器处于终止状态的最后原因。
kube_pod_container_status_ready # Describes whether the containers readiness check succeeded.
kube_pod_container_status_restarts_total # 每个容器的容器重新启动次数。
kube_pod_container_resource_requests # 容器请求的请求资源数。
kube_pod_container_resource_limits # 容器请求的限制资源数量。
kube_pod_overhead
kube_pod_created # Unix创建时间戳。
kube_pod_deletion_timestamp # Unix删除时间戳
kube_pod_restart_policy # 描述此pod使用的重新启动策略。
kube_pod_init_container_info # 有关Pod中init容器的信息。
kube_pod_init_container_status_waiting # ,描述初始化容器当前是否处于等待状态。
kube_pod_init_container_status_waiting_reason # Describes the reason the init container is currently in waiting state.
kube_pod_init_container_status_running # 描述初始化容器当前是否处于运行状态。
kube_pod_init_container_status_terminated # 描述初始化容器当前是否处于终止状态。
kube_pod_init_container_status_terminated_reason # 描述初始化容器当前处于终止状态的原因。
kube_pod_init_container_status_last_terminated_reason # 描述初始化容器处于终止状态的最后原因。
kube_pod_init_container_status_ready # 描述初始化容器准备情况检查是否成功。
kube_pod_init_container_status_restarts_total #Counter类型,初始化容器的重新启动次数。
kube_pod_init_container_resource_limits # 初始化容器请求的限制资源数。
kube_pod_spec_volumes_persistentvolumeclaims_info # 有关Pod中持久卷声明卷的信息。
kube_pod_spec_volumes_persistentvolumeclaims_readonly # 描述是否以只读方式安装了持久卷声明。
kube_pod_status_reason # pod状态原因
kube_pod_status_scheduled_time # Pod移至计划状态时的Unix时间戳
kube_pod_status_unschedulable # 描述pod的unschedulable状态。
Deployment kube_deployment_status_replicas #deployment包含的副本个数 kube_deployment_status_replicas_available #deployment的可用副本数 kube_deployment_status_replicas_unavailable #deployment中不可用副本的数量 kube_deployment_status_replicas_updated #deployment的更新副本数 kube_deployment_status_observed_generation #deployment控制器观察到的生成 kube_deployment_status_condition #部署的当前状态condition kube_deployment_spec_replicas #deployment所需的Pod数 kube_deployment_spec_paused #deployment是否暂停,并且deployment控制器不会处理。 kube_deployment_spec_strategy_rollingupdate_max_surge #滚动更新deployment期间的最大不可用副本数。 kube_deployment_metadata_generation #代表期望状态的特定生成的序列号 kube_deployment_labels #Kubernetes标签转换为Prometheus标签 kube_deployment_created #Unix创建时间戳
StatefulSet kube_statefulset_status_replicas # StatefulSet的副本数。 kube_statefulset_status_replicas_current # StatefulSet的当前副本数。 kube_statefulset_status_replicas_ready #StatefulSet的就绪副本数。 kube_statefulset_status_replicas_updated #StatefulSet的更新副本数。 kube_statefulset_status_observed_generation #StatefulSet控制器观察到的生成。 kube_statefulset_replicas #StatefulSet所需的pod数。 kube_statefulset_metadata_generation #表示StatefulSet所需状态的特定生成的序列号。 kube_statefulset_created #Unix创建时间戳。 kube_statefulset_labels #Kubernetes标签转换为Prometheus标签。 kube_statefulset_status_current_revision #指示用于按顺序[0,currentReplicas)生成Pod的StatefulSet的版本。 kube_statefulset_status_update_revision #指示用于按顺序[replicas-updatedReplicas,replicas]生成Pod的StatefulSet的版本
Endpoint kube_endpoint_address_not_ready #endpoint中not ready的addresses数 kube_endpoint_address_available #endpoint中可用的addresses数 kube_endpoint_info #有关endpoint的信息 kube_endpoint_labels #Kubernetes标签转换为Prometheus标签 kube_endpoint_created #Unix创建时间戳
Node kube_node_info # 有关群集节点的信息。 kube_node_labels # Kubernetes标签转换为Prometheus标签。 kube_node_role # 集群节点的角色。 kube_node_spec_unschedulable # 节点是否可以调度新的Pod。 kube_node_spec_taint # 群集节点的污点。 kube_node_status_capacity # 节点不同资源的容量。 kube_node_status_allocatable # 可用于调度的节点的不同资源的可分配资源。 kube_node_status_condition # 群集节点的状况。 kube_node_created # Unix创建时间戳。
Service kube_service_info # 有关service的信息。 kube_service_labels # Kubernetes标签转换为Prometheus标签。 kube_service_created # Unix创建时间戳。 kube_service_spec_type # Type about service. kube_service_spec_external_ip # 服务外部IP。 每个IP一个组。 kube_service_status_load_balancer_ingress # 服务负载均衡器入口状态
DaemonSet kube_daemonset_created # Unix创建时间戳 kube_daemonset_status_current_number_scheduled # 运行至少一个且应该运行的守护程序容器的节点数。 kube_daemonset_status_desired_number_scheduled # 应该运行守护程序容器的节点数。 kube_daemonset_status_number_available # 应该运行守护程序容器并具有一个或多个守护程序容器正在运行并且可用的节点数 kube_daemonset_status_number_misscheduled # 运行守护程序容器但不应该运行的节点数。 kube_daemonset_status_number_ready # 应该运行守护程序容器并已运行一个或多个守护程序容器并准备就绪的节点数。 kube_daemonset_status_number_unavailable # 应该运行守护程序容器且没有任何守护程序容器正在运行并且可用的节点数 kube_daemonset_updated_number_scheduled # 正在运行更新的守护程序pod的节点总数 kube_daemonset_metadata_generation # 代表所需状态的特定生成的序列号。 kube_daemonset_labels # Kubernetes标签转换为Prometheus标签。