diff --git a/Documentation/README.md b/Documentation/README.md new file mode 100644 index 00000000..6115dadf --- /dev/null +++ b/Documentation/README.md @@ -0,0 +1,16 @@ +# Documentation + +This documentation is intended to be a complete reflection of the current state of the exposed metrics of kube-state-metrics. + +Pull requests completeing the metrics documentation as well as sample usages are very welcome. + +Per group of metrics there is one file for all metrics. See each file for specific documentation about the exposed metrics: + +* [DaemonSet Metrics](daemonset-metrics.md) +* [Deployment Metrics](deployment-metrics.md) +* [LimitRange Metrics](limitrange-metrics.md) +* [Node Metrics](node-metrics.md) +* [Pod Metrics](pod-metrics.md) +* [ReplicaSet Metrics](replicaset-metrics.md) +* [ReplicationController Metrics](replicationcontroller-metrics.md) +* [ResourceQuota Metrics](resourcequota-metrics.md) diff --git a/Documentation/daemonset-metrics.md b/Documentation/daemonset-metrics.md new file mode 100644 index 00000000..da916eea --- /dev/null +++ b/Documentation/daemonset-metrics.md @@ -0,0 +1,9 @@ +# DaemonSet Metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_daemonset_status_current_number_scheduled | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | +| kube_daemonset_status_number_misscheduled | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | +| kube_daemonset_status_desired_number_scheduled | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | +| kube_daemonset_status_number_ready | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | +| kube_daemonset_metadata_generation | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | diff --git a/Documentation/deployment-metrics.md b/Documentation/deployment-metrics.md new file mode 100644 index 00000000..4a1a560f --- /dev/null +++ b/Documentation/deployment-metrics.md @@ -0,0 +1,13 @@ +# Deployment Metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_deployment_status_replicas | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_status_replicas_available | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_status_replicas_unavailable | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_status_replicas_updated | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_status_observed_generation | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_spec_replicas | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_spec_paused | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_spec_strategy_rollingupdate_max_unavailable | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | +| kube_deployment_metadata_generation | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | diff --git a/Documentation/limitrange-metrics.md b/Documentation/limitrange-metrics.md new file mode 100644 index 00000000..395f6162 --- /dev/null +++ b/Documentation/limitrange-metrics.md @@ -0,0 +1,5 @@ +# LimitRange Metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_limitrange | Gauge | `limitrange`=<limitrange-name>
`namespace`=<namespace>
`resource`=<ResourceName>
`type`=<Pod\|Container\|PersistentVolumeClaim>
`constraint`=<constraint>| diff --git a/Documentation/node-metrics.md b/Documentation/node-metrics.md new file mode 100644 index 00000000..1c69ab6d --- /dev/null +++ b/Documentation/node-metrics.md @@ -0,0 +1,18 @@ +# Node Metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_node_info | Gauge | `node`=<node-address>
`kernel_version`=<kernel-version>
`os_image`=<os-image-name>
`container_runtime_version`=<container-runtime-and-version-combination>
`kubelet_version`=<kubelet-version>
`kubeproxy_version`=<kubeproxy-version> | +| kube_node_spec_unschedulable | Gauge | `node`=<node-address>| +| kube_node_status_ready| Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | +| kube_node_status_out_of_disk | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | +| kube_node_status_phase| Gauge | `node`=<node-address>
`phase`=<Pending\|Running\|Terminated> | +| kube_node_status_capacity_cpu_cores | Gauge | `node`=<node-address>| +| kube_node_status_capacity_memory_bytes | Gauge | `node`=<node-address>| +| kube_node_status_capacity_pods | Gauge | `node`=<node-address>| +| kube_node_status_allocatable_cpu_cores | Gauge | `node`=<node-address>| +| kube_node_status_allocatable_memory_bytes | Gauge | `node`=<node-address>| +| kube_node_status_allocatable_pods | Gauge | `node`=<node-address>| +| kube_node_status_memory_pressure | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | +| kube_node_status_disk_pressure | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | +| kube_node_status_network_unavailable | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | diff --git a/Documentation/pod-metrics.md b/Documentation/pod-metrics.md new file mode 100644 index 00000000..3142c761 --- /dev/null +++ b/Documentation/pod-metrics.md @@ -0,0 +1,18 @@ +# Pod Metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_pod_info | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`host_ip`=<host-ip>
`pod_ip`=<pod-ip>
`start_time`=<date-time since kubelet acknowledged pod>
`node`=<node-name>
`created_by`=<created_by> | +| kube_pod_status_phase | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`phase`=<Pending\|Running\|Succeeded\|Failed\|Unknown> | +| kube_pod_status_ready | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`condition`=<true\|false\|unknown> | +| kube_pod_status_scheduled | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`condition`=<true\|false\|unknown> | +| kube_pod_container_info | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`image`=<image-name>
`image_id`=<image-id>
`container_id`=<containerid> | +| kube_pod_container_status_waiting | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | +| kube_pod_container_status_running | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | +| kube_pod_container_status_terminated | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | +| kube_pod_container_status_ready | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | +| kube_pod_container_status_restarts | Counter | `container`=<container-name>
`namespace`=<pod-namespace>
`pod`=<pod-name> | +| kube_pod_container_resource_requests_cpu_cores | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | +| kube_pod_container_resource_requests_memory_bytes | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | +| kube_pod_container_resource_limits_cpu_cores | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | +| kube_pod_container_resource_limits_memory_bytes | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | diff --git a/Documentation/replicaset-metrics.md b/Documentation/replicaset-metrics.md new file mode 100644 index 00000000..08b222e4 --- /dev/null +++ b/Documentation/replicaset-metrics.md @@ -0,0 +1,10 @@ +# ReplicaSet metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_replicaset_status_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | +| kube_replicaset_status_fully_labeled_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | +| kube_replicaset_status_ready_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | +| kube_replicaset_status_observed_generation | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | +| kube_replicaset_spec_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | +| kube_replicaset_metadata_generation | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | diff --git a/Documentation/replicationcontroller-metrics.md b/Documentation/replicationcontroller-metrics.md new file mode 100644 index 00000000..f64df779 --- /dev/null +++ b/Documentation/replicationcontroller-metrics.md @@ -0,0 +1,11 @@ +# ReplicationController metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_replicationcontroller_status_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +| kube_replicationcontroller_status_fully_labeled_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +| kube_replicationcontroller_status_ready_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +| kube_replicationcontroller_status_available_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +| kube_replicationcontroller_status_observed_generation | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +| kube_replicationcontroller_spec_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +| kube_replicationcontroller_metadata_generation | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | diff --git a/Documentation/resourcequota-metrics.md b/Documentation/resourcequota-metrics.md new file mode 100644 index 00000000..03737c2e --- /dev/null +++ b/Documentation/resourcequota-metrics.md @@ -0,0 +1,5 @@ +# ResourceQuota Metrics + +| Metric name| Metric type | Labels/tags | +| ---------- | ----------- | ----------- | +| kube_resourcequota | Gauge | `resourcequota`=<quota-name>
`namespace`=<namespace>
`resource`=<ResourceName>
`type`=<quota-type> | diff --git a/README.md b/README.md index 054510cb..52deec50 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ the raw metrics. The latest container image can be found at `gcr.io/google_containers/kube-state-metrics:v0.5.0`. -## Metrics +## Metrics Documentation There are many more metrics we could report, but this first pass is focused on those that could be used for actionable alerts. Please contribute PR's for @@ -28,102 +28,7 @@ additional metrics! > WARNING: THESE METRIC/TAG NAMES ARE UNSTABLE AND MAY CHANGE IN A FUTURE RELEASE. -### Node Metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_node_info | Gauge | `node`=<node-address>
`kernel_version`=<kernel-version>
`os_image`=<os-image-name>
`container_runtime_version`=<container-runtime-and-version-combination>
`kubelet_version`=<kubelet-version>
`kubeproxy_version`=<kubeproxy-version> | -| kube_node_spec_unschedulable | Gauge | `node`=<node-address>| -| kube_node_status_ready| Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | -| kube_node_status_out_of_disk | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | -| kube_node_status_phase| Gauge | `node`=<node-address>
`phase`=<Pending\|Running\|Terminated> | -| kube_node_status_capacity_cpu_cores | Gauge | `node`=<node-address>| -| kube_node_status_capacity_memory_bytes | Gauge | `node`=<node-address>| -| kube_node_status_capacity_pods | Gauge | `node`=<node-address>| -| kube_node_status_allocatable_cpu_cores | Gauge | `node`=<node-address>| -| kube_node_status_allocatable_memory_bytes | Gauge | `node`=<node-address>| -| kube_node_status_allocatable_pods | Gauge | `node`=<node-address>| -| kube_node_status_memory_pressure | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | -| kube_node_status_disk_pressure | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | -| kube_node_status_network_unavailable | Gauge | `node`=<node-address>
`condition`=<true\|false\|unknown> | - -### DaemonSet Metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_daemonset_status_current_number_scheduled | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | -| kube_daemonset_status_number_misscheduled | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | -| kube_daemonset_status_desired_number_scheduled | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | -| kube_daemonset_status_number_ready | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | -| kube_daemonset_metadata_generation | Gauge | `daemonset`=<daemonset-name>
`namespace`=<daemonset-namespace> | - -### Deployment Metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_deployment_status_replicas | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_status_replicas_available | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_status_replicas_unavailable | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_status_replicas_updated | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_status_observed_generation | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_spec_replicas | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_spec_paused | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_spec_strategy_rollingupdate_max_unavailable | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | -| kube_deployment_metadata_generation | Gauge | `deployment`=<deployment-name>
`namespace`=<deployment-namespace> | - -### Pod Metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_pod_info | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`host_ip`=<host-ip>
`pod_ip`=<pod-ip>
`start_time`=<date-time since kubelet acknowledged pod>
`node`=<node-name>
`created_by`=<created_by> | -| kube_pod_status_phase | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`phase`=<Pending\|Running\|Succeeded\|Failed\|Unknown> | -| kube_pod_status_ready | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`condition`=<true\|false\|unknown> | -| kube_pod_status_scheduled | Gauge | `pod`=<pod-name>
`namespace`=<pod-namespace>
`condition`=<true\|false\|unknown> | -| kube_pod_container_info | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`image`=<image-name>
`image_id`=<image-id>
`container_id`=<containerid> | -| kube_pod_container_status_waiting | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | -| kube_pod_container_status_running | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | -| kube_pod_container_status_terminated | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | -| kube_pod_container_status_ready | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace> | -| kube_pod_container_status_restarts | Counter | `container`=<container-name>
`namespace`=<pod-namespace>
`pod`=<pod-name> | -| kube_pod_container_resource_requests_cpu_cores | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | -| kube_pod_container_resource_requests_memory_bytes | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | -| kube_pod_container_resource_limits_cpu_cores | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | -| kube_pod_container_resource_limits_memory_bytes | Gauge | `container`=<container-name>
`pod`=<pod-name>
`namespace`=<pod-namespace>
`node`=< node-name> | - -### ResourceQuota Metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_resourcequota | Gauge | `resourcequota`=<quota-name>
`namespace`=<namespace>
`resource`=<ResourceName>
`type`=<quota-type> | - -### LimitRange Metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_limitrange | Gauge | `limitrange`=<limitrange-name>
`namespace`=<namespace>
`resource`=<ResourceName>
`type`=<Pod\|Container\|PersistentVolumeClaim>
`constraint`=<constraint>| - -### ReplicaSet metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_replicaset_status_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | -| kube_replicaset_status_fully_labeled_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | -| kube_replicaset_status_ready_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | -| kube_replicaset_status_observed_generation | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | -| kube_replicaset_spec_replicas | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | -| kube_replicaset_metadata_generation | Gauge | `replicaset`=<replicaset-name>
`namespace`=<replicaset-namespace> | - -### ReplicationController metrics - -| Metric name| Metric type | Labels/tags | -| ---------- | ----------- | ----------- | -| kube_replicationcontroller_status_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | -| kube_replicationcontroller_status_fully_labeled_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | -| kube_replicationcontroller_status_ready_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | -| kube_replicationcontroller_status_available_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | -| kube_replicationcontroller_status_observed_generation | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | -| kube_replicationcontroller_spec_replicas | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | -| kube_replicationcontroller_metadata_generation | Gauge | `replicationcontroller`=<replicationcontroller-name>
`namespace`=<replicationcontroller-namespace> | +See the [`Documentation`](Documentation) directory for documentation of the exposed metrics. ## kube-state-metrics vs. Heapster