Skip to content

Commit

Permalink
[metricbeat]kubernetes: add persistentvolumeclaim from kube-state-met…
Browse files Browse the repository at this point in the history
…rics (#15066)

kubernetes.persistentvolumeclaim from kube-state-metrics
  • Loading branch information
Pablo Mercado committed Dec 18, 2019
1 parent 7c09961 commit 9b48f2b
Show file tree
Hide file tree
Showing 25 changed files with 2,083 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -552,6 +552,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...master[Check the HEAD d
- Enable script processor. {pull}14711[14711]
- Enable wildcard for cloudwatch metricset namespace. {pull}14971[14971] {issue}14965[14965]
- Add `kube-state-metrics` `state_service` metrics for kubernetes module. {pull}14794[14794]
- Add `kube-state-metrics` `state_persistentvolumeclaim` metrics for kubernetes module. {pull}15066[15066]
- Add usage metricset in aws modules. {pull}14925[14925] {issue}14935[14935]
- Add billing metricset in aws modules. {pull}14801[14801] {issue}14934[14934]
- Add AWS SNS metricset. {pull}14946[14946]
Expand Down
61 changes: 61 additions & 0 deletions metricbeat/docs/fields.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -19296,6 +19296,67 @@ type: long
--
[float]
=== persistentvolumeclaim
kubernetes persistent volume clame metrics from kube-state-metrics
*`kubernetes.persistentvolumeclaim.name`*::
+
--
PVC name.
type: keyword
--
*`kubernetes.persistentvolumeclaim.volume_name`*::
+
--
Binded volume name.
type: keyword
--
*`kubernetes.persistentvolumeclaim.request_storage.bytes`*::
+
--
Requested capacity.
type: long
--
*`kubernetes.persistentvolumeclaim.phase`*::
+
--
PVC phase.
type: keyword
--
*`kubernetes.persistentvolumeclaim.access_mode`*::
+
--
Access mode.
type: keyword
--
*`kubernetes.persistentvolumeclaim.storage_class`*::
+
--
Storage class for the PVC.
type: keyword
--
[float]
=== pod
Expand Down
5 changes: 5 additions & 0 deletions metricbeat/docs/modules/kubernetes.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ metricbeat.modules:
- state_cronjob
- state_resourcequota
- state_service
- state_persistentvolumeclaim
period: 10s
hosts: ["kube-state-metrics:8080"]
Expand Down Expand Up @@ -181,6 +182,8 @@ The following metricsets are available:

* <<metricbeat-metricset-kubernetes-state_node,state_node>>

* <<metricbeat-metricset-kubernetes-state_persistentvolumeclaim,state_persistentvolumeclaim>>

* <<metricbeat-metricset-kubernetes-state_pod,state_pod>>

* <<metricbeat-metricset-kubernetes-state_replicaset,state_replicaset>>
Expand Down Expand Up @@ -219,6 +222,8 @@ include::kubernetes/state_deployment.asciidoc[]

include::kubernetes/state_node.asciidoc[]

include::kubernetes/state_persistentvolumeclaim.asciidoc[]

include::kubernetes/state_pod.asciidoc[]

include::kubernetes/state_replicaset.asciidoc[]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
////
This file is generated! See scripts/mage/docs_collector.go
////

[[metricbeat-metricset-kubernetes-state_persistentvolumeclaim]]
=== Kubernetes state_persistentvolumeclaim metricset

experimental[]

include::../../../module/kubernetes/state_persistentvolumeclaim/_meta/docs.asciidoc[]


==== Fields

For a description of each field in the metricset, see the
<<exported-fields-kubernetes,exported fields>> section.

3 changes: 2 additions & 1 deletion metricbeat/docs/modules_list.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ This file is generated! See scripts/mage/docs_collector.go
.2+| .2+| |<<metricbeat-metricset-kibana-stats,stats>>
|<<metricbeat-metricset-kibana-status,status>>
|<<metricbeat-module-kubernetes,Kubernetes>> |image:./images/icon-yes.png[Prebuilt dashboards are available] |
.19+| .19+| |<<metricbeat-metricset-kubernetes-apiserver,apiserver>>
.20+| .20+| |<<metricbeat-metricset-kubernetes-apiserver,apiserver>>
|<<metricbeat-metricset-kubernetes-container,container>>
|<<metricbeat-metricset-kubernetes-controllermanager,controllermanager>>
|<<metricbeat-metricset-kubernetes-event,event>>
Expand All @@ -120,6 +120,7 @@ This file is generated! See scripts/mage/docs_collector.go
|<<metricbeat-metricset-kubernetes-state_cronjob,state_cronjob>>
|<<metricbeat-metricset-kubernetes-state_deployment,state_deployment>>
|<<metricbeat-metricset-kubernetes-state_node,state_node>>
|<<metricbeat-metricset-kubernetes-state_persistentvolumeclaim,state_persistentvolumeclaim>> experimental[]
|<<metricbeat-metricset-kubernetes-state_pod,state_pod>>
|<<metricbeat-metricset-kubernetes-state_replicaset,state_replicaset>>
|<<metricbeat-metricset-kubernetes-state_resourcequota,state_resourcequota>>
Expand Down
33 changes: 33 additions & 0 deletions metricbeat/helper/prometheus/metric.go
Original file line number Diff line number Diff line change
Expand Up @@ -385,3 +385,36 @@ type opUnixTimestampValue struct {
func (o opUnixTimestampValue) Process(field string, value interface{}, labels common.MapStr) (string, interface{}, common.MapStr) {
return field, common.Time(time.Unix(int64(value.(float64)), 0)), labels
}

// OpLabelKeyPrefixRemover removes prefix from label keys
func OpLabelKeyPrefixRemover(prefix string) MetricOption {
return opLabelKeyPrefixRemover{prefix}
}

// opLabelKeyPrefixRemover is a metric option processor that removes a prefix from the key of a label set
type opLabelKeyPrefixRemover struct {
Prefix string
}

// Process modifies the labels map, removing a prefix when found at keys of the labels set.
// For each label, if the key is found a new key will be created hosting the same value and the
// old key will be deleted.
// Fields, values and not prefixed labels will remain unmodified.
func (o opLabelKeyPrefixRemover) Process(field string, value interface{}, labels common.MapStr) (string, interface{}, common.MapStr) {
renameKeys := []string{}
for k := range labels {
if len(k) < len(o.Prefix) {
continue
}
if k[:6] == o.Prefix {
renameKeys = append(renameKeys, k)
}
}

for i := range renameKeys {
v := labels[renameKeys[i]]
delete(labels, renameKeys[i])
labels[renameKeys[i][len(o.Prefix):]] = v
}
return "", value, labels
}
1 change: 1 addition & 0 deletions metricbeat/include/list_docker.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions metricbeat/metricbeat.reference.yml
Original file line number Diff line number Diff line change
Expand Up @@ -475,6 +475,7 @@ metricbeat.modules:
- state_cronjob
- state_resourcequota
- state_service
- state_persistentvolumeclaim
period: 10s
hosts: ["kube-state-metrics:8080"]

Expand Down
1 change: 1 addition & 0 deletions metricbeat/module/kubernetes/_meta/config.reference.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
- state_cronjob
- state_resourcequota
- state_service
- state_persistentvolumeclaim
period: 10s
hosts: ["kube-state-metrics:8080"]

Expand Down
1 change: 1 addition & 0 deletions metricbeat/module/kubernetes/_meta/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
# - state_cronjob
# - state_resourcequota
# - state_service
# - state_persistentvolumeclaim
# period: 10s
# hosts: ["kube-state-metrics:8080"]
# add_metadata: true
Expand Down
2 changes: 1 addition & 1 deletion metricbeat/module/kubernetes/fields.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions metricbeat/module/kubernetes/state_persistentvolumeclaim/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Kube-state-metrics/PersistentVolumeClaim

This metricset connects to kube-state-metrics endpoint to retrieve and report Persistent Volume Claim metrics.

## Version history

- November 2019, first release using kube-state-metrics `v1.8.0`.

## Configuration

See the metricset documentation for the configuration reference.

## Manual testing

// TODO
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
The `state_persistentvolumeclaim` metricset for kubernetes service related metrics from `kube-state-metrics`.

Loading

0 comments on commit 9b48f2b

Please sign in to comment.