in internal/store/deployment.go [42:308]
func deploymentMetricFamilies(allowAnnotationsList, allowLabelsList []string) []generator.FamilyGenerator {
return []generator.FamilyGenerator{
*generator.NewFamilyGenerator(
"kube_deployment_created",
"Unix creation timestamp",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
ms := []*metric.Metric{}
if !d.CreationTimestamp.IsZero() {
ms = append(ms, &metric.Metric{
Value: float64(d.CreationTimestamp.Unix()),
})
}
return &metric.Family{
Metrics: ms,
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_replicas",
"The number of replicas per deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.Status.Replicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_replicas_ready",
"The number of ready replicas per deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.Status.ReadyReplicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_replicas_available",
"The number of available replicas per deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.Status.AvailableReplicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_replicas_unavailable",
"The number of unavailable replicas per deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.Status.UnavailableReplicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_replicas_updated",
"The number of updated replicas per deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.Status.UpdatedReplicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_observed_generation",
"The generation observed by the deployment controller.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.Status.ObservedGeneration),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_status_condition",
"The current status conditions of a deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
ms := make([]*metric.Metric, len(d.Status.Conditions)*len(conditionStatuses))
for i, c := range d.Status.Conditions {
conditionMetrics := addConditionMetrics(c.Status)
for j, m := range conditionMetrics {
metric := m
metric.LabelKeys = []string{"condition", "status"}
metric.LabelValues = append([]string{string(c.Type)}, metric.LabelValues...)
ms[i*len(conditionStatuses)+j] = metric
}
}
return &metric.Family{
Metrics: ms,
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_spec_replicas",
"Number of desired pods for a deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(*d.Spec.Replicas),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_spec_paused",
"Whether the deployment is paused and will not be processed by the deployment controller.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: boolFloat64(d.Spec.Paused),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_spec_strategy_rollingupdate_max_unavailable",
"Maximum number of unavailable replicas during a rolling update of a deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
if d.Spec.Strategy.RollingUpdate == nil {
return &metric.Family{}
}
maxUnavailable, err := intstr.GetScaledValueFromIntOrPercent(d.Spec.Strategy.RollingUpdate.MaxUnavailable, int(*d.Spec.Replicas), false)
if err != nil {
panic(err)
}
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(maxUnavailable),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_spec_strategy_rollingupdate_max_surge",
"Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
if d.Spec.Strategy.RollingUpdate == nil {
return &metric.Family{}
}
maxSurge, err := intstr.GetScaledValueFromIntOrPercent(d.Spec.Strategy.RollingUpdate.MaxSurge, int(*d.Spec.Replicas), true)
if err != nil {
panic(err)
}
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(maxSurge),
},
},
}
}),
),
*generator.NewFamilyGenerator(
"kube_deployment_metadata_generation",
"Sequence number representing a specific generation of the desired state.",
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{
Metrics: []*metric.Metric{
{
Value: float64(d.ObjectMeta.Generation),
},
},
}
}),
),
*generator.NewFamilyGenerator(
descDeploymentAnnotationsName,
descDeploymentAnnotationsHelp,
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
annotationKeys, annotationValues := createPrometheusLabelKeysValues("annotation", d.Annotations, allowAnnotationsList)
return &metric.Family{
Metrics: []*metric.Metric{
{
LabelKeys: annotationKeys,
LabelValues: annotationValues,
Value: 1,
},
},
}
}),
),
*generator.NewFamilyGenerator(
descDeploymentLabelsName,
descDeploymentLabelsHelp,
metric.Gauge,
"",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
labelKeys, labelValues := createPrometheusLabelKeysValues("label", d.Labels, allowLabelsList)
return &metric.Family{
Metrics: []*metric.Metric{
{
LabelKeys: labelKeys,
LabelValues: labelValues,
Value: 1,
},
},
}
}),
),
}
}