Add DeprecatedVersion to struct FamilyGenerator

This commit is contained in:
Yuiko Mori 2020-07-10 01:23:15 +00:00
parent 72758e5290
commit 49197428ce
30 changed files with 1640 additions and 1390 deletions

View File

@ -36,11 +36,12 @@ var (
descCSRLabelsDefaultLabels = []string{"certificatesigningrequest"} descCSRLabelsDefaultLabels = []string{"certificatesigningrequest"}
csrMetricFamilies = []generator.FamilyGenerator{ csrMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descCSRLabelsName, descCSRLabelsName,
Type: metric.Gauge, descCSRLabelsHelp,
Help: descCSRLabelsHelp, metric.Gauge,
GenerateFunc: wrapCSRFunc(func(j *certv1beta1.CertificateSigningRequest) *metric.Family { "",
wrapCSRFunc(func(j *certv1beta1.CertificateSigningRequest) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(j.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(j.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -52,12 +53,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_certificatesigningrequest_created", "kube_certificatesigningrequest_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapCSRFunc(func(csr *certv1beta1.CertificateSigningRequest) *metric.Family { "",
wrapCSRFunc(func(csr *certv1beta1.CertificateSigningRequest) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !csr.CreationTimestamp.IsZero() { if !csr.CreationTimestamp.IsZero() {
ms = append(ms, &metric.Metric{ ms = append(ms, &metric.Metric{
@ -71,22 +73,24 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_certificatesigningrequest_condition", "kube_certificatesigningrequest_condition",
Type: metric.Gauge, "The number of each certificatesigningrequest condition",
Help: "The number of each certificatesigningrequest condition", metric.Gauge,
GenerateFunc: wrapCSRFunc(func(csr *certv1beta1.CertificateSigningRequest) *metric.Family { "",
wrapCSRFunc(func(csr *certv1beta1.CertificateSigningRequest) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: addCSRConditionMetrics(csr.Status), Metrics: addCSRConditionMetrics(csr.Status),
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_certificatesigningrequest_cert_length", "kube_certificatesigningrequest_cert_length",
Type: metric.Gauge, "Length of the issued cert",
Help: "Length of the issued cert", metric.Gauge,
GenerateFunc: wrapCSRFunc(func(csr *certv1beta1.CertificateSigningRequest) *metric.Family { "",
wrapCSRFunc(func(csr *certv1beta1.CertificateSigningRequest) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -97,7 +101,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -34,11 +34,12 @@ var (
descConfigMapLabelsDefaultLabels = []string{"namespace", "configmap"} descConfigMapLabelsDefaultLabels = []string{"namespace", "configmap"}
configMapMetricFamilies = []generator.FamilyGenerator{ configMapMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_configmap_info", "kube_configmap_info",
Type: metric.Gauge, "Information about configmap.",
Help: "Information about configmap.", metric.Gauge,
GenerateFunc: wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family { "",
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{{ Metrics: []*metric.Metric{{
LabelKeys: []string{}, LabelKeys: []string{},
@ -47,12 +48,13 @@ var (
}}, }},
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_configmap_created", "kube_configmap_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family { "",
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !c.CreationTimestamp.IsZero() { if !c.CreationTimestamp.IsZero() {
@ -67,17 +69,18 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_configmap_metadata_resource_version", "kube_configmap_metadata_resource_version",
Type: metric.Gauge, "Resource version representing a specific version of the configmap.",
Help: "Resource version representing a specific version of the configmap.", metric.Gauge,
GenerateFunc: wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family { "",
wrapConfigMapFunc(func(c *v1.ConfigMap) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: resourceVersionMetric(c.ObjectMeta.ResourceVersion), Metrics: resourceVersionMetric(c.ObjectMeta.ResourceVersion),
} }
}), }),
}, ),
} }
) )

View File

@ -39,11 +39,12 @@ var (
descCronJobLabelsDefaultLabels = []string{"namespace", "cronjob"} descCronJobLabelsDefaultLabels = []string{"namespace", "cronjob"}
cronJobMetricFamilies = []generator.FamilyGenerator{ cronJobMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descCronJobLabelsName, descCronJobLabelsName,
Type: metric.Gauge, descCronJobLabelsHelp,
Help: descCronJobLabelsHelp, metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(j.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(j.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -55,12 +56,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_info", "kube_cronjob_info",
Type: metric.Gauge, "Info about cronjob.",
Help: "Info about cronjob.", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -71,12 +73,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_created", "kube_cronjob_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !j.CreationTimestamp.IsZero() { if !j.CreationTimestamp.IsZero() {
ms = append(ms, &metric.Metric{ ms = append(ms, &metric.Metric{
@ -90,12 +93,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_status_active", "kube_cronjob_status_active",
Type: metric.Gauge, "Active holds pointers to currently running jobs.",
Help: "Active holds pointers to currently running jobs.", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -106,12 +110,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_status_last_schedule_time", "kube_cronjob_status_last_schedule_time",
Type: metric.Gauge, "LastScheduleTime keeps information of when was the last time the job was successfully scheduled.",
Help: "LastScheduleTime keeps information of when was the last time the job was successfully scheduled.", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Status.LastScheduleTime != nil { if j.Status.LastScheduleTime != nil {
@ -126,12 +131,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_spec_suspend", "kube_cronjob_spec_suspend",
Type: metric.Gauge, "Suspend flag tells the controller to suspend subsequent executions.",
Help: "Suspend flag tells the controller to suspend subsequent executions.", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Spec.Suspend != nil { if j.Spec.Suspend != nil {
@ -146,12 +152,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_spec_starting_deadline_seconds", "kube_cronjob_spec_starting_deadline_seconds",
Type: metric.Gauge, "Deadline in seconds for starting the job if it misses scheduled time for any reason.",
Help: "Deadline in seconds for starting the job if it misses scheduled time for any reason.", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Spec.StartingDeadlineSeconds != nil { if j.Spec.StartingDeadlineSeconds != nil {
@ -167,12 +174,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_cronjob_next_schedule_time", "kube_cronjob_next_schedule_time",
Type: metric.Gauge, "Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed.",
Help: "Next time the cronjob should be scheduled. The time after lastScheduleTime, or after the cron job's creation time if it's never been scheduled. Use this to determine if the job is delayed.", metric.Gauge,
GenerateFunc: wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family { "",
wrapCronJobFunc(func(j *batchv1beta1.CronJob) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
// If the cron job is suspended, don't track the next scheduled time // If the cron job is suspended, don't track the next scheduled time
@ -191,7 +199,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descDaemonSetLabelsDefaultLabels = []string{"namespace", "daemonset"} descDaemonSetLabelsDefaultLabels = []string{"namespace", "daemonset"}
daemonSetMetricFamilies = []generator.FamilyGenerator{ daemonSetMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_created", "kube_daemonset_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !d.CreationTimestamp.IsZero() { if !d.CreationTimestamp.IsZero() {
@ -55,12 +56,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_current_number_scheduled", "kube_daemonset_status_current_number_scheduled",
Type: metric.Gauge, "The number of nodes running at least one daemon pod and are supposed to.",
Help: "The number of nodes running at least one daemon pod and are supposed to.", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -71,12 +73,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_desired_number_scheduled", "kube_daemonset_status_desired_number_scheduled",
Type: metric.Gauge, "The number of nodes that should be running the daemon pod.",
Help: "The number of nodes that should be running the daemon pod.", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -87,12 +90,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_number_available", "kube_daemonset_status_number_available",
Type: metric.Gauge, "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available",
Help: "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and available", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -103,12 +107,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_number_misscheduled", "kube_daemonset_status_number_misscheduled",
Type: metric.Gauge, "The number of nodes running a daemon pod but are not supposed to.",
Help: "The number of nodes running a daemon pod but are not supposed to.", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -119,12 +124,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_number_ready", "kube_daemonset_status_number_ready",
Type: metric.Gauge, "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.",
Help: "The number of nodes that should be running the daemon pod and have one or more of the daemon pod running and ready.", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -135,12 +141,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_number_unavailable", "kube_daemonset_status_number_unavailable",
Type: metric.Gauge, "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available",
Help: "The number of nodes that should be running the daemon pod and have none of the daemon pod running and available", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -151,12 +158,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_observed_generation", "kube_daemonset_status_observed_generation",
Type: metric.Gauge, "The most recent generation observed by the daemon set controller.",
Help: "The most recent generation observed by the daemon set controller.", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -167,12 +175,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_status_updated_number_scheduled", "kube_daemonset_status_updated_number_scheduled",
Type: metric.Gauge, "The total number of nodes that are running updated daemon pod",
Help: "The total number of nodes that are running updated daemon pod", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -181,12 +190,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_daemonset_metadata_generation", "kube_daemonset_metadata_generation",
Type: metric.Gauge, "Sequence number representing a specific generation of the desired state.",
Help: "Sequence number representing a specific generation of the desired state.", metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -197,12 +207,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descDaemonSetLabelsName, descDaemonSetLabelsName,
Type: metric.Gauge, descDaemonSetLabelsHelp,
Help: descDaemonSetLabelsHelp, metric.Gauge,
GenerateFunc: wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family { "",
wrapDaemonSetFunc(func(d *v1.DaemonSet) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.ObjectMeta.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.ObjectMeta.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -214,7 +225,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -37,11 +37,12 @@ var (
descDeploymentLabelsDefaultLabels = []string{"namespace", "deployment"} descDeploymentLabelsDefaultLabels = []string{"namespace", "deployment"}
deploymentMetricFamilies = []generator.FamilyGenerator{ deploymentMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_created", "kube_deployment_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !d.CreationTimestamp.IsZero() { if !d.CreationTimestamp.IsZero() {
@ -54,12 +55,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_status_replicas", "kube_deployment_status_replicas",
Type: metric.Gauge, "The number of replicas per deployment.",
Help: "The number of replicas per deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -68,12 +70,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_status_replicas_available", "kube_deployment_status_replicas_available",
Type: metric.Gauge, "The number of available replicas per deployment.",
Help: "The number of available replicas per deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -82,12 +85,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_status_replicas_unavailable", "kube_deployment_status_replicas_unavailable",
Type: metric.Gauge, "The number of unavailable replicas per deployment.",
Help: "The number of unavailable replicas per deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -96,12 +100,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_status_replicas_updated", "kube_deployment_status_replicas_updated",
Type: metric.Gauge, "The number of updated replicas per deployment.",
Help: "The number of updated replicas per deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -110,12 +115,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_status_observed_generation", "kube_deployment_status_observed_generation",
Type: metric.Gauge, "The generation observed by the deployment controller.",
Help: "The generation observed by the deployment controller.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -124,12 +130,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_status_condition", "kube_deployment_status_condition",
Type: metric.Gauge, "The current status conditions of a deployment.",
Help: "The current status conditions of a deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
ms := make([]*metric.Metric, len(d.Status.Conditions)*len(conditionStatuses)) ms := make([]*metric.Metric, len(d.Status.Conditions)*len(conditionStatuses))
for i, c := range d.Status.Conditions { for i, c := range d.Status.Conditions {
@ -148,12 +155,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_spec_replicas", "kube_deployment_spec_replicas",
Type: metric.Gauge, "Number of desired pods for a deployment.",
Help: "Number of desired pods for a deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -162,12 +170,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_spec_paused", "kube_deployment_spec_paused",
Type: metric.Gauge, "Whether the deployment is paused and will not be processed by the deployment controller.",
Help: "Whether the deployment is paused and will not be processed by the deployment controller.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -176,12 +185,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_spec_strategy_rollingupdate_max_unavailable", "kube_deployment_spec_strategy_rollingupdate_max_unavailable",
Type: metric.Gauge, "Maximum number of unavailable replicas during a rolling update of a deployment.",
Help: "Maximum number of unavailable replicas during a rolling update of a deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
if d.Spec.Strategy.RollingUpdate == nil { if d.Spec.Strategy.RollingUpdate == nil {
return &metric.Family{} return &metric.Family{}
} }
@ -199,12 +209,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_spec_strategy_rollingupdate_max_surge", "kube_deployment_spec_strategy_rollingupdate_max_surge",
Type: metric.Gauge, "Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment.",
Help: "Maximum number of replicas that can be scheduled above the desired number of replicas during a rolling update of a deployment.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
if d.Spec.Strategy.RollingUpdate == nil { if d.Spec.Strategy.RollingUpdate == nil {
return &metric.Family{} return &metric.Family{}
} }
@ -222,12 +233,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_deployment_metadata_generation", "kube_deployment_metadata_generation",
Type: metric.Gauge, "Sequence number representing a specific generation of the desired state.",
Help: "Sequence number representing a specific generation of the desired state.", metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -236,12 +248,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descDeploymentLabelsName, descDeploymentLabelsName,
Type: metric.Gauge, descDeploymentLabelsHelp,
Help: descDeploymentLabelsHelp, metric.Gauge,
GenerateFunc: wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family { "",
wrapDeploymentFunc(func(d *v1.Deployment) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -253,7 +266,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descEndpointLabelsDefaultLabels = []string{"namespace", "endpoint"} descEndpointLabelsDefaultLabels = []string{"namespace", "endpoint"}
endpointMetricFamilies = []generator.FamilyGenerator{ endpointMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_endpoint_info", "kube_endpoint_info",
Type: metric.Gauge, "Information about endpoint.",
Help: "Information about endpoint.", metric.Gauge,
GenerateFunc: wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family { "",
wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -49,12 +50,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_endpoint_created", "kube_endpoint_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family { "",
wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !e.CreationTimestamp.IsZero() { if !e.CreationTimestamp.IsZero() {
@ -68,12 +70,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descEndpointLabelsName, descEndpointLabelsName,
Type: metric.Gauge, descEndpointLabelsHelp,
Help: descEndpointLabelsHelp, metric.Gauge,
GenerateFunc: wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family { "",
wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(e.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(e.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -85,12 +88,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_endpoint_address_available", "kube_endpoint_address_available",
Type: metric.Gauge, "Number of addresses available in endpoint.",
Help: "Number of addresses available in endpoint.", metric.Gauge,
GenerateFunc: wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family { "",
wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family {
var available int var available int
for _, s := range e.Subsets { for _, s := range e.Subsets {
available += len(s.Addresses) * len(s.Ports) available += len(s.Addresses) * len(s.Ports)
@ -104,12 +108,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_endpoint_address_not_ready", "kube_endpoint_address_not_ready",
Type: metric.Gauge, "Number of addresses not ready in endpoint",
Help: "Number of addresses not ready in endpoint", metric.Gauge,
GenerateFunc: wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family { "",
wrapEndpointFunc(func(e *v1.Endpoints) *metric.Family {
var notReady int var notReady int
for _, s := range e.Subsets { for _, s := range e.Subsets {
notReady += len(s.NotReadyAddresses) * len(s.Ports) notReady += len(s.NotReadyAddresses) * len(s.Ports)
@ -122,7 +127,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -52,11 +52,12 @@ var (
targetMetricLabels = []string{"metric_name", "metric_target_type"} targetMetricLabels = []string{"metric_name", "metric_target_type"}
hpaMetricFamilies = []generator.FamilyGenerator{ hpaMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_metadata_generation", "kube_horizontalpodautoscaler_metadata_generation",
Type: metric.Gauge, "The generation observed by the HorizontalPodAutoscaler controller.",
Help: "The generation observed by the HorizontalPodAutoscaler controller.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -65,12 +66,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_spec_max_replicas", "kube_horizontalpodautoscaler_spec_max_replicas",
Type: metric.Gauge, "Upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.",
Help: "Upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -79,12 +81,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_spec_min_replicas", "kube_horizontalpodautoscaler_spec_min_replicas",
Type: metric.Gauge, "Lower limit for the number of pods that can be set by the autoscaler, default 1.",
Help: "Lower limit for the number of pods that can be set by the autoscaler, default 1.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -93,12 +96,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_spec_target_metric", "kube_horizontalpodautoscaler_spec_target_metric",
Type: metric.Gauge, "The metric specifications used by this autoscaler when calculating the desired replica count.",
Help: "The metric specifications used by this autoscaler when calculating the desired replica count.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
ms := make([]*metric.Metric, 0, len(a.Spec.Metrics)) ms := make([]*metric.Metric, 0, len(a.Spec.Metrics))
for _, m := range a.Spec.Metrics { for _, m := range a.Spec.Metrics {
var metricName string var metricName string
@ -155,12 +159,13 @@ var (
} }
return &metric.Family{Metrics: ms} return &metric.Family{Metrics: ms}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_status_current_replicas", "kube_horizontalpodautoscaler_status_current_replicas",
Type: metric.Gauge, "Current number of replicas of pods managed by this autoscaler.",
Help: "Current number of replicas of pods managed by this autoscaler.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -169,12 +174,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_status_desired_replicas", "kube_horizontalpodautoscaler_status_desired_replicas",
Type: metric.Gauge, "Desired number of replicas of pods managed by this autoscaler.",
Help: "Desired number of replicas of pods managed by this autoscaler.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -183,12 +189,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descHorizontalPodAutoscalerLabelsName, descHorizontalPodAutoscalerLabelsName,
Type: metric.Gauge, descHorizontalPodAutoscalerLabelsHelp,
Help: descHorizontalPodAutoscalerLabelsHelp, metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(a.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(a.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -200,12 +207,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_horizontalpodautoscaler_status_condition", "kube_horizontalpodautoscaler_status_condition",
Type: metric.Gauge, "The condition of this autoscaler.",
Help: "The condition of this autoscaler.", metric.Gauge,
GenerateFunc: wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family { "",
wrapHPAFunc(func(a *autoscaling.HorizontalPodAutoscaler) *metric.Family {
ms := make([]*metric.Metric, 0, len(a.Status.Conditions)*len(conditionStatuses)) ms := make([]*metric.Metric, 0, len(a.Status.Conditions)*len(conditionStatuses))
for _, c := range a.Status.Conditions { for _, c := range a.Status.Conditions {
@ -223,7 +231,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -37,11 +37,12 @@ var (
descIngressLabelsDefaultLabels = []string{"namespace", "ingress"} descIngressLabelsDefaultLabels = []string{"namespace", "ingress"}
ingressMetricFamilies = []generator.FamilyGenerator{ ingressMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_ingress_info", "kube_ingress_info",
Type: metric.Gauge, "Information about ingress.",
Help: "Information about ingress.", metric.Gauge,
GenerateFunc: wrapIngressFunc(func(s *v1beta1.Ingress) *metric.Family { "",
wrapIngressFunc(func(s *v1beta1.Ingress) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -49,12 +50,13 @@ var (
}, },
}} }}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descIngressLabelsName, descIngressLabelsName,
Type: metric.Gauge, descIngressLabelsHelp,
Help: descIngressLabelsHelp, metric.Gauge,
GenerateFunc: wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family { "",
wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(i.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(i.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -66,12 +68,13 @@ var (
}} }}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_ingress_created", "kube_ingress_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family { "",
wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !i.CreationTimestamp.IsZero() { if !i.CreationTimestamp.IsZero() {
@ -84,22 +87,24 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_ingress_metadata_resource_version", "kube_ingress_metadata_resource_version",
Type: metric.Gauge, "Resource version representing a specific version of ingress.",
Help: "Resource version representing a specific version of ingress.", metric.Gauge,
GenerateFunc: wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family { "",
wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: resourceVersionMetric(i.ObjectMeta.ResourceVersion), Metrics: resourceVersionMetric(i.ObjectMeta.ResourceVersion),
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_ingress_path", "kube_ingress_path",
Type: metric.Gauge, "Ingress host, paths and backend service information.",
Help: "Ingress host, paths and backend service information.", metric.Gauge,
GenerateFunc: wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family { "",
wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
for _, rule := range i.Spec.Rules { for _, rule := range i.Spec.Rules {
if rule.HTTP != nil { if rule.HTTP != nil {
@ -116,12 +121,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_ingress_tls", "kube_ingress_tls",
Type: metric.Gauge, "Ingress TLS host and secret information.",
Help: "Ingress TLS host and secret information.", metric.Gauge,
GenerateFunc: wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family { "",
wrapIngressFunc(func(i *v1beta1.Ingress) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
for _, tls := range i.Spec.TLS { for _, tls := range i.Spec.TLS {
for _, host := range tls.Hosts { for _, host := range tls.Hosts {
@ -136,7 +142,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -37,11 +37,12 @@ var (
descJobLabelsDefaultLabels = []string{"namespace", "job_name"} descJobLabelsDefaultLabels = []string{"namespace", "job_name"}
jobMetricFamilies = []generator.FamilyGenerator{ jobMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descJobLabelsName, descJobLabelsName,
Type: metric.Gauge, descJobLabelsHelp,
Help: descJobLabelsHelp, metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(j.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(j.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -53,12 +54,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_info", "kube_job_info",
Type: metric.Gauge, "Information about job.",
Help: "Information about job.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -67,12 +69,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_created", "kube_job_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !j.CreationTimestamp.IsZero() { if !j.CreationTimestamp.IsZero() {
@ -85,12 +88,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_spec_parallelism", "kube_job_spec_parallelism",
Type: metric.Gauge, "The maximum desired number of pods the job should run at any given time.",
Help: "The maximum desired number of pods the job should run at any given time.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Spec.Parallelism != nil { if j.Spec.Parallelism != nil {
@ -103,12 +107,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_spec_completions", "kube_job_spec_completions",
Type: metric.Gauge, "The desired number of successfully finished pods the job should be run with.",
Help: "The desired number of successfully finished pods the job should be run with.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Spec.Completions != nil { if j.Spec.Completions != nil {
@ -121,12 +126,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_spec_active_deadline_seconds", "kube_job_spec_active_deadline_seconds",
Type: metric.Gauge, "The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it.",
Help: "The duration in seconds relative to the startTime that the job may be active before the system tries to terminate it.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Spec.ActiveDeadlineSeconds != nil { if j.Spec.ActiveDeadlineSeconds != nil {
@ -139,12 +145,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_status_succeeded", "kube_job_status_succeeded",
Type: metric.Gauge, "The number of pods which reached Phase Succeeded.",
Help: "The number of pods which reached Phase Succeeded.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -153,12 +160,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_status_failed", "kube_job_status_failed",
Type: metric.Gauge, "The number of pods which reached Phase Failed.",
Help: "The number of pods which reached Phase Failed.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -167,12 +175,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_status_active", "kube_job_status_active",
Type: metric.Gauge, "The number of actively running pods.",
Help: "The number of actively running pods.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -181,12 +190,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_complete", "kube_job_complete",
Type: metric.Gauge, "The job has completed its execution.",
Help: "The job has completed its execution.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
for _, c := range j.Status.Conditions { for _, c := range j.Status.Conditions {
if c.Type == v1batch.JobComplete { if c.Type == v1batch.JobComplete {
@ -203,12 +213,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_failed", "kube_job_failed",
Type: metric.Gauge, "The job has failed its execution.",
Help: "The job has failed its execution.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
for _, c := range j.Status.Conditions { for _, c := range j.Status.Conditions {
@ -226,12 +237,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_status_start_time", "kube_job_status_start_time",
Type: metric.Gauge, "StartTime represents time when the job was acknowledged by the Job Manager.",
Help: "StartTime represents time when the job was acknowledged by the Job Manager.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Status.StartTime != nil { if j.Status.StartTime != nil {
@ -245,12 +257,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_status_completion_time", "kube_job_status_completion_time",
Type: metric.Gauge, "CompletionTime represents time when the job was completed.",
Help: "CompletionTime represents time when the job was completed.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if j.Status.CompletionTime != nil { if j.Status.CompletionTime != nil {
ms = append(ms, &metric.Metric{ ms = append(ms, &metric.Metric{
@ -263,12 +276,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_job_owner", "kube_job_owner",
Type: metric.Gauge, "Information about the Job's owner.",
Help: "Information about the Job's owner.", metric.Gauge,
GenerateFunc: wrapJobFunc(func(j *v1batch.Job) *metric.Family { "",
wrapJobFunc(func(j *v1batch.Job) *metric.Family {
labelKeys := []string{"owner_kind", "owner_name", "owner_is_controller"} labelKeys := []string{"owner_kind", "owner_name", "owner_is_controller"}
owners := j.GetOwnerReferences() owners := j.GetOwnerReferences()
@ -307,7 +321,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -34,11 +34,12 @@ var (
descLeaseLabelsDefaultLabels = []string{"lease"} descLeaseLabelsDefaultLabels = []string{"lease"}
leaseMetricFamilies = []generator.FamilyGenerator{ leaseMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_lease_owner", "kube_lease_owner",
Type: metric.Gauge, "Information about the Lease's owner.",
Help: "Information about the Lease's owner.", metric.Gauge,
GenerateFunc: wrapLeaseFunc(func(l *coordinationv1.Lease) *metric.Family { "",
wrapLeaseFunc(func(l *coordinationv1.Lease) *metric.Family {
labelKeys := []string{"owner_kind", "owner_name"} labelKeys := []string{"owner_kind", "owner_name"}
owners := l.GetOwnerReferences() owners := l.GetOwnerReferences()
@ -67,12 +68,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_lease_renew_time", "kube_lease_renew_time",
Type: metric.Gauge, "Kube lease renew time.",
Help: "Kube lease renew time.", metric.Gauge,
GenerateFunc: wrapLeaseFunc(func(l *coordinationv1.Lease) *metric.Family { "",
wrapLeaseFunc(func(l *coordinationv1.Lease) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !l.Spec.RenewTime.IsZero() { if !l.Spec.RenewTime.IsZero() {
@ -84,7 +86,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -34,11 +34,12 @@ var (
descLimitRangeLabelsDefaultLabels = []string{"namespace", "limitrange"} descLimitRangeLabelsDefaultLabels = []string{"namespace", "limitrange"}
limitRangeMetricFamilies = []generator.FamilyGenerator{ limitRangeMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_limitrange", "kube_limitrange",
Type: metric.Gauge, "Information about limit range.",
Help: "Information about limit range.", metric.Gauge,
GenerateFunc: wrapLimitRangeFunc(func(r *v1.LimitRange) *metric.Family { "",
wrapLimitRangeFunc(func(r *v1.LimitRange) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
rawLimitRanges := r.Spec.Limits rawLimitRanges := r.Spec.Limits
@ -87,12 +88,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_limitrange_created", "kube_limitrange_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapLimitRangeFunc(func(r *v1.LimitRange) *metric.Family { "",
wrapLimitRangeFunc(func(r *v1.LimitRange) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !r.CreationTimestamp.IsZero() { if !r.CreationTimestamp.IsZero() {
@ -106,7 +108,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -35,11 +35,12 @@ var (
descMutatingWebhookConfigurationDefaultLabels = []string{"namespace", "mutatingwebhookconfiguration"} descMutatingWebhookConfigurationDefaultLabels = []string{"namespace", "mutatingwebhookconfiguration"}
mutatingWebhookConfigurationMetricFamilies = []generator.FamilyGenerator{ mutatingWebhookConfigurationMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_mutatingwebhookconfiguration_info", "kube_mutatingwebhookconfiguration_info",
Type: metric.Gauge, "Information about the MutatingWebhookConfiguration.",
Help: "Information about the MutatingWebhookConfiguration.", metric.Gauge,
GenerateFunc: wrapMutatingWebhookConfigurationFunc(func(mwc *admissionregistrationv1.MutatingWebhookConfiguration) *metric.Family { "",
wrapMutatingWebhookConfigurationFunc(func(mwc *admissionregistrationv1.MutatingWebhookConfiguration) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -48,12 +49,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_mutatingwebhookconfiguration_created", "kube_mutatingwebhookconfiguration_created",
Type: metric.Gauge, "Unix creation timestamp.",
Help: "Unix creation timestamp.", metric.Gauge,
GenerateFunc: wrapMutatingWebhookConfigurationFunc(func(mwc *admissionregistrationv1.MutatingWebhookConfiguration) *metric.Family { "",
wrapMutatingWebhookConfigurationFunc(func(mwc *admissionregistrationv1.MutatingWebhookConfiguration) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !mwc.CreationTimestamp.IsZero() { if !mwc.CreationTimestamp.IsZero() {
@ -65,17 +67,18 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_mutatingwebhookconfiguration_metadata_resource_version", "kube_mutatingwebhookconfiguration_metadata_resource_version",
Type: metric.Gauge, "Resource version representing a specific version of the MutatingWebhookConfiguration.",
Help: "Resource version representing a specific version of the MutatingWebhookConfiguration.", metric.Gauge,
GenerateFunc: wrapMutatingWebhookConfigurationFunc(func(mwc *admissionregistrationv1.MutatingWebhookConfiguration) *metric.Family { "",
wrapMutatingWebhookConfigurationFunc(func(mwc *admissionregistrationv1.MutatingWebhookConfiguration) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: resourceVersionMetric(mwc.ObjectMeta.ResourceVersion), Metrics: resourceVersionMetric(mwc.ObjectMeta.ResourceVersion),
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descNamespaceLabelsDefaultLabels = []string{"namespace"} descNamespaceLabelsDefaultLabels = []string{"namespace"}
namespaceMetricFamilies = []generator.FamilyGenerator{ namespaceMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_namespace_created", "kube_namespace_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family { "",
wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !n.CreationTimestamp.IsZero() { if !n.CreationTimestamp.IsZero() {
ms = append(ms, &metric.Metric{ ms = append(ms, &metric.Metric{
@ -52,12 +53,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descNamespaceLabelsName, descNamespaceLabelsName,
Type: metric.Gauge, descNamespaceLabelsHelp,
Help: descNamespaceLabelsHelp, metric.Gauge,
GenerateFunc: wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family { "",
wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(n.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(n.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -69,12 +71,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_namespace_status_phase", "kube_namespace_status_phase",
Type: metric.Gauge, "kubernetes namespace status phase.",
Help: "kubernetes namespace status phase.", metric.Gauge,
GenerateFunc: wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family { "",
wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family {
ms := []*metric.Metric{ ms := []*metric.Metric{
{ {
LabelValues: []string{string(v1.NamespaceActive)}, LabelValues: []string{string(v1.NamespaceActive)},
@ -94,12 +97,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_namespace_status_condition", "kube_namespace_status_condition",
Type: metric.Gauge, "The condition of a namespace.",
Help: "The condition of a namespace.", metric.Gauge,
GenerateFunc: wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family { "",
wrapNamespaceFunc(func(n *v1.Namespace) *metric.Family {
ms := make([]*metric.Metric, len(n.Status.Conditions)*len(conditionStatuses)) ms := make([]*metric.Metric, len(n.Status.Conditions)*len(conditionStatuses))
for i, c := range n.Status.Conditions { for i, c := range n.Status.Conditions {
conditionMetrics := addConditionMetrics(c.Status) conditionMetrics := addConditionMetrics(c.Status)
@ -118,7 +122,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -34,11 +34,12 @@ var (
descNetworkPolicyLabelsDefaultLabels = []string{"namespace", "networkpolicy"} descNetworkPolicyLabelsDefaultLabels = []string{"namespace", "networkpolicy"}
networkpolicyMetricFamilies = []generator.FamilyGenerator{ networkpolicyMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_networkpolicy_created", "kube_networkpolicy_created",
Type: metric.Gauge, "Unix creation timestamp of network policy",
Help: "Unix creation timestamp of network policy", metric.Gauge,
GenerateFunc: wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family { "",
wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -49,12 +50,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_networkpolicy_labels", "kube_networkpolicy_labels",
Type: metric.Gauge, "Kubernetes labels converted to Prometheus labels",
Help: "Kubernetes labels converted to Prometheus labels", metric.Gauge,
GenerateFunc: wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family { "",
wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(n.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(n.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -66,12 +68,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_networkpolicy_spec_ingress_rules", "kube_networkpolicy_spec_ingress_rules",
Type: metric.Gauge, "Number of ingress rules on the networkpolicy",
Help: "Number of ingress rules on the networkpolicy", metric.Gauge,
GenerateFunc: wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family { "",
wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -82,12 +85,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_networkpolicy_spec_egress_rules", "kube_networkpolicy_spec_egress_rules",
Type: metric.Gauge, "Number of egress rules on the networkpolicy",
Help: "Number of egress rules on the networkpolicy", metric.Gauge,
GenerateFunc: wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family { "",
wrapNetworkPolicyFunc(func(n *networkingv1.NetworkPolicy) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -98,7 +102,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -38,11 +38,12 @@ var (
descNodeLabelsDefaultLabels = []string{"node"} descNodeLabelsDefaultLabels = []string{"node"}
nodeMetricFamilies = []generator.FamilyGenerator{ nodeMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_node_info", "kube_node_info",
Type: metric.Gauge, "Information about a cluster node.",
Help: "Information about a cluster node.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
labelKeys := []string{ labelKeys := []string{
"kernel_version", "kernel_version",
"os_image", "os_image",
@ -81,12 +82,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_node_created", "kube_node_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !n.CreationTimestamp.IsZero() { if !n.CreationTimestamp.IsZero() {
@ -100,12 +102,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descNodeLabelsName, descNodeLabelsName,
Type: metric.Gauge, descNodeLabelsHelp,
Help: descNodeLabelsHelp, metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(n.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(n.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -117,12 +120,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_node_role", "kube_node_role",
Type: metric.Gauge, "The role of a cluster node.",
Help: "The role of a cluster node.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
const prefix = "node-role.kubernetes.io/" const prefix = "node-role.kubernetes.io/"
ms := []*metric.Metric{} ms := []*metric.Metric{}
for lbl := range n.Labels { for lbl := range n.Labels {
@ -138,12 +142,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_node_spec_unschedulable", "kube_node_spec_unschedulable",
Type: metric.Gauge, "Whether a node can schedule new pods.",
Help: "Whether a node can schedule new pods.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -152,12 +157,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_node_spec_taint", "kube_node_spec_taint",
Type: metric.Gauge, "The taint of a cluster node.",
Help: "The taint of a cluster node.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
ms := make([]*metric.Metric, len(n.Spec.Taints)) ms := make([]*metric.Metric, len(n.Spec.Taints))
for i, taint := range n.Spec.Taints { for i, taint := range n.Spec.Taints {
@ -175,16 +181,17 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
// This all-in-one metric family contains all conditions for extensibility. // This all-in-one metric family contains all conditions for extensibility.
// Third party plugin may report customized condition for cluster node // Third party plugin may report customized condition for cluster node
// (e.g. node-problem-detector), and Kubernetes may add new core // (e.g. node-problem-detector), and Kubernetes may add new core
// conditions in future. // conditions in future.
{ *generator.NewFamilyGenerator(
Name: "kube_node_status_condition", "kube_node_status_condition",
Type: metric.Gauge, "The condition of a cluster node.",
Help: "The condition of a cluster node.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
ms := make([]*metric.Metric, len(n.Status.Conditions)*len(conditionStatuses)) ms := make([]*metric.Metric, len(n.Status.Conditions)*len(conditionStatuses))
// Collect node conditions and while default to false. // Collect node conditions and while default to false.
@ -205,12 +212,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_node_status_capacity", "kube_node_status_capacity",
Type: metric.Gauge, "The capacity for different resources of a node.",
Help: "The capacity for different resources of a node.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
capacity := n.Status.Capacity capacity := n.Status.Capacity
@ -283,12 +291,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_node_status_allocatable", "kube_node_status_allocatable",
Type: metric.Gauge, "The allocatable for different resources of a node that are available for scheduling.",
Help: "The allocatable for different resources of a node that are available for scheduling.", metric.Gauge,
GenerateFunc: wrapNodeFunc(func(n *v1.Node) *metric.Family { "",
wrapNodeFunc(func(n *v1.Node) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
allocatable := n.Status.Allocatable allocatable := n.Status.Allocatable
@ -362,7 +371,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descPersistentVolumeLabelsDefaultLabels = []string{"persistentvolume"} descPersistentVolumeLabelsDefaultLabels = []string{"persistentvolume"}
persistentVolumeMetricFamilies = []generator.FamilyGenerator{ persistentVolumeMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descPersistentVolumeLabelsName, descPersistentVolumeLabelsName,
Type: metric.Gauge, descPersistentVolumeLabelsHelp,
Help: descPersistentVolumeLabelsHelp, metric.Gauge,
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family { "",
wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(p.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(p.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -52,12 +53,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolume_status_phase", "kube_persistentvolume_status_phase",
Type: metric.Gauge, "The phase indicates if a volume is available, bound to a claim, or released by a claim.",
Help: "The phase indicates if a volume is available, bound to a claim, or released by a claim.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family { "",
wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
phase := p.Status.Phase phase := p.Status.Phase
if phase == "" { if phase == "" {
@ -98,12 +100,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolume_info", "kube_persistentvolume_info",
Type: metric.Gauge, "Information about persistentvolume.",
Help: "Information about persistentvolume.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family { "",
wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
var gcePDDiskName, ebsVolumeID string var gcePDDiskName, ebsVolumeID string
switch { switch {
case p.Spec.PersistentVolumeSource.GCEPersistentDisk != nil: case p.Spec.PersistentVolumeSource.GCEPersistentDisk != nil:
@ -130,12 +133,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolume_capacity_bytes", "kube_persistentvolume_capacity_bytes",
Type: metric.Gauge, "Persistentvolume capacity in bytes.",
Help: "Persistentvolume capacity in bytes.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family { "",
wrapPersistentVolumeFunc(func(p *v1.PersistentVolume) *metric.Family {
storage := p.Spec.Capacity[v1.ResourceStorage] storage := p.Spec.Capacity[v1.ResourceStorage]
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -145,7 +149,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descPersistentVolumeClaimLabelsDefaultLabels = []string{"namespace", "persistentvolumeclaim"} descPersistentVolumeClaimLabelsDefaultLabels = []string{"namespace", "persistentvolumeclaim"}
persistentVolumeClaimMetricFamilies = []generator.FamilyGenerator{ persistentVolumeClaimMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descPersistentVolumeClaimLabelsName, descPersistentVolumeClaimLabelsName,
Type: metric.Gauge, descPersistentVolumeClaimLabelsHelp,
Help: descPersistentVolumeClaimLabelsHelp, metric.Gauge,
GenerateFunc: wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family { "",
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(p.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(p.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -52,12 +53,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolumeclaim_info", "kube_persistentvolumeclaim_info",
Type: metric.Gauge, "Information about persistent volume claim.",
Help: "Information about persistent volume claim.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family { "",
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
storageClassName := getPersistentVolumeClaimClass(p) storageClassName := getPersistentVolumeClaimClass(p)
volumeName := p.Spec.VolumeName volumeName := p.Spec.VolumeName
return &metric.Family{ return &metric.Family{
@ -70,12 +72,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolumeclaim_status_phase", "kube_persistentvolumeclaim_status_phase",
Type: metric.Gauge, "The phase the persistent volume claim is currently in.",
Help: "The phase the persistent volume claim is currently in.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family { "",
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
phase := p.Status.Phase phase := p.Status.Phase
if phase == "" { if phase == "" {
@ -108,12 +111,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolumeclaim_resource_requests_storage_bytes", "kube_persistentvolumeclaim_resource_requests_storage_bytes",
Type: metric.Gauge, "The capacity of storage requested by the persistent volume claim.",
Help: "The capacity of storage requested by the persistent volume claim.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family { "",
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if storage, ok := p.Spec.Resources.Requests[v1.ResourceStorage]; ok { if storage, ok := p.Spec.Resources.Requests[v1.ResourceStorage]; ok {
@ -126,12 +130,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolumeclaim_access_mode", "kube_persistentvolumeclaim_access_mode",
Type: metric.Gauge, "The access mode(s) specified by the persistent volume claim.",
Help: "The access mode(s) specified by the persistent volume claim.", metric.Gauge,
GenerateFunc: wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family { "",
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
ms := make([]*metric.Metric, len(p.Spec.AccessModes)) ms := make([]*metric.Metric, len(p.Spec.AccessModes))
for i, mode := range p.Spec.AccessModes { for i, mode := range p.Spec.AccessModes {
@ -146,12 +151,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_persistentvolumeclaim_status_condition", "kube_persistentvolumeclaim_status_condition",
Help: "Information about status of different conditions of persistent volume claim.", "Information about status of different conditions of persistent volume claim.",
Type: metric.Gauge, metric.Gauge,
GenerateFunc: wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family { "",
wrapPersistentVolumeClaimFunc(func(p *v1.PersistentVolumeClaim) *metric.Family {
ms := make([]*metric.Metric, len(p.Status.Conditions)*len(conditionStatuses)) ms := make([]*metric.Metric, len(p.Status.Conditions)*len(conditionStatuses))
for i, c := range p.Status.Conditions { for i, c := range p.Status.Conditions {
@ -171,7 +177,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

File diff suppressed because it is too large Load Diff

View File

@ -34,11 +34,12 @@ var (
descPodDisruptionBudgetLabelsDefaultLabels = []string{"namespace", "poddisruptionbudget"} descPodDisruptionBudgetLabelsDefaultLabels = []string{"namespace", "poddisruptionbudget"}
podDisruptionBudgetMetricFamilies = []generator.FamilyGenerator{ podDisruptionBudgetMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_poddisruptionbudget_created", "kube_poddisruptionbudget_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family { "",
wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !p.CreationTimestamp.IsZero() { if !p.CreationTimestamp.IsZero() {
@ -51,12 +52,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_poddisruptionbudget_status_current_healthy", "kube_poddisruptionbudget_status_current_healthy",
Type: metric.Gauge, "Current number of healthy pods",
Help: "Current number of healthy pods", metric.Gauge,
GenerateFunc: wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family { "",
wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -65,12 +67,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_poddisruptionbudget_status_desired_healthy", "kube_poddisruptionbudget_status_desired_healthy",
Type: metric.Gauge, "Minimum desired number of healthy pods",
Help: "Minimum desired number of healthy pods", metric.Gauge,
GenerateFunc: wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family { "",
wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -79,12 +82,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_poddisruptionbudget_status_pod_disruptions_allowed", "kube_poddisruptionbudget_status_pod_disruptions_allowed",
Type: metric.Gauge, "Number of pod disruptions that are currently allowed",
Help: "Number of pod disruptions that are currently allowed", metric.Gauge,
GenerateFunc: wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family { "",
wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -93,12 +97,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_poddisruptionbudget_status_expected_pods", "kube_poddisruptionbudget_status_expected_pods",
Type: metric.Gauge, "Total number of pods counted by this disruption budget",
Help: "Total number of pods counted by this disruption budget", metric.Gauge,
GenerateFunc: wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family { "",
wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -107,12 +112,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_poddisruptionbudget_status_observed_generation", "kube_poddisruptionbudget_status_observed_generation",
Type: metric.Gauge, "Most recent generation observed when updating this PDB status",
Help: "Most recent generation observed when updating this PDB status", metric.Gauge,
GenerateFunc: wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family { "",
wrapPodDisruptionBudgetFunc(func(p *v1beta1.PodDisruptionBudget) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -121,7 +127,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -37,11 +37,12 @@ var (
descReplicaSetLabelsHelp = "Kubernetes labels converted to Prometheus labels." descReplicaSetLabelsHelp = "Kubernetes labels converted to Prometheus labels."
replicaSetMetricFamilies = []generator.FamilyGenerator{ replicaSetMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_created", "kube_replicaset_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !r.CreationTimestamp.IsZero() { if !r.CreationTimestamp.IsZero() {
@ -55,12 +56,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_status_replicas", "kube_replicaset_status_replicas",
Type: metric.Gauge, "The number of replicas per ReplicaSet.",
Help: "The number of replicas per ReplicaSet.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -69,12 +71,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_status_fully_labeled_replicas", "kube_replicaset_status_fully_labeled_replicas",
Type: metric.Gauge, "The number of fully labeled replicas per ReplicaSet.",
Help: "The number of fully labeled replicas per ReplicaSet.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -83,12 +86,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_status_ready_replicas", "kube_replicaset_status_ready_replicas",
Type: metric.Gauge, "The number of ready replicas per ReplicaSet.",
Help: "The number of ready replicas per ReplicaSet.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -97,12 +101,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_status_observed_generation", "kube_replicaset_status_observed_generation",
Type: metric.Gauge, "The generation observed by the ReplicaSet controller.",
Help: "The generation observed by the ReplicaSet controller.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -111,12 +116,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_spec_replicas", "kube_replicaset_spec_replicas",
Type: metric.Gauge, "Number of desired pods for a ReplicaSet.",
Help: "Number of desired pods for a ReplicaSet.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if r.Spec.Replicas != nil { if r.Spec.Replicas != nil {
@ -129,12 +135,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_metadata_generation", "kube_replicaset_metadata_generation",
Type: metric.Gauge, "Sequence number representing a specific generation of the desired state.",
Help: "Sequence number representing a specific generation of the desired state.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -143,12 +150,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicaset_owner", "kube_replicaset_owner",
Type: metric.Gauge, "Information about the ReplicaSet's owner.",
Help: "Information about the ReplicaSet's owner.", metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(r *v1.ReplicaSet) *metric.Family {
owners := r.GetOwnerReferences() owners := r.GetOwnerReferences()
if len(owners) == 0 { if len(owners) == 0 {
@ -186,12 +194,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descReplicaSetLabelsName, descReplicaSetLabelsName,
Type: metric.Gauge, descReplicaSetLabelsHelp,
Help: descReplicaSetLabelsHelp, metric.Gauge,
GenerateFunc: wrapReplicaSetFunc(func(d *v1.ReplicaSet) *metric.Family { "",
wrapReplicaSetFunc(func(d *v1.ReplicaSet) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(d.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -203,7 +212,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -35,11 +35,12 @@ var (
descReplicationControllerLabelsDefaultLabels = []string{"namespace", "replicationcontroller"} descReplicationControllerLabelsDefaultLabels = []string{"namespace", "replicationcontroller"}
replicationControllerMetricFamilies = []generator.FamilyGenerator{ replicationControllerMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_created", "kube_replicationcontroller_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !r.CreationTimestamp.IsZero() { if !r.CreationTimestamp.IsZero() {
@ -52,12 +53,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_status_replicas", "kube_replicationcontroller_status_replicas",
Type: metric.Gauge, "The number of replicas per ReplicationController.",
Help: "The number of replicas per ReplicationController.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -66,12 +68,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_status_fully_labeled_replicas", "kube_replicationcontroller_status_fully_labeled_replicas",
Type: metric.Gauge, "The number of fully labeled replicas per ReplicationController.",
Help: "The number of fully labeled replicas per ReplicationController.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -80,12 +83,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_status_ready_replicas", "kube_replicationcontroller_status_ready_replicas",
Type: metric.Gauge, "The number of ready replicas per ReplicationController.",
Help: "The number of ready replicas per ReplicationController.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -94,12 +98,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_status_available_replicas", "kube_replicationcontroller_status_available_replicas",
Type: metric.Gauge, "The number of available replicas per ReplicationController.",
Help: "The number of available replicas per ReplicationController.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -108,12 +113,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_status_observed_generation", "kube_replicationcontroller_status_observed_generation",
Type: metric.Gauge, "The generation observed by the ReplicationController controller.",
Help: "The generation observed by the ReplicationController controller.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -122,12 +128,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_spec_replicas", "kube_replicationcontroller_spec_replicas",
Type: metric.Gauge, "Number of desired pods for a ReplicationController.",
Help: "Number of desired pods for a ReplicationController.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if r.Spec.Replicas != nil { if r.Spec.Replicas != nil {
@ -140,12 +147,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_metadata_generation", "kube_replicationcontroller_metadata_generation",
Type: metric.Gauge, "Sequence number representing a specific generation of the desired state.",
Help: "Sequence number representing a specific generation of the desired state.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -154,12 +162,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_replicationcontroller_owner", "kube_replicationcontroller_owner",
Type: metric.Gauge, "Information about the ReplicationController's owner.",
Help: "Information about the ReplicationController's owner.", metric.Gauge,
GenerateFunc: wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family { "",
wrapReplicationControllerFunc(func(r *v1.ReplicationController) *metric.Family {
labelKeys := []string{"owner_kind", "owner_name", "owner_is_controller"} labelKeys := []string{"owner_kind", "owner_name", "owner_is_controller"}
ms := []*metric.Metric{} ms := []*metric.Metric{}
@ -189,7 +198,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -34,11 +34,12 @@ var (
descResourceQuotaLabelsDefaultLabels = []string{"namespace", "resourcequota"} descResourceQuotaLabelsDefaultLabels = []string{"namespace", "resourcequota"}
resourceQuotaMetricFamilies = []generator.FamilyGenerator{ resourceQuotaMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_resourcequota_created", "kube_resourcequota_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapResourceQuotaFunc(func(r *v1.ResourceQuota) *metric.Family { "",
wrapResourceQuotaFunc(func(r *v1.ResourceQuota) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !r.CreationTimestamp.IsZero() { if !r.CreationTimestamp.IsZero() {
@ -52,12 +53,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_resourcequota", "kube_resourcequota",
Type: metric.Gauge, "Information about resource quota.",
Help: "Information about resource quota.", metric.Gauge,
GenerateFunc: wrapResourceQuotaFunc(func(r *v1.ResourceQuota) *metric.Family { "",
wrapResourceQuotaFunc(func(r *v1.ResourceQuota) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
for res, qty := range r.Status.Hard { for res, qty := range r.Status.Hard {
@ -81,7 +83,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descSecretLabelsDefaultLabels = []string{"namespace", "secret"} descSecretLabelsDefaultLabels = []string{"namespace", "secret"}
secretMetricFamilies = []generator.FamilyGenerator{ secretMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_secret_info", "kube_secret_info",
Type: metric.Gauge, "Information about secret.",
Help: "Information about secret.", metric.Gauge,
GenerateFunc: wrapSecretFunc(func(s *v1.Secret) *metric.Family { "",
wrapSecretFunc(func(s *v1.Secret) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -49,12 +50,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_secret_type", "kube_secret_type",
Type: metric.Gauge, "Type about secret.",
Help: "Type about secret.", metric.Gauge,
GenerateFunc: wrapSecretFunc(func(s *v1.Secret) *metric.Family { "",
wrapSecretFunc(func(s *v1.Secret) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -65,12 +67,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descSecretLabelsName, descSecretLabelsName,
Type: metric.Gauge, descSecretLabelsHelp,
Help: descSecretLabelsHelp, metric.Gauge,
GenerateFunc: wrapSecretFunc(func(s *v1.Secret) *metric.Family { "",
wrapSecretFunc(func(s *v1.Secret) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -83,12 +86,13 @@ var (
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_secret_created", "kube_secret_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapSecretFunc(func(s *v1.Secret) *metric.Family { "",
wrapSecretFunc(func(s *v1.Secret) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !s.CreationTimestamp.IsZero() { if !s.CreationTimestamp.IsZero() {
@ -101,17 +105,18 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_secret_metadata_resource_version", "kube_secret_metadata_resource_version",
Type: metric.Gauge, "Resource version representing a specific version of secret.",
Help: "Resource version representing a specific version of secret.", metric.Gauge,
GenerateFunc: wrapSecretFunc(func(s *v1.Secret) *metric.Family { "",
wrapSecretFunc(func(s *v1.Secret) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: resourceVersionMetric(s.ObjectMeta.ResourceVersion), Metrics: resourceVersionMetric(s.ObjectMeta.ResourceVersion),
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descServiceLabelsDefaultLabels = []string{"namespace", "service"} descServiceLabelsDefaultLabels = []string{"namespace", "service"}
serviceMetricFamilies = []generator.FamilyGenerator{ serviceMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_service_info", "kube_service_info",
Type: metric.Gauge, "Information about service.",
Help: "Information about service.", metric.Gauge,
GenerateFunc: wrapSvcFunc(func(s *v1.Service) *metric.Family { "",
wrapSvcFunc(func(s *v1.Service) *metric.Family {
m := metric.Metric{ m := metric.Metric{
LabelKeys: []string{"cluster_ip", "external_name", "load_balancer_ip"}, LabelKeys: []string{"cluster_ip", "external_name", "load_balancer_ip"},
LabelValues: []string{s.Spec.ClusterIP, s.Spec.ExternalName, s.Spec.LoadBalancerIP}, LabelValues: []string{s.Spec.ClusterIP, s.Spec.ExternalName, s.Spec.LoadBalancerIP},
@ -48,12 +49,13 @@ var (
} }
return &metric.Family{Metrics: []*metric.Metric{&m}} return &metric.Family{Metrics: []*metric.Metric{&m}}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_service_created", "kube_service_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapSvcFunc(func(s *v1.Service) *metric.Family { "",
wrapSvcFunc(func(s *v1.Service) *metric.Family {
if !s.CreationTimestamp.IsZero() { if !s.CreationTimestamp.IsZero() {
m := metric.Metric{ m := metric.Metric{
LabelKeys: nil, LabelKeys: nil,
@ -64,12 +66,13 @@ var (
} }
return &metric.Family{Metrics: []*metric.Metric{}} return &metric.Family{Metrics: []*metric.Metric{}}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_service_spec_type", "kube_service_spec_type",
Type: metric.Gauge, "Type about service.",
Help: "Type about service.", metric.Gauge,
GenerateFunc: wrapSvcFunc(func(s *v1.Service) *metric.Family { "",
wrapSvcFunc(func(s *v1.Service) *metric.Family {
m := metric.Metric{ m := metric.Metric{
LabelKeys: []string{"type"}, LabelKeys: []string{"type"},
@ -78,12 +81,13 @@ var (
} }
return &metric.Family{Metrics: []*metric.Metric{&m}} return &metric.Family{Metrics: []*metric.Metric{&m}}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descServiceLabelsName, descServiceLabelsName,
Type: metric.Gauge, descServiceLabelsHelp,
Help: descServiceLabelsHelp, metric.Gauge,
GenerateFunc: wrapSvcFunc(func(s *v1.Service) *metric.Family { "",
wrapSvcFunc(func(s *v1.Service) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels)
m := metric.Metric{ m := metric.Metric{
@ -93,12 +97,13 @@ var (
} }
return &metric.Family{Metrics: []*metric.Metric{&m}} return &metric.Family{Metrics: []*metric.Metric{&m}}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_service_spec_external_ip", "kube_service_spec_external_ip",
Type: metric.Gauge, "Service external ips. One series for each ip",
Help: "Service external ips. One series for each ip", metric.Gauge,
GenerateFunc: wrapSvcFunc(func(s *v1.Service) *metric.Family { "",
wrapSvcFunc(func(s *v1.Service) *metric.Family {
if len(s.Spec.ExternalIPs) == 0 { if len(s.Spec.ExternalIPs) == 0 {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{}, Metrics: []*metric.Metric{},
@ -119,12 +124,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_service_status_load_balancer_ingress", "kube_service_status_load_balancer_ingress",
Type: metric.Gauge, "Service load balancer ingress status",
Help: "Service load balancer ingress status", metric.Gauge,
GenerateFunc: wrapSvcFunc(func(s *v1.Service) *metric.Family { "",
wrapSvcFunc(func(s *v1.Service) *metric.Family {
if len(s.Status.LoadBalancer.Ingress) == 0 { if len(s.Status.LoadBalancer.Ingress) == 0 {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{}, Metrics: []*metric.Metric{},
@ -145,7 +151,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descStatefulSetLabelsDefaultLabels = []string{"namespace", "statefulset"} descStatefulSetLabelsDefaultLabels = []string{"namespace", "statefulset"}
statefulSetMetricFamilies = []generator.FamilyGenerator{ statefulSetMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_created", "kube_statefulset_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !s.CreationTimestamp.IsZero() { if !s.CreationTimestamp.IsZero() {
@ -53,12 +54,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_replicas", "kube_statefulset_status_replicas",
Type: metric.Gauge, "The number of replicas per StatefulSet.",
Help: "The number of replicas per StatefulSet.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -67,12 +69,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_replicas_current", "kube_statefulset_status_replicas_current",
Type: metric.Gauge, "The number of current replicas per StatefulSet.",
Help: "The number of current replicas per StatefulSet.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -81,12 +84,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_replicas_ready", "kube_statefulset_status_replicas_ready",
Type: metric.Gauge, "The number of ready replicas per StatefulSet.",
Help: "The number of ready replicas per StatefulSet.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -95,12 +99,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_replicas_updated", "kube_statefulset_status_replicas_updated",
Type: metric.Gauge, "The number of updated replicas per StatefulSet.",
Help: "The number of updated replicas per StatefulSet.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -109,12 +114,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_observed_generation", "kube_statefulset_status_observed_generation",
Type: metric.Gauge, "The generation observed by the StatefulSet controller.",
Help: "The generation observed by the StatefulSet controller.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -123,12 +129,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_replicas", "kube_statefulset_replicas",
Type: metric.Gauge, "Number of desired pods for a StatefulSet.",
Help: "Number of desired pods for a StatefulSet.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if s.Spec.Replicas != nil { if s.Spec.Replicas != nil {
@ -141,12 +148,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_metadata_generation", "kube_statefulset_metadata_generation",
Type: metric.Gauge, "Sequence number representing a specific generation of the desired state for the StatefulSet.",
Help: "Sequence number representing a specific generation of the desired state for the StatefulSet.", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -155,12 +163,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descStatefulSetLabelsName, descStatefulSetLabelsName,
Type: metric.Gauge, descStatefulSetLabelsHelp,
Help: descStatefulSetLabelsHelp, metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -172,12 +181,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_current_revision", "kube_statefulset_status_current_revision",
Type: metric.Gauge, "Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
Help: "Indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -188,12 +198,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_statefulset_status_update_revision", "kube_statefulset_status_update_revision",
Type: metric.Gauge, "Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
Help: "Indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", metric.Gauge,
GenerateFunc: wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family { "",
wrapStatefulSetFunc(func(s *v1.StatefulSet) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -204,7 +215,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
defaultVolumeBindingMode = storagev1.VolumeBindingImmediate defaultVolumeBindingMode = storagev1.VolumeBindingImmediate
storageClassMetricFamilies = []generator.FamilyGenerator{ storageClassMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_storageclass_info", "kube_storageclass_info",
Type: metric.Gauge, "Information about storageclass.",
Help: "Information about storageclass.", metric.Gauge,
GenerateFunc: wrapStorageClassFunc(func(s *storagev1.StorageClass) *metric.Family { "",
wrapStorageClassFunc(func(s *storagev1.StorageClass) *metric.Family {
// Add default values if missing. // Add default values if missing.
if s.ReclaimPolicy == nil { if s.ReclaimPolicy == nil {
@ -58,12 +59,13 @@ var (
} }
return &metric.Family{Metrics: []*metric.Metric{&m}} return &metric.Family{Metrics: []*metric.Metric{&m}}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_storageclass_created", "kube_storageclass_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapStorageClassFunc(func(s *storagev1.StorageClass) *metric.Family { "",
wrapStorageClassFunc(func(s *storagev1.StorageClass) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !s.CreationTimestamp.IsZero() { if !s.CreationTimestamp.IsZero() {
ms = append(ms, &metric.Metric{ ms = append(ms, &metric.Metric{
@ -74,12 +76,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: descStorageClassLabelsName, descStorageClassLabelsName,
Type: metric.Gauge, descStorageClassLabelsHelp,
Help: descStorageClassLabelsHelp, metric.Gauge,
GenerateFunc: wrapStorageClassFunc(func(s *storagev1.StorageClass) *metric.Family { "",
wrapStorageClassFunc(func(s *storagev1.StorageClass) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(s.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -91,7 +94,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -35,11 +35,12 @@ var (
descValidatingWebhookConfigurationDefaultLabels = []string{"namespace", "validatingwebhookconfiguration"} descValidatingWebhookConfigurationDefaultLabels = []string{"namespace", "validatingwebhookconfiguration"}
validatingWebhookConfigurationMetricFamilies = []generator.FamilyGenerator{ validatingWebhookConfigurationMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: "kube_validatingwebhookconfiguration_info", "kube_validatingwebhookconfiguration_info",
Type: metric.Gauge, "Information about the ValidatingWebhookConfiguration.",
Help: "Information about the ValidatingWebhookConfiguration.", metric.Gauge,
GenerateFunc: wrapValidatingWebhookConfigurationFunc(func(vwc *admissionregistrationv1.ValidatingWebhookConfiguration) *metric.Family { "",
wrapValidatingWebhookConfigurationFunc(func(vwc *admissionregistrationv1.ValidatingWebhookConfiguration) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -48,12 +49,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_validatingwebhookconfiguration_created", "kube_validatingwebhookconfiguration_created",
Type: metric.Gauge, "Unix creation timestamp.",
Help: "Unix creation timestamp.", metric.Gauge,
GenerateFunc: wrapValidatingWebhookConfigurationFunc(func(vwc *admissionregistrationv1.ValidatingWebhookConfiguration) *metric.Family { "",
wrapValidatingWebhookConfigurationFunc(func(vwc *admissionregistrationv1.ValidatingWebhookConfiguration) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if !vwc.CreationTimestamp.IsZero() { if !vwc.CreationTimestamp.IsZero() {
@ -65,17 +67,18 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_validatingwebhookconfiguration_metadata_resource_version", "kube_validatingwebhookconfiguration_metadata_resource_version",
Type: metric.Gauge, "Resource version representing a specific version of the ValidatingWebhookConfiguration.",
Help: "Resource version representing a specific version of the ValidatingWebhookConfiguration.", metric.Gauge,
GenerateFunc: wrapValidatingWebhookConfigurationFunc(func(vwc *admissionregistrationv1.ValidatingWebhookConfiguration) *metric.Family { "",
wrapValidatingWebhookConfigurationFunc(func(vwc *admissionregistrationv1.ValidatingWebhookConfiguration) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: resourceVersionMetric(vwc.ObjectMeta.ResourceVersion), Metrics: resourceVersionMetric(vwc.ObjectMeta.ResourceVersion),
} }
}), }),
}, ),
} }
) )

View File

@ -39,11 +39,12 @@ var (
descVerticalPodAutoscalerLabelsDefaultLabels = []string{"namespace", "verticalpodautoscaler", "target_api_version", "target_kind", "target_name"} descVerticalPodAutoscalerLabelsDefaultLabels = []string{"namespace", "verticalpodautoscaler", "target_api_version", "target_kind", "target_name"}
vpaMetricFamilies = []generator.FamilyGenerator{ vpaMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descVerticalPodAutoscalerLabelsName, descVerticalPodAutoscalerLabelsName,
Type: metric.Gauge, descVerticalPodAutoscalerLabelsHelp,
Help: descVerticalPodAutoscalerLabelsHelp, metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(a.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(a.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -55,12 +56,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_spec_updatepolicy_updatemode", "kube_verticalpodautoscaler_spec_updatepolicy_updatemode",
Type: metric.Gauge, "Update mode of the VerticalPodAutoscaler.",
Help: "Update mode of the VerticalPodAutoscaler.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Spec.UpdatePolicy == nil || a.Spec.UpdatePolicy.UpdateMode == nil { if a.Spec.UpdatePolicy == nil || a.Spec.UpdatePolicy.UpdateMode == nil {
@ -92,12 +94,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed", "kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_minallowed",
Type: metric.Gauge, "Minimum resources the VerticalPodAutoscaler can set for containers matching the name.",
Help: "Minimum resources the VerticalPodAutoscaler can set for containers matching the name.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Spec.ResourcePolicy == nil || a.Spec.ResourcePolicy.ContainerPolicies == nil { if a.Spec.ResourcePolicy == nil || a.Spec.ResourcePolicy.ContainerPolicies == nil {
return &metric.Family{ return &metric.Family{
@ -113,12 +116,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed", "kube_verticalpodautoscaler_spec_resourcepolicy_container_policies_maxallowed",
Type: metric.Gauge, "Maximum resources the VerticalPodAutoscaler can set for containers matching the name.",
Help: "Maximum resources the VerticalPodAutoscaler can set for containers matching the name.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Spec.ResourcePolicy == nil || a.Spec.ResourcePolicy.ContainerPolicies == nil { if a.Spec.ResourcePolicy == nil || a.Spec.ResourcePolicy.ContainerPolicies == nil {
return &metric.Family{ return &metric.Family{
@ -133,12 +137,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound", "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_lowerbound",
Type: metric.Gauge, "Minimum resources the container can use before the VerticalPodAutoscaler updater evicts it.",
Help: "Minimum resources the container can use before the VerticalPodAutoscaler updater evicts it.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil { if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
return &metric.Family{ return &metric.Family{
@ -153,12 +158,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound", "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_upperbound",
Type: metric.Gauge, "Maximum resources the container can use before the VerticalPodAutoscaler updater evicts it.",
Help: "Maximum resources the container can use before the VerticalPodAutoscaler updater evicts it.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil { if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
return &metric.Family{ return &metric.Family{
@ -173,12 +179,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target", "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_target",
Type: metric.Gauge, "Target resources the VerticalPodAutoscaler recommends for the container.",
Help: "Target resources the VerticalPodAutoscaler recommends for the container.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil { if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
return &metric.Family{ return &metric.Family{
@ -192,12 +199,13 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget", "kube_verticalpodautoscaler_status_recommendation_containerrecommendations_uncappedtarget",
Type: metric.Gauge, "Target resources the VerticalPodAutoscaler recommends for the container ignoring bounds.",
Help: "Target resources the VerticalPodAutoscaler recommends for the container ignoring bounds.", metric.Gauge,
GenerateFunc: wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family { "",
wrapVPAFunc(func(a *autoscaling.VerticalPodAutoscaler) *metric.Family {
ms := []*metric.Metric{} ms := []*metric.Metric{}
if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil { if a.Status.Recommendation == nil || a.Status.Recommendation.ContainerRecommendations == nil {
return &metric.Family{ return &metric.Family{
@ -211,7 +219,7 @@ var (
Metrics: ms, Metrics: ms,
} }
}), }),
}, ),
} }
) )

View File

@ -36,11 +36,12 @@ var (
descVolumeAttachmentLabelsDefaultLabels = []string{"volumeattachment"} descVolumeAttachmentLabelsDefaultLabels = []string{"volumeattachment"}
volumeAttachmentMetricFamilies = []generator.FamilyGenerator{ volumeAttachmentMetricFamilies = []generator.FamilyGenerator{
{ *generator.NewFamilyGenerator(
Name: descVolumeAttachmentLabelsName, descVolumeAttachmentLabelsName,
Type: metric.Gauge, descVolumeAttachmentLabelsHelp,
Help: descVolumeAttachmentLabelsHelp, metric.Gauge,
GenerateFunc: wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { "",
wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family {
labelKeys, labelValues := kubeLabelsToPrometheusLabels(va.Labels) labelKeys, labelValues := kubeLabelsToPrometheusLabels(va.Labels)
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -52,12 +53,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_volumeattachment_info", "kube_volumeattachment_info",
Type: metric.Gauge, "Information about volumeattachment.",
Help: "Information about volumeattachment.", metric.Gauge,
GenerateFunc: wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { "",
wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -68,12 +70,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_volumeattachment_created", "kube_volumeattachment_created",
Type: metric.Gauge, "Unix creation timestamp",
Help: "Unix creation timestamp", metric.Gauge,
GenerateFunc: wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { "",
wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family {
if !va.CreationTimestamp.IsZero() { if !va.CreationTimestamp.IsZero() {
m := metric.Metric{ m := metric.Metric{
LabelKeys: nil, LabelKeys: nil,
@ -84,12 +87,13 @@ var (
} }
return &metric.Family{Metrics: []*metric.Metric{}} return &metric.Family{Metrics: []*metric.Metric{}}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_volumeattachment_spec_source_persistentvolume", "kube_volumeattachment_spec_source_persistentvolume",
Type: metric.Gauge, "PersistentVolume source reference.",
Help: "PersistentVolume source reference.", metric.Gauge,
GenerateFunc: wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { "",
wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family {
if va.Spec.Source.PersistentVolumeName != nil { if va.Spec.Source.PersistentVolumeName != nil {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -103,12 +107,13 @@ var (
} }
return &metric.Family{} return &metric.Family{}
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_volumeattachment_status_attached", "kube_volumeattachment_status_attached",
Type: metric.Gauge, "Information about volumeattachment.",
Help: "Information about volumeattachment.", metric.Gauge,
GenerateFunc: wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { "",
wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family {
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
{ {
@ -119,12 +124,13 @@ var (
}, },
} }
}), }),
}, ),
{ *generator.NewFamilyGenerator(
Name: "kube_volumeattachment_status_attachment_metadata", "kube_volumeattachment_status_attachment_metadata",
Type: metric.Gauge, "volumeattachment metadata.",
Help: "volumeattachment metadata.", metric.Gauge,
GenerateFunc: wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family { "",
wrapVolumeAttachmentFunc(func(va *storagev1.VolumeAttachment) *metric.Family {
labelKeys, labelValues := mapToPrometheusLabels(va.Status.AttachmentMetadata, "metadata") labelKeys, labelValues := mapToPrometheusLabels(va.Status.AttachmentMetadata, "metadata")
return &metric.Family{ return &metric.Family{
Metrics: []*metric.Metric{ Metrics: []*metric.Metric{
@ -136,7 +142,7 @@ var (
}, },
} }
}), }),
}, ),
} }
) )

View File

@ -17,6 +17,7 @@ limitations under the License.
package generator package generator
import ( import (
"fmt"
"strings" "strings"
"k8s.io/kube-state-metrics/pkg/metric" "k8s.io/kube-state-metrics/pkg/metric"
@ -24,11 +25,29 @@ import (
// FamilyGenerator provides everything needed to generate a metric family with a // FamilyGenerator provides everything needed to generate a metric family with a
// Kubernetes object. // Kubernetes object.
// DeprecatedVersion is defined only if the metric for which this options applies is,
// in fact, deprecated.
type FamilyGenerator struct { type FamilyGenerator struct {
Name string Name string
Help string Help string
Type metric.Type Type metric.Type
GenerateFunc func(obj interface{}) *metric.Family DeprecatedVersion string
GenerateFunc func(obj interface{}) *metric.Family
}
// NewFamilyGenerator creates new FamilyGenerator instances.
func NewFamilyGenerator(name string, help string, metricType metric.Type, deprecatedVersion string, generateFunc func(obj interface{}) *metric.Family) *FamilyGenerator {
f := &FamilyGenerator{
Name: name,
Type: metricType,
Help: help,
DeprecatedVersion: deprecatedVersion,
GenerateFunc: generateFunc,
}
if deprecatedVersion != "" {
f.Help = fmt.Sprintf("(Deprecated since %s) %s", deprecatedVersion, help)
}
return f
} }
// Generate calls the FamilyGenerator.GenerateFunc and gives the family its // Generate calls the FamilyGenerator.GenerateFunc and gives the family its