From 4478ea287b8dd7f0c48c500bee36d12e5f037a6e Mon Sep 17 00:00:00 2001 From: MichaelKatsoulis Date: Tue, 3 Aug 2021 13:19:12 +0300 Subject: [PATCH] Mirror integrations kubernetes package to test/packages kubernetes --- test/packages/kubernetes/_dev/build/build.yml | 3 + .../kubernetes/_dev/build/docs/README.md | 84 + .../kubernetes/_dev/build/docs/events.md | 16 + .../_dev/build/docs/kube-apiserver.md | 37 + .../build/docs/kube-controller-manager.md | 12 + .../kubernetes/_dev/build/docs/kube-proxy.md | 12 + .../_dev/build/docs/kube-scheduler.md | 12 + .../_dev/build/docs/kube-state-metrics.md | 132 ++ .../kubernetes/_dev/build/docs/kubelet.md | 48 + .../_dev/deploy/k8s/cluster-role-binding.yaml | 15 + .../_dev/deploy/k8s/cluster-role.yaml | 108 + .../kubernetes/_dev/deploy/k8s/conrjob.yaml | 19 + .../_dev/deploy/k8s/deployment.yaml | 44 +- .../kubernetes/_dev/deploy/k8s/job.yaml | 17 + .../kubernetes/_dev/deploy/k8s/pv.yaml | 14 + .../kubernetes/_dev/deploy/k8s/pvc.yaml | 14 + .../kubernetes/_dev/deploy/k8s/rq.yaml | 17 + .../_dev/deploy/k8s/service-account.yaml | 8 + .../kubernetes/_dev/deploy/k8s/service.yaml | 19 + .../kubernetes/_dev/deploy/k8s/ss.yaml | 22 + .../kubernetes/_dev/deploy/variants.yml | 5 - test/packages/kubernetes/changelog.yml | 97 +- .../apiserver/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 7 + .../apiserver/agent/stream/stream.yml.hbs | 18 + .../data_stream/apiserver/fields/agent.yml | 198 ++ .../apiserver/fields/base-fields.yml | 12 + .../data_stream/apiserver/fields/ecs.yml | 13 + .../data_stream/apiserver/fields/fields.yml | 190 ++ .../data_stream/apiserver/manifest.yml | 45 + .../data_stream/apiserver/sample_event.json | 62 + .../container/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 7 + .../container/agent/stream/stream.yml.hbs | 11 + .../data_stream/container/fields/agent.yml | 198 ++ .../container/fields/base-fields.yml | 90 + .../data_stream/container/fields/ecs.yml | 13 + .../data_stream/container/fields/fields.yml | 199 ++ .../data_stream/container/manifest.yml | 44 + .../data_stream/container/sample_event.json | 150 ++ .../controllermanager/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 8 + .../agent/stream/stream.yml.hbs | 11 + .../controllermanager/fields/agent.yml | 198 ++ .../controllermanager/fields/base-fields.yml | 90 + .../controllermanager/fields/ecs.yml | 13 + .../controllermanager/fields/fields.yml | 153 ++ .../controllermanager/manifest.yml | 38 + .../controllermanager/sample_event.json | 93 + .../event/agent/stream/stream.yml.hbs | 6 + .../data_stream/event/fields/agent.yml | 198 ++ .../data_stream/event/fields/base-fields.yml | 90 + .../data_stream/event/fields/ecs.yml | 10 + .../data_stream/event/fields/fields.yml | 99 + .../kubernetes/data_stream/event/manifest.yml | 29 + .../data_stream/event/sample_event.json | 78 + .../data_stream/node/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 7 + .../node/agent/stream/stream.yml.hbs | 11 + .../data_stream/node/fields/agent.yml | 198 ++ .../data_stream/node/fields/base-fields.yml | 90 + .../data_stream/node/fields/ecs.yml | 13 + .../data_stream/node/fields/fields.yml | 198 ++ .../kubernetes/data_stream/node/manifest.yml | 44 + .../data_stream/node/sample_event.json | 148 ++ .../data_stream/pod/_dev/deploy/k8s/.empty | 0 .../data_stream/pod/fields/base-fields.yml | 14 +- .../kubernetes/data_stream/pod/fields/ecs.yml | 4 + .../data_stream/pod/fields/fields.yml | 26 + .../kubernetes/data_stream/pod/manifest.yml | 2 +- .../data_stream/proxy/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 6 + .../proxy/agent/stream/stream.yml.hbs | 6 + .../data_stream/proxy/fields/agent.yml | 198 ++ .../data_stream/proxy/fields/base-fields.yml | 12 + .../data_stream/proxy/fields/ecs.yml | 13 + .../data_stream/proxy/fields/fields.yml | 123 + .../kubernetes/data_stream/proxy/manifest.yml | 23 + .../data_stream/proxy/sample_event.json | 216 ++ .../scheduler/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 8 + .../scheduler/agent/stream/stream.yml.hbs | 11 + .../data_stream/scheduler/fields/agent.yml | 198 ++ .../scheduler/fields/base-fields.yml | 90 + .../data_stream/scheduler/fields/ecs.yml | 13 + .../data_stream/scheduler/fields/fields.yml | 156 ++ .../data_stream/scheduler/manifest.yml | 38 + .../data_stream/scheduler/sample_event.json | 79 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_container/fields/agent.yml | 198 ++ .../state_container/fields/base-fields.yml | 95 + .../state_container/fields/ecs.yml | 16 + .../state_container/fields/fields.yml | 66 + .../data_stream/state_container/manifest.yml | 38 + .../state_container/sample_event.json | 80 + .../_dev/test/system/test-default-config.yml | 6 + .../state_cronjob/agent/stream/stream.yml.hbs | 11 + .../state_cronjob/fields/agent.yml | 198 ++ .../state_cronjob/fields/base-fields.yml | 90 + .../data_stream/state_cronjob/fields/ecs.yml | 13 + .../state_cronjob/fields/fields.yml | 39 + .../data_stream/state_cronjob/manifest.yml | 38 + .../state_cronjob/sample_event.json | 66 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_daemonset/fields/agent.yml | 198 ++ .../state_daemonset/fields/base-fields.yml | 90 + .../state_daemonset/fields/ecs.yml | 13 + .../state_daemonset/fields/fields.yml | 30 + .../data_stream/state_daemonset/manifest.yml | 38 + .../state_daemonset/sample_event.json | 62 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_deployment/fields/agent.yml | 198 ++ .../state_deployment/fields/base-fields.yml | 90 + .../state_deployment/fields/ecs.yml | 13 + .../state_deployment/fields/fields.yml | 30 + .../data_stream/state_deployment/manifest.yml | 38 + .../state_deployment/sample_event.json | 63 + .../_dev/test/system/test-default-config.yml | 6 + .../state_job/agent/stream/stream.yml.hbs | 7 + .../data_stream/state_job/fields/agent.yml | 198 ++ .../state_job/fields/base-fields.yml | 90 + .../data_stream/state_job/fields/ecs.yml | 13 + .../data_stream/state_job/fields/fields.yml | 75 + .../data_stream/state_job/manifest.yml | 31 + .../data_stream/state_job/sample_event.json | 72 + .../_dev/test/system/test-default-config.yml | 6 + .../state_node/agent/stream/stream.yml.hbs | 10 + .../data_stream/state_node/fields/agent.yml | 198 ++ .../state_node/fields/base-fields.yml | 90 + .../data_stream/state_node/fields/ecs.yml | 13 + .../data_stream/state_node/fields/fields.yml | 69 + .../data_stream/state_node/manifest.yml | 38 + .../data_stream/state_node/sample_event.json | 88 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 11 + .../state_persistentvolume/fields/agent.yml | 198 ++ .../fields/base-fields.yml | 90 + .../state_persistentvolume/fields/ecs.yml | 13 + .../state_persistentvolume/fields/fields.yml | 17 + .../state_persistentvolume/manifest.yml | 38 + .../state_persistentvolume/sample_event.json | 60 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../fields/agent.yml | 198 ++ .../fields/base-fields.yml | 90 + .../fields/ecs.yml | 13 + .../fields/fields.yml | 23 + .../state_persistentvolumeclaim/manifest.yml | 38 + .../sample_event.json | 60 + .../_dev/test/system/test-default-config.yml | 6 + .../state_pod/agent/stream/stream.yml.hbs | 10 + .../data_stream/state_pod/fields/agent.yml | 198 ++ .../state_pod/fields/base-fields.yml | 95 + .../data_stream/state_pod/fields/ecs.yml | 16 + .../data_stream/state_pod/fields/fields.yml | 26 + .../data_stream/state_pod/manifest.yml | 38 + .../data_stream/state_pod/sample_event.json | 69 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_replicaset/fields/agent.yml | 198 ++ .../state_replicaset/fields/base-fields.yml | 90 + .../state_replicaset/fields/ecs.yml | 13 + .../state_replicaset/fields/fields.yml | 31 + .../data_stream/state_replicaset/manifest.yml | 38 + .../state_replicaset/sample_event.json | 69 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_resourcequota/fields/agent.yml | 198 ++ .../fields/base-fields.yml | 90 + .../state_resourcequota/fields/ecs.yml | 13 + .../state_resourcequota/fields/fields.yml | 21 + .../state_resourcequota/manifest.yml | 38 + .../state_resourcequota/sample_event.json | 56 + .../state_service/agent/stream/stream.yml.hbs | 10 + .../state_service/fields/agent.yml | 198 ++ .../state_service/fields/base-fields.yml | 90 + .../data_stream/state_service/fields/ecs.yml | 13 + .../state_service/fields/fields.yml | 30 + .../data_stream/state_service/manifest.yml | 38 + .../state_service/sample_event.json | 62 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_statefulset/fields/agent.yml | 198 ++ .../state_statefulset/fields/base-fields.yml | 90 + .../state_statefulset/fields/ecs.yml | 13 + .../state_statefulset/fields/fields.yml | 40 + .../state_statefulset/manifest.yml | 38 + .../state_statefulset/sample_event.json | 62 + .../_dev/test/system/test-default-config.yml | 6 + .../agent/stream/stream.yml.hbs | 10 + .../state_storageclass/fields/agent.yml | 198 ++ .../state_storageclass/fields/base-fields.yml | 90 + .../state_storageclass/fields/ecs.yml | 13 + .../state_storageclass/fields/fields.yml | 18 + .../state_storageclass/manifest.yml | 38 + .../state_storageclass/sample_event.json | 59 + .../data_stream/system/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 7 + .../system/agent/stream/stream.yml.hbs | 11 + .../data_stream/system/fields/agent.yml | 198 ++ .../data_stream/system/fields/base-fields.yml | 90 + .../data_stream/system/fields/ecs.yml | 13 + .../data_stream/system/fields/fields.yml | 73 + .../data_stream/system/manifest.yml | 44 + .../data_stream/system/sample_event.json | 101 + .../data_stream/volume/_dev/deploy/k8s/.empty | 0 .../_dev/test/system/test-default-config.yml | 7 + .../volume/agent/stream/stream.yml.hbs | 11 + .../data_stream/volume/fields/agent.yml | 198 ++ .../data_stream/volume/fields/base-fields.yml | 90 + .../data_stream/volume/fields/ecs.yml | 13 + .../data_stream/volume/fields/fields.yml | 64 + .../data_stream/volume/manifest.yml | 44 + .../data_stream/volume/sample_event.json | 99 + test/packages/kubernetes/docs/README.md | 85 +- test/packages/kubernetes/docs/events.md | 171 ++ .../kubernetes/docs/kube-apiserver.md | 186 ++ .../docs/kube-controller-manager.md | 195 ++ test/packages/kubernetes/docs/kube-proxy.md | 298 +++ .../kubernetes/docs/kube-scheduler.md | 183 ++ .../kubernetes/docs/kube-state-metrics.md | 1988 +++++++++++++++++ test/packages/kubernetes/docs/kubelet.md | 1043 +++++++++ .../kubernetes/img/logo_kubernetes.svg | 1 + ...etricbeat-kubernetes-controllermanager.png | Bin 0 -> 269783 bytes .../img/metricbeat-kubernetes-proxy.png | Bin 0 -> 184085 bytes .../img/metricbeat_kubernetes_overview.png | Bin 0 -> 237723 bytes .../img/metricbeat_kubernetes_scheduler.png | Bin 0 -> 198656 bytes ...-5e649d60-9901-11e9-ba57-b7ab4e2d4b58.json | 188 ++ ...-97312060-9c1b-11e9-9dc8-fd27291d427f.json | 224 ++ .../kubernetes-AV4RGUqo5NkDleZmzKuZ.json | 267 +++ ...-af7225b0-5794-11e8-afa2-e9067ea62228.json | 88 + ...-f5ab5510-9c94-11e9-94fd-c91206cd5249.json | 188 ++ ...-022a54c0-2bf5-11e7-859b-f78b612cde28.json | 75 + ...-09b404f0-99af-11e9-ba57-b7ab4e2d4b58.json | 159 ++ ...-0ca95350-9c24-11e9-9dc8-fd27291d427f.json | 71 + ...-15bd4420-9c9b-11e9-94fd-c91206cd5249.json | 110 + ...-16fa4470-2bfd-11e7-859b-f78b612cde28.json | 100 + ...-174a6ad0-30e0-11e7-8df8-6d3604a72912.json | 88 + ...-294546b0-30d6-11e7-8df8-6d3604a72912.json | 100 + ...-2ba628e0-9c2a-11e9-9dc8-fd27291d427f.json | 88 + ...-382ace30-9d98-11e9-b2ae-49acc4cbcea9.json | 74 + ...-3dbf6230-9c20-11e9-9dc8-fd27291d427f.json | 150 ++ ...-3e1e1fd0-9c27-11e9-9dc8-fd27291d427f.json | 69 + ...-408fccf0-30d6-11e7-8df8-6d3604a72912.json | 86 + ...-44f12b40-2bf4-11e7-859b-f78b612cde28.json | 155 ++ ...-485c8550-9c3a-11e9-9dc8-fd27291d427f.json | 77 + ...-58e644f0-30d6-11e7-8df8-6d3604a72912.json | 88 + ...-7aac4fd0-30e0-11e7-8df8-6d3604a72912.json | 75 + ...-7cbeb750-5794-11e8-afa2-e9067ea62228.json | 84 + ...-7d80f790-9d96-11e9-b2ae-49acc4cbcea9.json | 74 + ...-826d80c0-9c97-11e9-94fd-c91206cd5249.json | 156 ++ ...-84d9b200-9d98-11e9-b2ae-49acc4cbcea9.json | 88 + ...-8a95de50-9c38-11e9-9dc8-fd27291d427f.json | 74 + ...-8c6c2690-9bd8-11e9-9dc8-fd27291d427f.json | 109 + ...-95595810-9ca8-11e9-94fd-c91206cd5249.json | 75 + ...-95a7f110-57a2-11e8-afa2-e9067ea62228.json | 85 + ...-a4c9d360-30df-11e7-8df8-6d3604a72912.json | 88 + ...-b8a24790-9bf0-11e9-9dc8-fd27291d427f.json | 262 +++ ...-ba7bf750-9bf5-11e9-9dc8-fd27291d427f.json | 245 ++ ...-bcb194a0-9bf8-11e9-9dc8-fd27291d427f.json | 76 + ...-cac89fb0-9906-11e9-ba57-b7ab4e2d4b58.json | 87 + ...-cd059410-2bfb-11e7-859b-f78b612cde28.json | 86 + ...-d6564360-2bfc-11e7-859b-f78b612cde28.json | 135 ++ ...-d86b2da0-9c20-11e9-9dc8-fd27291d427f.json | 109 + ...-d9fc1b80-9c9c-11e9-94fd-c91206cd5249.json | 248 ++ ...-da1ff7c0-30ed-11e7-b9e5-2b5b07213ab3.json | 90 + ...-e0ddd3e0-98fe-11e9-ba57-b7ab4e2d4b58.json | 74 + ...-e1018b90-2bfb-11e7-859b-f78b612cde28.json | 89 + ...-ec360ff0-57a0-11e8-afa2-e9067ea62228.json | 112 + test/packages/kubernetes/manifest.yml | 176 +- 273 files changed, 21812 insertions(+), 29 deletions(-) create mode 100644 test/packages/kubernetes/_dev/build/build.yml create mode 100644 test/packages/kubernetes/_dev/build/docs/README.md create mode 100644 test/packages/kubernetes/_dev/build/docs/events.md create mode 100644 test/packages/kubernetes/_dev/build/docs/kube-apiserver.md create mode 100644 test/packages/kubernetes/_dev/build/docs/kube-controller-manager.md create mode 100644 test/packages/kubernetes/_dev/build/docs/kube-proxy.md create mode 100644 test/packages/kubernetes/_dev/build/docs/kube-scheduler.md create mode 100644 test/packages/kubernetes/_dev/build/docs/kube-state-metrics.md create mode 100644 test/packages/kubernetes/_dev/build/docs/kubelet.md create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/cluster-role-binding.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/cluster-role.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/conrjob.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/job.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/pv.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/pvc.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/rq.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/service-account.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/service.yaml create mode 100644 test/packages/kubernetes/_dev/deploy/k8s/ss.yaml delete mode 100644 test/packages/kubernetes/_dev/deploy/variants.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/apiserver/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/apiserver/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/apiserver/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/container/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/container/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/container/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/container/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/container/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/container/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/container/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/container/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/container/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/controllermanager/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/controllermanager/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/controllermanager/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/controllermanager/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/controllermanager/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/controllermanager/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/controllermanager/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/controllermanager/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/controllermanager/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/event/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/event/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/event/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/event/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/event/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/event/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/event/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/node/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/node/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/node/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/node/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/node/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/node/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/node/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/node/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/node/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/pod/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/proxy/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/proxy/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/proxy/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/proxy/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/proxy/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/proxy/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/proxy/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/proxy/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/proxy/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/scheduler/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/scheduler/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/scheduler/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/scheduler/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/scheduler/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/scheduler/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/scheduler/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/scheduler/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/scheduler/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_container/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_container/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_container/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_container/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_container/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_container/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_container/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_container/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_cronjob/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_daemonset/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_deployment/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_deployment/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_deployment/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_deployment/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_deployment/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_deployment/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_deployment/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_deployment/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_job/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_job/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_job/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_job/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_job/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_job/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_job/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_job/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_node/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_node/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_node/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_node/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_node/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_node/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_node/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_node/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolume/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_persistentvolumeclaim/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_pod/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_pod/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_pod/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_pod/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_pod/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_pod/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_pod/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_pod/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_replicaset/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_resourcequota/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_service/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_service/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_service/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_service/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_service/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_service/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_service/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_statefulset/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/state_storageclass/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/system/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/system/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/system/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/system/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/system/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/system/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/system/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/system/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/system/sample_event.json create mode 100644 test/packages/kubernetes/data_stream/volume/_dev/deploy/k8s/.empty create mode 100644 test/packages/kubernetes/data_stream/volume/_dev/test/system/test-default-config.yml create mode 100644 test/packages/kubernetes/data_stream/volume/agent/stream/stream.yml.hbs create mode 100644 test/packages/kubernetes/data_stream/volume/fields/agent.yml create mode 100644 test/packages/kubernetes/data_stream/volume/fields/base-fields.yml create mode 100644 test/packages/kubernetes/data_stream/volume/fields/ecs.yml create mode 100644 test/packages/kubernetes/data_stream/volume/fields/fields.yml create mode 100644 test/packages/kubernetes/data_stream/volume/manifest.yml create mode 100644 test/packages/kubernetes/data_stream/volume/sample_event.json create mode 100644 test/packages/kubernetes/docs/events.md create mode 100644 test/packages/kubernetes/docs/kube-apiserver.md create mode 100644 test/packages/kubernetes/docs/kube-controller-manager.md create mode 100644 test/packages/kubernetes/docs/kube-proxy.md create mode 100644 test/packages/kubernetes/docs/kube-scheduler.md create mode 100644 test/packages/kubernetes/docs/kube-state-metrics.md create mode 100644 test/packages/kubernetes/docs/kubelet.md create mode 100644 test/packages/kubernetes/img/logo_kubernetes.svg create mode 100644 test/packages/kubernetes/img/metricbeat-kubernetes-controllermanager.png create mode 100644 test/packages/kubernetes/img/metricbeat-kubernetes-proxy.png create mode 100644 test/packages/kubernetes/img/metricbeat_kubernetes_overview.png create mode 100644 test/packages/kubernetes/img/metricbeat_kubernetes_scheduler.png create mode 100644 test/packages/kubernetes/kibana/dashboard/kubernetes-5e649d60-9901-11e9-ba57-b7ab4e2d4b58.json create mode 100644 test/packages/kubernetes/kibana/dashboard/kubernetes-97312060-9c1b-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/dashboard/kubernetes-AV4RGUqo5NkDleZmzKuZ.json create mode 100644 test/packages/kubernetes/kibana/dashboard/kubernetes-af7225b0-5794-11e8-afa2-e9067ea62228.json create mode 100644 test/packages/kubernetes/kibana/dashboard/kubernetes-f5ab5510-9c94-11e9-94fd-c91206cd5249.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-022a54c0-2bf5-11e7-859b-f78b612cde28.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-09b404f0-99af-11e9-ba57-b7ab4e2d4b58.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-0ca95350-9c24-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-15bd4420-9c9b-11e9-94fd-c91206cd5249.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-16fa4470-2bfd-11e7-859b-f78b612cde28.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-174a6ad0-30e0-11e7-8df8-6d3604a72912.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-294546b0-30d6-11e7-8df8-6d3604a72912.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-2ba628e0-9c2a-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-382ace30-9d98-11e9-b2ae-49acc4cbcea9.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-3dbf6230-9c20-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-3e1e1fd0-9c27-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-408fccf0-30d6-11e7-8df8-6d3604a72912.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-44f12b40-2bf4-11e7-859b-f78b612cde28.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-485c8550-9c3a-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-58e644f0-30d6-11e7-8df8-6d3604a72912.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-7aac4fd0-30e0-11e7-8df8-6d3604a72912.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-7cbeb750-5794-11e8-afa2-e9067ea62228.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-7d80f790-9d96-11e9-b2ae-49acc4cbcea9.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-826d80c0-9c97-11e9-94fd-c91206cd5249.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-84d9b200-9d98-11e9-b2ae-49acc4cbcea9.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-8a95de50-9c38-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-8c6c2690-9bd8-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-95595810-9ca8-11e9-94fd-c91206cd5249.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-95a7f110-57a2-11e8-afa2-e9067ea62228.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-a4c9d360-30df-11e7-8df8-6d3604a72912.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-b8a24790-9bf0-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-ba7bf750-9bf5-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-bcb194a0-9bf8-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-cac89fb0-9906-11e9-ba57-b7ab4e2d4b58.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-cd059410-2bfb-11e7-859b-f78b612cde28.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-d6564360-2bfc-11e7-859b-f78b612cde28.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-d86b2da0-9c20-11e9-9dc8-fd27291d427f.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-d9fc1b80-9c9c-11e9-94fd-c91206cd5249.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-da1ff7c0-30ed-11e7-b9e5-2b5b07213ab3.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-e0ddd3e0-98fe-11e9-ba57-b7ab4e2d4b58.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-e1018b90-2bfb-11e7-859b-f78b612cde28.json create mode 100644 test/packages/kubernetes/kibana/visualization/kubernetes-ec360ff0-57a0-11e8-afa2-e9067ea62228.json diff --git a/test/packages/kubernetes/_dev/build/build.yml b/test/packages/kubernetes/_dev/build/build.yml new file mode 100644 index 0000000000..002aa15659 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/build.yml @@ -0,0 +1,3 @@ +dependencies: + ecs: + reference: git@1.10 diff --git a/test/packages/kubernetes/_dev/build/docs/README.md b/test/packages/kubernetes/_dev/build/docs/README.md new file mode 100644 index 0000000000..f7dc53d855 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/README.md @@ -0,0 +1,84 @@ +# Kubernetes integration + +This integration is used to collect metrics from +[Kubernetes clusters](https://kubernetes.io/). + +As one of the main pieces provided for Kubernetes monitoring, this integration is capable of fetching metrics from several components: + +- [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) +- [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) +- [apiserver](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/) +- [controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/) +- [scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) +- [proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) + +Some of the previous components are running on each of the Kubernetes nodes (like `kubelet` or `proxy`) while others provide +a single cluster-wide endpoint. This is important to determine the optimal configuration and running strategy +for the different datasets included in the integration. + +For a complete reference on how to configure and run this package on Kubernetes as part of a `DaemonSet` and a `Deployment`, +there's a complete [example manifest](https://github.com/elastic/beats/blob/master/deploy/kubernetes/elastic-agent-kubernetes.yaml) +available. + +#### Kubernetes endpoints and metricsets + +Kubernetes module is a bit complex as its internal datasets require access to a wide variety of endpoints. + +This section highlights and introduces some groups of datasets with similar endpoint access needs. +For more details on the datasets see `configuration example` and the `datasets` sections below. + + +#### node / system / pod / container / module / volume + +The datasets `container`, `node`, `pod`, `system` and `volume` require access to the `kubelet endpoint` in each of +the Kubernetes nodes, hence it's recommended to include them as part +of an `Agent DaemonSet` or standalone Agents running on the hosts. + +Depending on the version and configuration of Kubernetes nodes, `kubelet` might provide a read only http port (typically 10255), +which is used in some configuration examples. But in general, and lately, this endpoint requires SSL (`https`) access +(to port 10250 by default) and token based authentication. + + +##### state_* and event + +All datasets with the `state_` prefix require `hosts` field pointing to `kube-state-metrics` +service within the cluster. As the service provides cluster-wide metrics, there's no need to fetch them per node, +hence the recommendation is to run these datasets as part of an `Agent Deployment` with one only replica. + +Note: Kube-state-metrics is not deployed by default in Kubernetes. For these cases the instructions for its +deployment are available [here](https://github.com/kubernetes/kube-state-metrics#kubernetes-deployment). +Generally `kube-state-metrics` runs a `Deployment` and is accessible via a service called `kube-state-metrics` on +`kube-system` namespace, which will be the service to use in our configuration. + +state_* datasets are not enabled by default. + +#### apiserver + +The apiserver dataset requires access to the Kubernetes API, which should be easily available in all Kubernetes +environments. Depending on the Kubernetes configuration, the API access might require SSL (`https`) and token +based authentication. + +#### proxy + +The proxy dataset requires access to the proxy endpoint in each of Kubernetes nodes, hence it's recommended +to configure it as a part of an `Agent DaemonSet`. + +#### scheduler and controllermanager + +These datasets require access to the Kubernetes `controller-manager` and `scheduler` endpoints. By default, these pods +run only on master nodes, and they are not exposed via a Service, but there are different strategies +available for its configuration: + +- Create `Kubernetes Services` to make `kube-controller-manager` and `kube-scheduler` available and configure + the datasets to point to these services as part of an `Agent Deployment`. +- Run these datasets as part an `Agent Daemonset` (with HostNetwork setting) with a `nodeSelector` to only run on Master nodes. + +These datasets are not enabled by default. + +Note: In some "As a Service" Kubernetes implementations, like `GKE`, the master nodes or even the pods running on +the masters won't be visible. In these cases it won't be possible to use `scheduler` and `controllermanager` metricsets. + +## Compatibility + +The Kubernetes package is tested with Kubernetes 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x, and 1.18.x + diff --git a/test/packages/kubernetes/_dev/build/docs/events.md b/test/packages/kubernetes/_dev/build/docs/events.md new file mode 100644 index 0000000000..bd2ce5a228 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/events.md @@ -0,0 +1,16 @@ +# events + +## Metrics + +### event + +This is the `event` dataset of the Kubernetes package. It collects Kubernetes events +related metrics. + +If Leader Election is activated (default behaviour) only the `elastic agent` which holds the leadership lock +will retrieve events related metrics. +This is relevant in multi-node kubernetes cluster and prevents duplicate data. + +{{event "event"}} + +{{fields "event"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/build/docs/kube-apiserver.md b/test/packages/kubernetes/_dev/build/docs/kube-apiserver.md new file mode 100644 index 0000000000..a28c98cc00 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/kube-apiserver.md @@ -0,0 +1,37 @@ +# kube-apiserver + +## Metrics + +### apiserver + +This is the `apiserver` dataset of the Kubernetes package, in charge of retrieving metrics +from the Kubernetes API (available at `/metrics`). + +This metricset needs access to the `apiserver` component of Kubernetes, accessible typically +by any POD via the `kubernetes.default` service or via environment +variables (`KUBERNETES_SERVICE_HOST` and `KUBERNETES_SERVICE_PORT`). + +If Leader Election is activated (default behaviour) only the `elastic agent` which holds the leadership lock +will retrieve metrics from the `apiserver`. +This is relevant in multi-node kubernetes cluster and prevents duplicate data. + +When the API uses https, the pod will need to authenticate using its default token and trust +the server using the appropriate CA file. + +Configuration example using https and token based authentication: + + +In order to access the `/metrics` path of the API service, some Kubernetes environments might +require the following permission to be added to a ClusterRole. + +```yaml +rules: +- nonResourceURLs: + - /metrics + verbs: + - get +``` + +{{event "apiserver"}} + +{{fields "apiserver"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/build/docs/kube-controller-manager.md b/test/packages/kubernetes/_dev/build/docs/kube-controller-manager.md new file mode 100644 index 0000000000..01faeab816 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/kube-controller-manager.md @@ -0,0 +1,12 @@ +# kube-controller-manager + +## Metrics + +### controllermanager + +This is the `controllermanager` dataset for the Kubernetes package. It collects from +Kubernetes controller component `metrics` endpoint. + +{{event "controllermanager"}} + +{{fields "controllermanager"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/build/docs/kube-proxy.md b/test/packages/kubernetes/_dev/build/docs/kube-proxy.md new file mode 100644 index 0000000000..6df5baf0c8 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/kube-proxy.md @@ -0,0 +1,12 @@ +# kube-proxy + +## Metrics + +### proxy + +This is the `proxy` dataset of the Kubernetes package. It collects metrics +from Kubernetes Proxy component. + +{{event "proxy"}} + +{{fields "proxy"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/build/docs/kube-scheduler.md b/test/packages/kubernetes/_dev/build/docs/kube-scheduler.md new file mode 100644 index 0000000000..bfd8b65c25 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/kube-scheduler.md @@ -0,0 +1,12 @@ +# kube-scheduler + +## Metrics + +### scheduler + +This is the `scheduler` dataset of the Kubernetes package. It collects metrics +from Kubernetes Scheduler component. + +{{event "scheduler"}} + +{{fields "scheduler"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/build/docs/kube-state-metrics.md b/test/packages/kubernetes/_dev/build/docs/kube-state-metrics.md new file mode 100644 index 0000000000..4358201cd3 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/kube-state-metrics.md @@ -0,0 +1,132 @@ +# kube-state-metrics + +## Metrics + +If Leader Election is activated (default behaviour) only the `elastic agent` which holds the leadership lock +will retrieve metrics from the `kube_state_metrics`. +This is relevant in multi-node kubernetes cluster and prevents duplicate data. + +### state_container + +This is the `state_container` dataset of the Kubernetes package. It collects container related +metrics from `kube_state_metrics`. + +{{event "state_container"}} + +{{fields "state_container"}} + +### state_cronjob + +This is the `state_cronjob` dataset of the Kubernetes package. It collects cronjob related +metrics from `kube_state_metrics`. + +{{event "state_cronjob"}} + +{{fields "state_cronjob"}} + +### state_daemonset + +This is the `state_daemonset` dataset of the Kubernetes package. It collects daemonset related +metrics from `kube_state_metrics`. + +{{event "state_daemonset"}} + +{{fields "state_daemonset"}} + +### state_deployment + +This is the `state_deployment` dataset of the Kubernetes package. It collects deployment related +metrics from `kube_state_metrics`. + +{{event "state_deployment"}} + +{{fields "state_deployment"}} + +### state_job + +This is the `state_job` dataset of the Kubernetes package. It collects job related +metrics from `kube_state_metrics`. + +{{event "state_job"}} + +{{fields "state_job"}} + +### state_node + +This is the `state_node` dataset of the Kubernetes package. It collects node related +metrics from `kube_state_metrics`. + +{{event "state_node"}} + +{{fields "state_node"}} + +### state_persistentvolume + +This is the `state_persistentvolume` dataset of the Kubernetes package. It collects +PersistentVolume related metrics from `kube_state_metrics`. + +{{event "state_persistentvolume"}} + +{{fields "state_persistentvolume"}} + +### state_persistentvolumeclaim + +This is the `state_persistentvolumeclaim` dataset of the Kubernetes package. It collects +PersistentVolumeClaim related metrics from `kube_state_metrics`. + +{{event "state_persistentvolumeclaim"}} + +{{fields "state_persistentvolumeclaim"}} + +### state_pod + +This is the `state_pod` dataset of the Kubernetes package. It collects +Pod related metrics from `kube_state_metrics`. + +{{event "state_pod"}} + +{{fields "state_pod"}} + +### state_replicaset + +This is the `state_replicaset` dataset of the Kubernetes package. It collects +Replicaset related metrics from `kube_state_metrics`. + +{{event "state_replicaset"}} + +{{fields "state_replicaset"}} + +### state_resourcequota + +This is the `state_resourcequota` dataset of the Kubernetes package. It collects ResourceQuota related metrics +from `kube_state_metrics`. + +{{event "state_resourcequota"}} + +{{fields "state_resourcequota"}} + +### state_service + +This is the `state_service` dataset of the Kubernetes package. It collects +Service related metrics from `kube_state_metrics`. + +{{event "state_service"}} + +{{fields "state_service"}} + +### state_statefulset + +This is the `state_statefulset` dataset of the Kubernetes package. + +{{event "state_statefulset"}} + +{{fields "state_statefulset"}} + +### state_storageclass + +This is the `state_storageclass` dataset of the Kubernetes package. It collects +StorageClass related metrics from `kube_state_metrics`. + +{{event "state_storageclass"}} + +{{fields "state_storageclass"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/build/docs/kubelet.md b/test/packages/kubernetes/_dev/build/docs/kubelet.md new file mode 100644 index 0000000000..54e684a860 --- /dev/null +++ b/test/packages/kubernetes/_dev/build/docs/kubelet.md @@ -0,0 +1,48 @@ +# kubelet + +## Metrics + +### container + +This is the `container` dataset of the Kubernetes package. It collects container related metrics +from Kubelet's monitoring APIs. + +{{event "container"}} + +{{fields "container"}} + +### node + +This is the `node` dataset of the Kubernetes package. It collects Node related metrics +from Kubelet's monitoring APIs. + +{{event "node"}} + +{{fields "node"}} + +### pod + +This is the `pod` dataset of the Kubernetes package. It collects Pod related metrics +from Kubelet's monitoring APIs. + +{{event "pod"}} + +{{fields "pod"}} + +### system + +This is the `system` dataset of the Kubernetes package. It collects System related metrics +from Kubelet's monitoring APIs. + +{{event "system"}} + +{{fields "system"}} + +### volume + +This is the `volume` dataset of the Kubernetes package. It collects Volume related metrics +from Kubelet's monitoring APIs. + +{{event "volume"}} + +{{fields "volume"}} \ No newline at end of file diff --git a/test/packages/kubernetes/_dev/deploy/k8s/cluster-role-binding.yaml b/test/packages/kubernetes/_dev/deploy/k8s/cluster-role-binding.yaml new file mode 100644 index 0000000000..ff5c2be138 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/cluster-role-binding.yaml @@ -0,0 +1,15 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.0.0-rc.1 + name: kube-state-metrics +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kube-state-metrics +subjects: + - kind: ServiceAccount + name: kube-state-metrics + namespace: kube-system diff --git a/test/packages/kubernetes/_dev/deploy/k8s/cluster-role.yaml b/test/packages/kubernetes/_dev/deploy/k8s/cluster-role.yaml new file mode 100644 index 0000000000..1b567f9257 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/cluster-role.yaml @@ -0,0 +1,108 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.0.0-rc.1 + name: kube-state-metrics +rules: + - apiGroups: + - "" + resources: + - configmaps + - secrets + - nodes + - pods + - services + - resourcequotas + - replicationcontrollers + - limitranges + - persistentvolumeclaims + - persistentvolumes + - namespaces + - endpoints + verbs: + - list + - watch + - apiGroups: + - apps + resources: + - statefulsets + - daemonsets + - deployments + - replicasets + verbs: + - list + - watch + - apiGroups: + - batch + resources: + - cronjobs + - jobs + verbs: + - list + - watch + - apiGroups: + - autoscaling + resources: + - horizontalpodautoscalers + verbs: + - list + - watch + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + - apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - list + - watch + - apiGroups: + - certificates.k8s.io + resources: + - certificatesigningrequests + verbs: + - list + - watch + - apiGroups: + - storage.k8s.io + resources: + - storageclasses + - volumeattachments + verbs: + - list + - watch + - apiGroups: + - admissionregistration.k8s.io + resources: + - mutatingwebhookconfigurations + - validatingwebhookconfigurations + verbs: + - list + - watch + - apiGroups: + - networking.k8s.io + resources: + - networkpolicies + - ingresses + verbs: + - list + - watch + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - list + - watch diff --git a/test/packages/kubernetes/_dev/deploy/k8s/conrjob.yaml b/test/packages/kubernetes/_dev/deploy/k8s/conrjob.yaml new file mode 100644 index 0000000000..472da4598b --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/conrjob.yaml @@ -0,0 +1,19 @@ +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: hello +spec: + schedule: "*/1 * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: hello + image: busybox + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - date; echo Hello from the Kubernetes cluster + restartPolicy: OnFailure diff --git a/test/packages/kubernetes/_dev/deploy/k8s/deployment.yaml b/test/packages/kubernetes/_dev/deploy/k8s/deployment.yaml index 72bb670262..420eece825 100644 --- a/test/packages/kubernetes/_dev/deploy/k8s/deployment.yaml +++ b/test/packages/kubernetes/_dev/deploy/k8s/deployment.yaml @@ -1,24 +1,44 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: nginx-deployment + labels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.0.0-rc.1 + name: kube-state-metrics + namespace: kube-system spec: + replicas: 1 selector: matchLabels: - app: nginx - replicas: 16 - strategy: - type: RollingUpdate - rollingUpdate: - maxSurge: 1 - maxUnavailable: 0 + app.kubernetes.io/name: kube-state-metrics template: metadata: labels: - app: nginx + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.0.0-rc.1 spec: containers: - - name: nginx - image: nginx:1.14.2 + - image: quay.io/coreos/kube-state-metrics:v1.9.0 + livenessProbe: + httpGet: + path: /healthz + port: 8080 + initialDelaySeconds: 5 + timeoutSeconds: 5 + name: kube-state-metrics ports: - - containerPort: 80 + - containerPort: 8080 + name: http-metrics + - containerPort: 8081 + name: telemetry + readinessProbe: + httpGet: + path: / + port: 8081 + initialDelaySeconds: 5 + timeoutSeconds: 5 + securityContext: + runAsUser: 65534 + nodeSelector: + kubernetes.io/os: linux + serviceAccountName: kube-state-metrics diff --git a/test/packages/kubernetes/_dev/deploy/k8s/job.yaml b/test/packages/kubernetes/_dev/deploy/k8s/job.yaml new file mode 100644 index 0000000000..c1087e28c4 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/job.yaml @@ -0,0 +1,17 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: hello +spec: + template: + spec: + containers: + - name: hello + image: busybox + imagePullPolicy: IfNotPresent + command: + - /bin/sh + - -c + - date; echo Hello from the Kubernetes cluster + restartPolicy: OnFailure + backoffLimit: 4 diff --git a/test/packages/kubernetes/_dev/deploy/k8s/pv.yaml b/test/packages/kubernetes/_dev/deploy/k8s/pv.yaml new file mode 100644 index 0000000000..bca6cd1eb5 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/pv.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: task-pv-volume + labels: + name: task-pv-volume +spec: + storageClassName: generic + capacity: + storage: 2Ki + accessModes: + - ReadWriteOnce + hostPath: + path: "/tmp/data" diff --git a/test/packages/kubernetes/_dev/deploy/k8s/pvc.yaml b/test/packages/kubernetes/_dev/deploy/k8s/pvc.yaml new file mode 100644 index 0000000000..7b24222960 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/pvc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: task-pv-claim +spec: + storageClassName: generic + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Ki + selector: + matchLabels: + name: task-pv-volume diff --git a/test/packages/kubernetes/_dev/deploy/k8s/rq.yaml b/test/packages/kubernetes/_dev/deploy/k8s/rq.yaml new file mode 100644 index 0000000000..07c6d882a9 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/rq.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: List +items: + - apiVersion: v1 + kind: ResourceQuota + metadata: + name: pods-high + spec: + hard: + cpu: "1000" + memory: 200Ki + pods: "10" + scopeSelector: + matchExpressions: + - operator: In + scopeName: PriorityClass + values: ["high"] diff --git a/test/packages/kubernetes/_dev/deploy/k8s/service-account.yaml b/test/packages/kubernetes/_dev/deploy/k8s/service-account.yaml new file mode 100644 index 0000000000..1708b4beac --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/service-account.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.0.0-rc.1 + name: kube-state-metrics + namespace: kube-system diff --git a/test/packages/kubernetes/_dev/deploy/k8s/service.yaml b/test/packages/kubernetes/_dev/deploy/k8s/service.yaml new file mode 100644 index 0000000000..ef80dc44bc --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/name: kube-state-metrics + app.kubernetes.io/version: 2.0.0-rc.1 + name: kube-state-metrics + namespace: kube-system +spec: + clusterIP: None + ports: + - name: http-metrics + port: 8080 + targetPort: http-metrics + - name: telemetry + port: 8081 + targetPort: telemetry + selector: + app.kubernetes.io/name: kube-state-metrics diff --git a/test/packages/kubernetes/_dev/deploy/k8s/ss.yaml b/test/packages/kubernetes/_dev/deploy/k8s/ss.yaml new file mode 100644 index 0000000000..037d913837 --- /dev/null +++ b/test/packages/kubernetes/_dev/deploy/k8s/ss.yaml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: web +spec: + selector: + matchLabels: + app: nginx # has to match .spec.template.metadata.labels + serviceName: "nginx" + replicas: 1 # by default is 1 + template: + metadata: + labels: + app: nginx # has to match .spec.selector.matchLabels + spec: + terminationGracePeriodSeconds: 10 + containers: + - name: nginx + image: k8s.gcr.io/nginx-slim:0.8 + ports: + - containerPort: 80 + name: web diff --git a/test/packages/kubernetes/_dev/deploy/variants.yml b/test/packages/kubernetes/_dev/deploy/variants.yml deleted file mode 100644 index 02f0fffaca..0000000000 --- a/test/packages/kubernetes/_dev/deploy/variants.yml +++ /dev/null @@ -1,5 +0,0 @@ -# this is not valid right now and is not used at all, it exists to make linter happy -variants: - v1: - SERVICE_VERSION: 1.3.0 -default: v1 diff --git a/test/packages/kubernetes/changelog.yml b/test/packages/kubernetes/changelog.yml index 11d6363d75..74b56f0fd5 100644 --- a/test/packages/kubernetes/changelog.yml +++ b/test/packages/kubernetes/changelog.yml @@ -1,6 +1,101 @@ # newer versions go on top - version: "999.999.999" + changes: + - description: Give the package highest priority + type: enhancement # can be one of: enhancement, bugfix, breaking-change + link: https://github.com/elastic/elastic-package/pull/460 +- version: "0.12.0" + changes: + - description: Update kubernetes package ecs fields with orchestrator.cluster.url and orchestrator.cluster.name + type: enhancement + link: https://github.com/elastic/integrations/pull/1407 +- version: "0.11.1" + changes: + - description: Escape special characters in docs + type: enhancement + link: https://github.com/elastic/integrations/pull/1405 +- version: "0.11.0" + changes: + - description: Update documentation to fit mdx spec + type: enhancement + link: https://github.com/elastic/integrations/pull/1401 +- version: "0.10.0" + changes: + - description: Update integration description + type: enhancement + link: https://github.com/elastic/integrations/pull/1364 +- version: "0.9.1" + changes: + - description: Add missing field "kubernetes.daemonset.name" field for state_pod and state_container + type: bugfix + link: https://github.com/elastic/integrations/pull/1335 +- version: "0.9.0" + changes: + - description: Enhance kubernetes package with state_job data stream + type: enhancement + link: https://github.com/elastic/integrations/pull/1018 +- version: "0.8.0" + changes: + - description: Leverage leader election in kubernetes integration + type: enhancement + link: https://github.com/elastic/integrations/pull/1321 +- version: "0.7.0" + changes: + - description: Add _meta information to Kubernetes fields + type: enhancement + link: https://github.com/elastic/integrations/pull/1289 +- version: "0.6.0" + changes: + - description: Introduce kubernetes package granularity using input_groups + type: enhancement + link: https://github.com/elastic/integrations/pull/1018 +- version: "0.5.3" + changes: + - description: Add missing field "kubernetes.statefulset.replicas.ready" + type: enhancement + link: https://github.com/elastic/integrations/pull/1160 +- version: "0.5.2" + changes: + - description: Fix stack compatability + type: bugfix + link: https://github.com/elastic/integrations/pull/998 +- version: "0.5.1" + changes: + - description: Fix references to env variables + type: bugfix + link: https://github.com/elastic/integrations/pull/970 +- version: "0.5.0" + changes: + - description: Add missing field "kubernetes.selectors.*" and extra https settings for controllermanager and scheduler datastreams + type: enhancement + link: https://github.com/elastic/integrations/pull/886 +- version: "0.4.5" + changes: + - description: Add missing field "kubernetes.pod.ip" + type: enhancement + link: https://github.com/elastic/integrations/pull/919 +- version: "0.4.4" + changes: + - description: Updating package owner + type: enhancement + link: https://github.com/elastic/integrations/pull/766 +- version: "0.4.3" + changes: + - description: Correct sample event file. + type: bugfix # can be one of: enhancement, bugfix, breaking-change + link: https://github.com/elastic/integrations/pull/754 +- version: "0.4.2" + changes: + - description: Change kibana.version constraint to be more conservative. + type: bugfix + link: https://github.com/elastic/integrations/pull/749 +- version: "0.4.1" + changes: + - description: Add missing fields + type: enhancement # can be one of: enhancement, bugfix, breaking-change + link: https://github.com/elastic/integrations/pull/745 +- version: "0.1.0" changes: - description: initial release type: enhancement # can be one of: enhancement, bugfix, breaking-change - link: https://github.com/elastic/elastic-package/pull/245 + link: https://github.com/elastic/integrations/pull/70 diff --git a/test/packages/kubernetes/data_stream/apiserver/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/apiserver/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/apiserver/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/apiserver/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..cf6f20d0c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/_dev/test/system/test-default-config.yml @@ -0,0 +1,7 @@ +service: kubernetes +data_stream: + vars: + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + period: 5s + hosts: + - https://kubernetes.default:443 diff --git a/test/packages/kubernetes/data_stream/apiserver/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/apiserver/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..46426492a2 --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/agent/stream/stream.yml.hbs @@ -0,0 +1,18 @@ +metricsets: ["apiserver"] +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} + +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} + +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.certificate_authorities: +{{#each ssl.certificate_authorities}} + - {{this}} +{{/each}} +{{/if}} diff --git a/test/packages/kubernetes/data_stream/apiserver/fields/agent.yml b/test/packages/kubernetes/data_stream/apiserver/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/apiserver/fields/base-fields.yml b/test/packages/kubernetes/data_stream/apiserver/fields/base-fields.yml new file mode 100644 index 0000000000..7c798f4534 --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/fields/base-fields.yml @@ -0,0 +1,12 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. diff --git a/test/packages/kubernetes/data_stream/apiserver/fields/ecs.yml b/test/packages/kubernetes/data_stream/apiserver/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/apiserver/fields/fields.yml b/test/packages/kubernetes/data_stream/apiserver/fields/fields.yml new file mode 100644 index 0000000000..d53efadb1a --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/fields/fields.yml @@ -0,0 +1,190 @@ +- name: kubernetes.apiserver + type: group + fields: + - name: request.client + type: keyword + description: | + Client executing requests + - name: request.resource + type: keyword + description: | + Requested resource + - name: request.subresource + type: keyword + description: | + Requested subresource + - name: request.scope + type: keyword + description: | + Request scope (cluster, namespace, resource) + - name: request.verb + type: keyword + description: | + HTTP verb + - name: request.code + type: keyword + description: | + HTTP code + - name: request.content_type + type: keyword + description: | + Request HTTP content type + - name: request.dry_run + type: keyword + description: | + Wether the request uses dry run + - name: request.kind + type: keyword + description: | + Kind of request + - name: request.component + type: keyword + description: | + Component handling the request + - name: request.group + type: keyword + description: | + API group for the resource + - name: request.version + type: keyword + description: | + version for the group + - name: request.handler + type: keyword + description: | + Request handler + - name: request.method + type: keyword + description: | + HTTP method + - name: request.host + type: keyword + description: | + Request host + - name: process + type: group + fields: + - name: cpu.sec + type: double + metric_type: counter + description: CPU seconds + - name: memory.resident.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in resident memory + - name: memory.virtual.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in virtual memory + - name: fds.open.count + type: long + metric_type: gauge + description: Number of open file descriptors + - name: started.sec + type: double + metric_type: gauge + description: Seconds since the process started + - name: http + type: group + fields: + - name: request.duration.us.percentile.* + type: object + description: Request duration microseconds percentiles + - name: request.duration.us.sum + type: double + metric_type: counter + unit: micros + description: Request duration microseconds cumulative sum + - name: request.duration.us.count + type: long + metric_type: counter + unit: micros + description: Request count for duration + - name: request.size.bytes.percentile.* + type: object + description: Request size percentiles + - name: request.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Request size cumulative sum + - name: request.size.bytes.count + type: long + unit: byte + metric_type: counter + description: Request count for size + - name: response.size.bytes.percentile.* + type: object + description: Response size percentiles + - name: response.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Response size cumulative sum + - name: response.size.bytes.count + type: long + metric_type: counter + description: Response count + - name: request.count + type: long + metric_type: counter + description: Request count for response + - name: client.request.count + type: long + metric_type: counter + description: Number of requests as client + - name: request + type: group + fields: + - name: count + type: long + metric_type: counter + description: Number of requests + - name: latency.sum + type: long + metric_type: counter + description: Requests latency, sum of latencies in microseconds + - name: latency.count + type: long + metric_type: counter + description: Request latency, number of requests + - name: latency.bucket.* + type: object + description: Request latency histogram buckets + - name: duration.us.sum + type: long + metric_type: counter + description: Request duration, sum in microseconds + - name: duration.us.count + type: long + metric_type: counter + description: Request duration, number of operations + - name: duration.us.bucket.* + type: object + description: Request duration, histogram buckets + - name: current.count + type: long + metric_type: counter + description: Inflight requests + - name: longrunning.count + type: long + metric_type: counter + description: Number of requests active long running requests + - name: etcd.object.count + type: long + metric_type: gauge + description: Number of kubernetes objects at etcd + - name: audit.event.count + type: long + metric_type: counter + description: Number of audit events + - name: audit.rejected.count + type: long + metric_type: counter + description: Number of audit rejected events diff --git a/test/packages/kubernetes/data_stream/apiserver/manifest.yml b/test/packages/kubernetes/data_stream/apiserver/manifest.yml new file mode 100644 index 0000000000..86a58b1eb3 --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/manifest.yml @@ -0,0 +1,45 @@ +title: Kubernetes API Server metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://${env.KUBERNETES_SERVICE_HOST}:${env.KUBERNETES_SERVICE_PORT} + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 30s + - name: ssl.certificate_authorities + type: text + title: SSL Certificate Authorities + multi: true + required: true + show_user: true + default: + - /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + title: Kubernetes API Server metrics + description: Collect Kubernetes API Server metrics diff --git a/test/packages/kubernetes/data_stream/apiserver/sample_event.json b/test/packages/kubernetes/data_stream/apiserver/sample_event.json new file mode 100644 index 0000000000..fda7d3222a --- /dev/null +++ b/test/packages/kubernetes/data_stream/apiserver/sample_event.json @@ -0,0 +1,62 @@ +{ + "@timestamp": "2020-06-25T12:30:34.616Z", + "metricset": { + "name": "apiserver", + "period": 30000 + }, + "service": { + "address": "10.96.0.1:443", + "type": "kubernetes" + }, + "event": { + "dataset": "kubernetes.apiserver", + "module": "kubernetes", + "duration": 114780772 + }, + "kubernetes": { + "apiserver": { + "request": { + "client": "metrics-server/v0.0.0 (linux/amd64) kubernetes/$Format", + "version": "v1", + "count": 3, + "scope": "cluster", + "content_type": "application/vnd.kubernetes.protobuf", + "code": "200", + "verb": "LIST", + "component": "apiserver", + "resource": "nodes" + } + } + }, + "ecs": { + "version": "1.5.0" + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + } + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/container/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/container/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/container/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/container/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..6c69562d49 --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/_dev/test/system/test-default-config.yml @@ -0,0 +1,7 @@ +service: kubernetes +data_stream: + vars: + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + period: 5s + hosts: + - https://{{Hostname}}:10250 diff --git a/test/packages/kubernetes/data_stream/container/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/container/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..bdfe1999ea --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["container"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.verification_mode: {{ssl.verification_mode}} +{{/if}} diff --git a/test/packages/kubernetes/data_stream/container/fields/agent.yml b/test/packages/kubernetes/data_stream/container/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/container/fields/base-fields.yml b/test/packages/kubernetes/data_stream/container/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/container/fields/ecs.yml b/test/packages/kubernetes/data_stream/container/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/container/fields/fields.yml b/test/packages/kubernetes/data_stream/container/fields/fields.yml new file mode 100644 index 0000000000..f09af30a34 --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/fields/fields.yml @@ -0,0 +1,199 @@ +- name: kubernetes.container + type: group + fields: + - name: start_time + type: date + description: | + Start time + - name: cpu + type: group + fields: + - name: usage + type: group + fields: + - name: core + type: group + fields: + - name: ns + type: long + metric_type: gauge + description: | + Container CPU Core usage nanoseconds + - name: nanocores + type: long + metric_type: gauge + description: | + CPU used nanocores + - name: node.pct + type: scaled_float + format: percent + unit: percent + metric_type: gauge + description: | + CPU usage as a percentage of the total node allocatable CPU + - name: limit.pct + type: scaled_float + format: percent + unit: percent + metric_type: gauge + description: | + CPU usage as a percentage of the defined limit for the container (or total node allocatable CPU if unlimited) + - name: logs + type: group + fields: + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Logs available capacity in bytes + - name: capacity + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Logs total capacity in bytes + - name: used + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Logs used capacity in bytes + - name: inodes + type: group + fields: + - name: count + type: long + metric_type: gauge + description: | + Total available inodes + - name: free + type: long + metric_type: gauge + description: | + Total free inodes + - name: used + type: long + metric_type: gauge + description: | + Total used inodes + - name: memory + type: group + fields: + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Total available memory + - name: usage + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Total memory usage + - name: node.pct + type: scaled_float + format: percent + unit: percent + metric_type: gauge + description: | + Memory usage as a percentage of the total node allocatable memory + - name: limit.pct + type: scaled_float + format: percent + unit: percent + metric_type: gauge + description: | + Memory usage as a percentage of the defined limit for the container (or total node allocatable memory if unlimited) + - name: rss + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + RSS memory usage + - name: workingset + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Working set memory usage + - name: pagefaults + type: long + metric_type: counter + description: | + Number of page faults + - name: majorpagefaults + type: long + metric_type: counter + description: | + Number of major page faults + - name: rootfs + type: group + fields: + - name: capacity + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Root filesystem total capacity in bytes + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Root filesystem total available in bytes + - name: used + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Root filesystem total used in bytes + - name: inodes + type: group + fields: + - name: used + type: long + metric_type: gauge + description: | + Used inodes diff --git a/test/packages/kubernetes/data_stream/container/manifest.yml b/test/packages/kubernetes/data_stream/container/manifest.yml new file mode 100644 index 0000000000..9aa96fe85a --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/manifest.yml @@ -0,0 +1,44 @@ +title: Kubernetes Container metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://${env.NODE_NAME}:10250 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: ssl.verification_mode + type: text + title: SSL Verification Mode + multi: false + required: true + show_user: true + default: none + title: Kubernetes Container metrics + description: Collect Kubernetes Container metrics diff --git a/test/packages/kubernetes/data_stream/container/sample_event.json b/test/packages/kubernetes/data_stream/container/sample_event.json new file mode 100644 index 0000000000..2bbe7c0a93 --- /dev/null +++ b/test/packages/kubernetes/data_stream/container/sample_event.json @@ -0,0 +1,150 @@ +{ + "@timestamp": "2020-06-25T12:32:29.748Z", + "kubernetes": { + "namespace": "kube-system", + "node": { + "name": "minikube" + }, + "pod": { + "name": "metricbeat-g9fc6" + }, + "container": { + "rootfs": { + "used": { + "bytes": 61440 + }, + "inodes": { + "used": 17 + }, + "available": { + "bytes": 6724222976 + }, + "capacity": { + "bytes": 17361141760 + } + }, + "logs": { + "used": { + "bytes": 1617920 + }, + "inodes": { + "count": 9768928, + "used": 223910, + "free": 9545018 + }, + "available": { + "bytes": 6724222976 + }, + "capacity": { + "bytes": 17361141760 + } + }, + "start_time": "2020-06-25T07:19:37Z", + "name": "metricbeat", + "cpu": { + "usage": { + "node": { + "pct": 0.00015289625 + }, + "limit": { + "pct": 0.00015289625 + }, + "nanocores": 611585, + "core": { + "ns": 12206519774 + } + } + }, + "memory": { + "pagefaults": 10164, + "majorpagefaults": 528, + "available": { + "bytes": 188600320 + }, + "usage": { + "limit": { + "pct": 0.005608354460473573 + }, + "bytes": 94306304, + "node": { + "pct": 0.005608354460473573 + } + }, + "workingset": { + "bytes": 21114880 + }, + "rss": { + "bytes": 18386944 + } + } + } + }, + "host": { + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + }, + "name": "minikube", + "id": "b0e83d397c054b8a99a431072fe4617b" + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube" + }, + "metricset": { + "period": 10000, + "name": "container" + }, + "service": { + "address": "minikube:10250", + "type": "kubernetes" + }, + "event": { + "dataset": "kubernetes.container", + "module": "kubernetes", + "duration": 11091346 + }, + "ecs": { + "version": "1.5.0" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/controllermanager/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/controllermanager/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/controllermanager/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/controllermanager/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..60403494f7 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/_dev/test/system/test-default-config.yml @@ -0,0 +1,8 @@ +service: kubernetes +data_stream: + vars: + period: 5s + hosts: + - https://0.0.0.0:10257 + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + ssl.verification_mode: "none" diff --git a/test/packages/kubernetes/data_stream/controllermanager/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/controllermanager/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..37b11e6e20 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["controllermanager"] +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} + +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.verification_mode: {{ssl.verification_mode}} +{{/if}} diff --git a/test/packages/kubernetes/data_stream/controllermanager/fields/agent.yml b/test/packages/kubernetes/data_stream/controllermanager/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/controllermanager/fields/base-fields.yml b/test/packages/kubernetes/data_stream/controllermanager/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/controllermanager/fields/ecs.yml b/test/packages/kubernetes/data_stream/controllermanager/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/controllermanager/fields/fields.yml b/test/packages/kubernetes/data_stream/controllermanager/fields/fields.yml new file mode 100644 index 0000000000..d3a4e449b3 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/fields/fields.yml @@ -0,0 +1,153 @@ +- name: kubernetes.controllermanager + type: group + fields: + - name: handler + type: keyword + description: | + Request handler + - name: code + type: keyword + description: | + HTTP code + - name: method + type: keyword + description: | + HTTP method + - name: host + type: keyword + description: | + Request host + - name: name + type: keyword + description: | + Name for the resource + - name: zone + type: keyword + description: | + Infrastructure zone + - name: process + type: group + fields: + - name: cpu.sec + type: double + metric_type: counter + description: CPU seconds + - name: memory.resident.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in resident memory + - name: memory.virtual.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in virtual memory + - name: fds.open.count + type: long + metric_type: gauge + description: Number of open file descriptors + - name: started.sec + type: double + metric_type: gauge + description: Seconds since the process started + - name: http + type: group + fields: + - name: request.duration.us.percentile.* + type: object + description: Request duration microseconds percentiles + - name: request.duration.us.sum + type: double + unit: micros + metric_type: counter + description: Request duration microseconds cumulative sum + - name: request.duration.us.count + type: long + unit: micros + metric_type: counter + description: Request count for duration + - name: request.size.bytes.percentile.* + type: object + description: Request size percentiles + - name: request.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Request size cumulative sum + - name: request.size.bytes.count + type: long + unit: byte + metric_type: counter + description: Request count for size + - name: response.size.bytes.percentile.* + type: object + description: Response size percentiles + - name: response.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Response size cumulative sum + - name: response.size.bytes.count + type: long + unit: byte + metric_type: counter + description: Response count + - name: request.count + type: long + metric_type: counter + description: Request count for response + - name: client.request.count + type: long + metric_type: counter + description: | + Number of requests as client + - name: workqueue + type: group + fields: + - name: longestrunning.sec + type: double + metric_type: gauge + description: Longest running processors + - name: unfinished.sec + type: double + metric_type: gauge + description: Unfinished processors + - name: adds.count + type: long + metric_type: counter + description: Workqueue add count + - name: depth.count + type: long + metric_type: gauge + description: Workqueue depth count + - name: retries.count + type: long + metric_type: counter + description: Workqueue number of retries + - name: node.collector + type: group + fields: + - name: eviction.count + type: long + metric_type: counter + description: Number of node evictions + - name: unhealthy.count + type: long + metric_type: gauge + description: Number of unhealthy nodes + - name: count + type: long + metric_type: gauge + description: Number of nodes + - name: health.pct + type: long + metric_type: gauge + description: Percentage of healthy nodes + - name: leader.is_master + type: boolean + description: | + Whether the node is master diff --git a/test/packages/kubernetes/data_stream/controllermanager/manifest.yml b/test/packages/kubernetes/data_stream/controllermanager/manifest.yml new file mode 100644 index 0000000000..2857e48690 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Controller Manager metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://0.0.0.0:10257 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: ssl.verification_mode + type: text + title: SSL Verification Mode + multi: false + required: true + show_user: true + default: none + title: Kubernetes Controller Manager metrics + description: Collect Kubernetes Controller Manager metrics diff --git a/test/packages/kubernetes/data_stream/controllermanager/sample_event.json b/test/packages/kubernetes/data_stream/controllermanager/sample_event.json new file mode 100644 index 0000000000..7aa39a4dd4 --- /dev/null +++ b/test/packages/kubernetes/data_stream/controllermanager/sample_event.json @@ -0,0 +1,93 @@ +{ + "@timestamp": "2020-06-25T12:33:29.643Z", + "kubernetes": { + "controllermanager": { + "workqueue": { + "unfinished": { + "sec": 0 + }, + "adds": { + "count": 0 + }, + "depth": { + "count": 0 + }, + "longestrunning": { + "sec": 0 + }, + "retries": { + "count": 0 + } + }, + "name": "certificate" + } + }, + "event": { + "dataset": "kubernetes.controllermanager", + "module": "kubernetes", + "duration": 8893806 + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "name": "minikube" + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube", + "type": "metricbeat" + }, + "metricset": { + "period": 10000, + "name": "controllermanager" + }, + "service": { + "address": "localhost:10252", + "type": "kubernetes" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/event/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/event/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..fe1ecc78ce --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/agent/stream/stream.yml.hbs @@ -0,0 +1,6 @@ +metricsets: ["event"] +period: {{period}} +add_metadata: {{add_metadata}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/event/fields/agent.yml b/test/packages/kubernetes/data_stream/event/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/event/fields/base-fields.yml b/test/packages/kubernetes/data_stream/event/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/event/fields/ecs.yml b/test/packages/kubernetes/data_stream/event/fields/ecs.yml new file mode 100644 index 0000000000..5c8f7e557a --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/fields/ecs.yml @@ -0,0 +1,10 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/event/fields/fields.yml b/test/packages/kubernetes/data_stream/event/fields/fields.yml new file mode 100644 index 0000000000..c0cdac1f96 --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/fields/fields.yml @@ -0,0 +1,99 @@ +- name: kubernetes.event + type: group + fields: + - name: count + type: long + metric_type: counter + description: | + Count field records the number of times the particular event has occurred + - name: timestamp + type: group + fields: + - name: first_occurrence + type: date + description: | + Timestamp of first occurrence of event + - name: last_occurrence + type: date + description: | + Timestamp of last occurrence of event + - name: message + type: text + description: | + Message recorded for the given event + - name: reason + type: keyword + description: | + Reason recorded for the given event + - name: type + type: keyword + description: | + Type of the given event + - name: source + type: group + fields: + - name: component + type: keyword + description: | + Component from which the event is generated + - name: host + type: keyword + description: | + Node name on which the event is generated + - name: metadata + type: group + fields: + - name: timestamp + type: group + fields: + - name: created + type: date + description: | + Timestamp of creation of the given event + - name: generate_name + type: keyword + description: | + Generate name of the event + - name: name + type: keyword + description: | + Name of the event + - name: namespace + type: keyword + description: | + Namespace in which event was generated + - name: resource_version + type: keyword + description: | + Version of the event resource + - name: uid + type: keyword + description: | + Unique identifier to the event object + - name: self_link + type: keyword + description: | + URL representing the event + - name: involved_object + type: group + fields: + - name: api_version + type: keyword + description: | + API version of the object + - name: kind + type: keyword + description: | + API kind of the object + - name: name + type: keyword + description: | + name of the object + - name: resource_version + type: keyword + description: | + resource version of the object + - name: uid + type: keyword + description: | + UUID version of the object diff --git a/test/packages/kubernetes/data_stream/event/manifest.yml b/test/packages/kubernetes/data_stream/event/manifest.yml new file mode 100644 index 0000000000..bab134bb4f --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/manifest.yml @@ -0,0 +1,29 @@ +title: Kubernetes Event metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + title: Kubernetes Event metrics + description: Collect Kubernetes Event metrics diff --git a/test/packages/kubernetes/data_stream/event/sample_event.json b/test/packages/kubernetes/data_stream/event/sample_event.json new file mode 100644 index 0000000000..01c0c93fcf --- /dev/null +++ b/test/packages/kubernetes/data_stream/event/sample_event.json @@ -0,0 +1,78 @@ +{ + "@timestamp": "2020-06-25T12:30:27.575Z", + "metricset": { + "name": "event" + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc" + }, + "ecs": { + "version": "1.5.0" + }, + "event": { + "dataset": "kubernetes.event", + "module": "kubernetes" + }, + "service": { + "type": "kubernetes" + }, + "kubernetes": { + "event": { + "metadata": { + "uid": "604e39e0-862f-4615-9cec-8cb62299dea3", + "resource_version": "485630", + "timestamp": { + "created": "2020-06-25T07:20:25.000Z" + }, + "name": "monitor.161bb862545e3099", + "namespace": "beats", + "self_link": "/api/v1/namespaces/beats/events/monitor.161bb862545e3099", + "generate_name": "" + }, + "timestamp": { + "first_occurrence": "2020-06-25T07:20:25.000Z", + "last_occurrence": "2020-06-25T12:30:27.000Z" + }, + "message": "Failed to find referenced backend beats/monitor: Elasticsearch.elasticsearch.k8s.elastic.co \"monitor\" not found", + "reason": "AssociationError", + "type": "Warning", + "count": 1861, + "source": { + "host": "", + "component": "kibana-association-controller" + }, + "involved_object": { + "api_version": "kibana.k8s.elastic.co/v1", + "resource_version": "101842", + "name": "monitor", + "kind": "Kibana", + "uid": "45a19de5-5eef-4090-a2d3-dbceb0a28af8" + } + } + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + } + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/node/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/node/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/node/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/node/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..6c69562d49 --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/_dev/test/system/test-default-config.yml @@ -0,0 +1,7 @@ +service: kubernetes +data_stream: + vars: + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + period: 5s + hosts: + - https://{{Hostname}}:10250 diff --git a/test/packages/kubernetes/data_stream/node/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/node/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..c4a3cbda5e --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["node"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.verification_mode: {{ssl.verification_mode}} +{{/if}} diff --git a/test/packages/kubernetes/data_stream/node/fields/agent.yml b/test/packages/kubernetes/data_stream/node/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/node/fields/base-fields.yml b/test/packages/kubernetes/data_stream/node/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/node/fields/ecs.yml b/test/packages/kubernetes/data_stream/node/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/node/fields/fields.yml b/test/packages/kubernetes/data_stream/node/fields/fields.yml new file mode 100644 index 0000000000..dc46f35f2a --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/fields/fields.yml @@ -0,0 +1,198 @@ +- name: kubernetes.node + type: group + fields: + - name: start_time + type: date + description: | + Start time + - name: cpu + type: group + fields: + - name: usage + type: group + fields: + - name: core + type: group + fields: + - name: ns + type: long + metric_type: gauge + description: | + Node CPU Core usage nanoseconds + - name: nanocores + type: long + metric_type: gauge + description: | + CPU used nanocores + - name: memory + type: group + fields: + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Total available memory + - name: usage + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Total memory usage + - name: rss + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + RSS memory usage + - name: workingset + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Working set memory usage + - name: pagefaults + type: long + metric_type: counter + description: | + Number of page faults + - name: majorpagefaults + type: long + metric_type: counter + description: | + Number of major page faults + - name: network + type: group + fields: + - name: rx + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: counter + description: | + Received bytes + - name: errors + type: long + description: | + Rx errors + - name: tx + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: counter + description: | + Transmitted bytes + - name: errors + type: long + metric_type: counter + description: | + Tx errors + - name: fs + type: group + fields: + - name: capacity + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Filesystem total capacity in bytes + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Filesystem total available in bytes + - name: used + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Filesystem total used in bytes + - name: inodes + type: group + fields: + - name: used + type: long + metric_type: gauge + description: | + Number of used inodes + - name: count + type: long + metric_type: gauge + description: | + Number of inodes + - name: free + type: long + metric_type: gauge + description: | + Number of free inodes + - name: runtime + type: group + fields: + - name: imagefs + type: group + fields: + - name: capacity + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Image filesystem total capacity in bytes + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Image filesystem total available in bytes + - name: used + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Image filesystem total used in bytes diff --git a/test/packages/kubernetes/data_stream/node/manifest.yml b/test/packages/kubernetes/data_stream/node/manifest.yml new file mode 100644 index 0000000000..bbf7ebb45d --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/manifest.yml @@ -0,0 +1,44 @@ +title: Kubernetes Node metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://${env.NODE_NAME}:10250 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: ssl.verification_mode + type: text + title: SSL Verification Mode + multi: false + required: true + show_user: true + default: none + title: Kubernetes Node metrics + description: Collect Kubernetes Node metrics diff --git a/test/packages/kubernetes/data_stream/node/sample_event.json b/test/packages/kubernetes/data_stream/node/sample_event.json new file mode 100644 index 0000000000..3128c86a50 --- /dev/null +++ b/test/packages/kubernetes/data_stream/node/sample_event.json @@ -0,0 +1,148 @@ +{ + "@timestamp": "2020-06-25T12:34:39.723Z", + "event": { + "dataset": "kubernetes.node", + "module": "kubernetes", + "duration": 13042307 + }, + "service": { + "type": "kubernetes", + "address": "minikube:10250" + }, + "host": { + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "name": "minikube", + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b" + }, + "metricset": { + "name": "node", + "period": 10000 + }, + "kubernetes": { + "labels": { + "beta_kubernetes_io/os": "linux", + "kubernetes_io/arch": "amd64", + "kubernetes_io/hostname": "minikube", + "kubernetes_io/os": "linux", + "node-role_kubernetes_io/master": "", + "beta_kubernetes_io/arch": "amd64" + }, + "node": { + "memory": { + "available": { + "bytes": 12746428416 + }, + "usage": { + "bytes": 5670916096 + }, + "workingset": { + "bytes": 4068896768 + }, + "rss": { + "bytes": 3252125696 + }, + "pagefaults": 31680, + "majorpagefaults": 0 + }, + "network": { + "rx": { + "bytes": 107077476, + "errors": 0 + }, + "tx": { + "bytes": 67457933, + "errors": 0 + } + }, + "fs": { + "available": { + "bytes": 6655090688 + }, + "capacity": { + "bytes": 17361141760 + }, + "used": { + "bytes": 9689358336 + }, + "inodes": { + "count": 9768928, + "used": 224151, + "free": 9544777 + } + }, + "runtime": { + "imagefs": { + "capacity": { + "bytes": 17361141760 + }, + "used": { + "bytes": 8719928568 + }, + "available": { + "bytes": 6655090688 + } + } + }, + "start_time": "2020-06-25T07:18:38Z", + "name": "minikube", + "cpu": { + "usage": { + "core": { + "ns": 6136184971873 + }, + "nanocores": 455263291 + } + } + } + }, + "agent": { + "name": "minikube", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a" + }, + "ecs": { + "version": "1.5.0" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/pod/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/pod/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/pod/fields/base-fields.yml b/test/packages/kubernetes/data_stream/pod/fields/base-fields.yml index e851bc3347..d43ffd7964 100644 --- a/test/packages/kubernetes/data_stream/pod/fields/base-fields.yml +++ b/test/packages/kubernetes/data_stream/pod/fields/base-fields.yml @@ -21,7 +21,12 @@ - name: pod.uid type: keyword description: > - Kubernetes Pod UID + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP - name: namespace type: keyword @@ -52,6 +57,13 @@ description: > Kubernetes annotations map + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + - name: replicaset.name type: keyword description: > diff --git a/test/packages/kubernetes/data_stream/pod/fields/ecs.yml b/test/packages/kubernetes/data_stream/pod/fields/ecs.yml index d7ce11b7c1..adbab0f791 100644 --- a/test/packages/kubernetes/data_stream/pod/fields/ecs.yml +++ b/test/packages/kubernetes/data_stream/pod/fields/ecs.yml @@ -7,3 +7,7 @@ - name: service.type type: keyword description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/pod/fields/fields.yml b/test/packages/kubernetes/data_stream/pod/fields/fields.yml index 74a954832b..3073996d3b 100644 --- a/test/packages/kubernetes/data_stream/pod/fields/fields.yml +++ b/test/packages/kubernetes/data_stream/pod/fields/fields.yml @@ -14,10 +14,13 @@ - name: bytes type: long format: bytes + unit: byte + metric_type: counter description: | Received bytes - name: errors type: long + metric_type: counter description: | Rx errors - name: tx @@ -26,10 +29,13 @@ - name: bytes type: long format: bytes + unit: byte + metric_type: counter description: | Transmitted bytes - name: errors type: long + metric_type: counter description: | Tx errors - name: cpu @@ -40,16 +46,22 @@ fields: - name: nanocores type: long + unit: byte + metric_type: gauge description: | CPU used nanocores - name: node.pct type: scaled_float format: percent + unit: percent + metric_type: gauge description: | CPU usage as a percentage of the total node CPU - name: limit.pct type: scaled_float format: percent + unit: percent + metric_type: gauge description: | CPU usage as a percentage of the defined limit for the pod containers (or total node CPU if one or more containers of the pod are unlimited) - name: memory @@ -61,16 +73,22 @@ - name: bytes type: long format: bytes + unit: byte + metric_type: gauge description: | Total memory usage - name: node.pct type: scaled_float format: percent + unit: percent + metric_type: gauge description: | Memory usage as a percentage of the total node allocatable memory - name: limit.pct type: scaled_float format: percent + unit: percent + metric_type: gauge description: | Memory usage as a percentage of the defined limit for the pod containers (or total node allocatable memory if unlimited) - name: available @@ -79,6 +97,8 @@ - name: bytes type: long format: bytes + unit: percent + metric_type: gauge description: | Total memory available - name: working_set @@ -87,6 +107,8 @@ - name: bytes type: long format: bytes + unit: percent + metric_type: gauge description: | Total working set memory - name: rss @@ -95,14 +117,18 @@ - name: bytes type: long format: bytes + unit: percent + metric_type: gauge description: | Total resident set size memory - name: page_faults type: long + metric_type: counter description: | Total page faults - name: major_page_faults type: long + metric_type: counter description: | Total major page faults - name: ip diff --git a/test/packages/kubernetes/data_stream/pod/manifest.yml b/test/packages/kubernetes/data_stream/pod/manifest.yml index 8445751eed..624d996a13 100644 --- a/test/packages/kubernetes/data_stream/pod/manifest.yml +++ b/test/packages/kubernetes/data_stream/pod/manifest.yml @@ -25,7 +25,7 @@ streams: required: true show_user: true default: - - https://${NODE_NAME}:10250 + - https://${env.NODE_NAME}:10250 - name: period type: text title: Period diff --git a/test/packages/kubernetes/data_stream/proxy/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/proxy/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/proxy/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/proxy/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0807bd3e70 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + period: 5s + hosts: + - http://{{Hostname}}:10249 diff --git a/test/packages/kubernetes/data_stream/proxy/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/proxy/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..1723efeec0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/agent/stream/stream.yml.hbs @@ -0,0 +1,6 @@ +metricsets: ["proxy"] +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} diff --git a/test/packages/kubernetes/data_stream/proxy/fields/agent.yml b/test/packages/kubernetes/data_stream/proxy/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/proxy/fields/base-fields.yml b/test/packages/kubernetes/data_stream/proxy/fields/base-fields.yml new file mode 100644 index 0000000000..7c798f4534 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/fields/base-fields.yml @@ -0,0 +1,12 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. diff --git a/test/packages/kubernetes/data_stream/proxy/fields/ecs.yml b/test/packages/kubernetes/data_stream/proxy/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/proxy/fields/fields.yml b/test/packages/kubernetes/data_stream/proxy/fields/fields.yml new file mode 100644 index 0000000000..5b50c2299f --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/fields/fields.yml @@ -0,0 +1,123 @@ +- name: kubernetes.proxy + type: group + fields: + - name: handler + type: keyword + description: | + Request handler + - name: code + type: keyword + description: | + HTTP code + - name: method + type: keyword + description: | + HTTP method + - name: host + type: keyword + description: | + Request host + - name: process + type: group + fields: + - name: cpu.sec + type: double + metric_type: counter + description: CPU seconds + - name: memory.resident.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in resident memory + - name: memory.virtual.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in virtual memory + - name: fds.open.count + type: long + metric_type: gauge + description: Number of open file descriptors + - name: started.sec + type: double + metric_type: gauge + description: Seconds since the process started + - name: http + type: group + fields: + - name: request.duration.us.percentile.* + type: object + description: Request duration microseconds percentiles + - name: request.duration.us.sum + type: double + metric_type: counter + unit: micros + description: Request duration microseconds cumulative sum + - name: request.duration.us.count + type: long + metric_type: counter + unit: micros + description: Request count for duration + - name: request.size.bytes.percentile.* + type: object + description: Request size percentiles + - name: request.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Request size cumulative sum + - name: request.size.bytes.count + type: long + unit: byte + metric_type: counter + description: Request count for size + - name: response.size.bytes.percentile.* + type: object + description: Response size percentiles + - name: response.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Response size cumulative sum + - name: response.size.bytes.count + type: long + metric_type: counter + description: Response count + - name: request.count + type: long + metric_type: counter + description: Request count + - name: client.request.count + type: long + metric_type: counter + description: | + Number of requests as client + - name: sync + type: group + fields: + - name: rules.duration.us.sum + type: long + metric_type: counter + description: SyncProxyRules duration, sum of durations in microseconds + - name: rules.duration.us.count + type: long + metric_type: counter + description: SyncProxyRules duration, number of operations + - name: rules.duration.us.bucket.* + type: object + description: SyncProxyRules duration, histogram buckets + - name: networkprogramming.duration.us.sum + type: long + metric_type: counter + description: Network programming duration, sum in microseconds + - name: networkprogramming.duration.us.count + type: long + metric_type: counter + description: Network programming duration, number of operations + - name: networkprogramming.duration.us.bucket.* + type: object + description: Network programming duration, histogram buckets diff --git a/test/packages/kubernetes/data_stream/proxy/manifest.yml b/test/packages/kubernetes/data_stream/proxy/manifest.yml new file mode 100644 index 0000000000..9c7a9e3688 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/manifest.yml @@ -0,0 +1,23 @@ +title: Kubernetes Proxy metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - localhost:10249 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Proxy metrics + description: Collect Kubernetes Proxy metrics diff --git a/test/packages/kubernetes/data_stream/proxy/sample_event.json b/test/packages/kubernetes/data_stream/proxy/sample_event.json new file mode 100644 index 0000000000..50ba492ea8 --- /dev/null +++ b/test/packages/kubernetes/data_stream/proxy/sample_event.json @@ -0,0 +1,216 @@ +{ + "@timestamp": "2020-06-25T12:35:29.639Z", + "agent": { + "name": "minikube", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a" + }, + "host": { + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "name": "minikube", + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false + }, + "kubernetes": { + "proxy": { + "sync": { + "rules": { + "duration": { + "us": { + "sum": 763620.9329999998, + "count": 18, + "bucket": { + "1000": 0, + "2000": 0, + "4000": 0, + "8000": 0, + "16000": 0, + "32000": 10, + "64000": 16, + "128000": 17, + "256000": 18, + "512000": 18, + "1024000": 18, + "2048000": 18, + "4096000": 18, + "8192000": 18, + "16384000": 18, + "+Inf": 18 + } + } + } + }, + "networkprogramming": { + "duration": { + "us": { + "count": 19, + "bucket": { + "0": 0, + "250000": 4, + "500000": 8, + "1000000": 11, + "2000000": 11, + "3000000": 11, + "4000000": 11, + "5000000": 11, + "6000000": 11, + "7000000": 11, + "8000000": 11, + "9000000": 11, + "10000000": 11, + "11000000": 11, + "12000000": 11, + "13000000": 11, + "14000000": 11, + "15000000": 11, + "16000000": 11, + "17000000": 11, + "18000000": 11, + "19000000": 11, + "20000000": 11, + "21000000": 11, + "22000000": 11, + "23000000": 11, + "24000000": 11, + "25000000": 11, + "26000000": 11, + "27000000": 11, + "28000000": 11, + "29000000": 11, + "30000000": 11, + "31000000": 11, + "32000000": 11, + "33000000": 11, + "34000000": 11, + "35000000": 11, + "36000000": 11, + "37000000": 11, + "38000000": 11, + "39000000": 11, + "40000000": 11, + "41000000": 11, + "42000000": 11, + "43000000": 11, + "44000000": 11, + "45000000": 11, + "46000000": 11, + "47000000": 11, + "48000000": 11, + "49000000": 11, + "50000000": 11, + "51000000": 11, + "52000000": 11, + "53000000": 11, + "54000000": 11, + "55000000": 11, + "56000000": 11, + "57000000": 11, + "58000000": 11, + "59000000": 11, + "60000000": 11, + "65000000": 11, + "70000000": 11, + "75000000": 11, + "80000000": 11, + "85000000": 11, + "90000000": 11, + "95000000": 11, + "100000000": 11, + "105000000": 11, + "110000000": 11, + "115000000": 11, + "120000000": 11, + "150000000": 11, + "180000000": 11, + "210000000": 11, + "240000000": 11, + "270000000": 11, + "300000000": 11, + "+Inf": 19 + }, + "sum": 5571080914163.27 + } + } + } + }, + "process": { + "cpu": { + "sec": 8 + }, + "memory": { + "resident": { + "bytes": 37609472 + }, + "virtual": { + "bytes": 143990784 + } + }, + "started": { + "sec": 1593069580.69 + }, + "fds": { + "open": { + "count": 17 + } + } + } + } + }, + "ecs": { + "version": "1.5.0" + }, + "event": { + "module": "kubernetes", + "duration": 2031254, + "dataset": "kubernetes.proxy" + }, + "metricset": { + "name": "proxy", + "period": 10000 + }, + "service": { + "address": "localhost:10249", + "type": "kubernetes" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/scheduler/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/scheduler/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/scheduler/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/scheduler/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..c775d296e6 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/_dev/test/system/test-default-config.yml @@ -0,0 +1,8 @@ +service: kubernetes +data_stream: + vars: + period: 5s + hosts: + - https://0.0.0.0:10259 + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + ssl.verification_mode: "none" diff --git a/test/packages/kubernetes/data_stream/scheduler/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/scheduler/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..99a3b27129 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["scheduler"] +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} + +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.verification_mode: {{ssl.verification_mode}} +{{/if}} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/scheduler/fields/agent.yml b/test/packages/kubernetes/data_stream/scheduler/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/scheduler/fields/base-fields.yml b/test/packages/kubernetes/data_stream/scheduler/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/scheduler/fields/ecs.yml b/test/packages/kubernetes/data_stream/scheduler/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/scheduler/fields/fields.yml b/test/packages/kubernetes/data_stream/scheduler/fields/fields.yml new file mode 100644 index 0000000000..e6f7f48ee7 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/fields/fields.yml @@ -0,0 +1,156 @@ +- name: kubernetes.scheduler + type: group + fields: + - name: handler + type: keyword + description: | + Request handler + - name: code + type: keyword + description: | + HTTP code + - name: method + type: keyword + description: | + HTTP method + - name: host + type: keyword + description: | + Request host + - name: name + type: keyword + description: | + Name for the resource + - name: result + type: keyword + description: | + Schedule attempt result + - name: operation + type: keyword + description: | + Scheduling operation + - name: process + type: group + fields: + - name: cpu.sec + type: double + metric_type: counter + description: CPU seconds + - name: memory.resident.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in resident memory + - name: memory.virtual.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: Bytes in virtual memory + - name: fds.open.count + type: long + metric_type: gauge + description: Number of open file descriptors + - name: started.sec + type: double + metric_type: gauge + description: Seconds since the process started + - name: http + type: group + fields: + - name: request.duration.us.percentile.* + type: object + description: Request duration microseconds percentiles + - name: request.duration.us.sum + type: double + metric_type: counter + unit: micros + description: Request duration microseconds cumulative sum + - name: request.duration.us.count + type: long + metric_type: counter + unit: micros + description: Request count for duration + - name: request.size.bytes.percentile.* + type: object + description: Request size percentiles + - name: request.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Request size cumulative sum + - name: request.size.bytes.count + type: long + unit: byte + metric_type: counter + description: Request count for size + - name: response.size.bytes.percentile.* + type: object + description: Response size percentiles + - name: response.size.bytes.sum + type: long + format: bytes + unit: byte + metric_type: counter + description: Response size cumulative sum + - name: response.size.bytes.count + type: long + metric_type: counter + description: Response count + - name: request.count + type: long + metric_type: counter + description: Request count + - name: client.request.count + type: long + metric_type: counter + description: | + Number of requests as client + - name: leader.is_master + type: boolean + description: | + Whether the node is master + - name: scheduling + type: group + fields: + - name: e2e.duration.us.bucket.* + type: object + description: End to end scheduling duration microseconds + - name: e2e.duration.us.sum + type: long + unit: micros + metric_type: counter + description: End to end scheduling duration microseconds sum + - name: e2e.duration.us.count + type: long + unit: micros + metric_type: counter + description: End to end scheduling count + - name: pod.preemption.victims.bucket.* + type: long + description: Pod preemption victims + - name: pod.preemption.victims.sum + type: long + metric_type: counter + description: Pod preemption victims sum + - name: pod.preemption.victims.count + type: long + metric_type: counter + description: Pod preemption victims count + - name: pod.attempts.count + type: long + metric_type: counter + description: Pod attempts count + - name: duration.seconds.percentile.* + type: object + description: Scheduling duration percentiles + - name: duration.seconds.sum + type: double + metric_type: counter + description: Scheduling duration cumulative sum + - name: duration.seconds.count + type: long + metric_type: counter + description: Scheduling count diff --git a/test/packages/kubernetes/data_stream/scheduler/manifest.yml b/test/packages/kubernetes/data_stream/scheduler/manifest.yml new file mode 100644 index 0000000000..1a4d69fab0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Scheduler metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://0.0.0.0:10259 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: ssl.verification_mode + type: text + title: SSL Verification Mode + multi: false + required: true + show_user: true + default: none + title: Kubernetes Scheduler metrics + description: Collect Kubernetes Scheduler metrics diff --git a/test/packages/kubernetes/data_stream/scheduler/sample_event.json b/test/packages/kubernetes/data_stream/scheduler/sample_event.json new file mode 100644 index 0000000000..b932b1797d --- /dev/null +++ b/test/packages/kubernetes/data_stream/scheduler/sample_event.json @@ -0,0 +1,79 @@ +{ + "@timestamp": "2020-06-25T12:35:59.624Z", + "agent": { + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube", + "type": "metricbeat" + }, + "host": { + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + }, + "name": "minikube", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ] + }, + "ecs": { + "version": "1.5.0" + }, + "event": { + "duration": 7245648, + "dataset": "kubernetes.scheduler", + "module": "kubernetes" + }, + "metricset": { + "name": "scheduler", + "period": 10000 + }, + "service": { + "address": "localhost:10251", + "type": "kubernetes" + }, + "kubernetes": { + "scheduler": { + "name": "kube-scheduler", + "leader": { + "is_master": true + } + } + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_container/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_container/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_container/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_container/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..55bf95929d --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_container"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_container/fields/agent.yml b/test/packages/kubernetes/data_stream/state_container/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_container/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_container/fields/base-fields.yml new file mode 100644 index 0000000000..2a6f62ace0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/fields/base-fields.yml @@ -0,0 +1,95 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: daemonset.name + type: keyword + description: > + Kubernetes daemonset name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_container/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_container/fields/ecs.yml new file mode 100644 index 0000000000..e60b6629bb --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/fields/ecs.yml @@ -0,0 +1,16 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: container.runtime + type: keyword + description: Runtime managing this container +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_container/fields/fields.yml b/test/packages/kubernetes/data_stream/state_container/fields/fields.yml new file mode 100644 index 0000000000..858f894d18 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/fields/fields.yml @@ -0,0 +1,66 @@ +- name: kubernetes.container + type: group + fields: + - name: id + type: keyword + description: Container id + - name: status + type: group + fields: + - name: phase + type: keyword + description: | + Container phase (running, waiting, terminated) + - name: ready + type: boolean + description: | + Container ready status + - name: restarts + type: integer + metric_type: counter + description: | + Container restarts count + - name: reason + type: keyword + description: | + Waiting (ContainerCreating, CrashLoopBackoff, ErrImagePull, ImagePullBackoff) or termination (Completed, ContainerCannotRun, Error, OOMKilled) reason. + - name: cpu + type: group + fields: + - name: limit.cores + type: float + metric_type: gauge + description: | + Container CPU cores limit + - name: request.cores + type: float + metric_type: gauge + description: | + Container CPU requested cores + - name: limit.nanocores + type: long + metric_type: gauge + description: | + Container CPU nanocores limit + - name: request.nanocores + type: long + metric_type: gauge + description: | + Container CPU requested nanocores + - name: memory + type: group + fields: + - name: limit.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Container memory limit in bytes + - name: request.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Container requested memory in bytes diff --git a/test/packages/kubernetes/data_stream/state_container/manifest.yml b/test/packages/kubernetes/data_stream/state_container/manifest.yml new file mode 100644 index 0000000000..de0873b72c --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Container metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Container metrics + description: Collect Kubernetes Container metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_container/sample_event.json b/test/packages/kubernetes/data_stream/state_container/sample_event.json new file mode 100644 index 0000000000..fda9be9310 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_container/sample_event.json @@ -0,0 +1,80 @@ +{ + "@timestamp": "2020-06-25T12:36:34.469Z", + "host": { + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false + }, + "event": { + "dataset": "kubernetes.container", + "module": "kubernetes", + "duration": 8554499 + }, + "kubernetes": { + "node": { + "name": "minikube" + }, + "labels": { + "component": "kube-scheduler", + "tier": "control-plane" + }, + "container": { + "image": "k8s.gcr.io/kube-scheduler:v1.17.0", + "name": "kube-scheduler", + "cpu": { + "request": { + "cores": 0.1 + } + }, + "status": { + "phase": "running", + "ready": true, + "restarts": 10 + }, + "id": "docker://b00b185f2b304a7ece804d1af28eb232f825255f716bcc85ef5bd20d5a4f45d4" + }, + "pod": { + "name": "kube-scheduler-minikube", + "uid": "9cdbd5ea-7638-4e86-a706-a5b222d86f26" + }, + "namespace": "kube-system" + }, + "ecs": { + "version": "1.5.0" + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + }, + "container": { + "runtime": "docker", + "id": "b00b185f2b304a7ece804d1af28eb232f825255f716bcc85ef5bd20d5a4f45d4" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "metricset": { + "name": "state_container", + "period": 10000 + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_cronjob/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_cronjob/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_cronjob/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_cronjob/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..08b16b3392 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["state_cronjob"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} + diff --git a/test/packages/kubernetes/data_stream/state_cronjob/fields/agent.yml b/test/packages/kubernetes/data_stream/state_cronjob/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_cronjob/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_cronjob/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_cronjob/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_cronjob/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_cronjob/fields/fields.yml b/test/packages/kubernetes/data_stream/state_cronjob/fields/fields.yml new file mode 100644 index 0000000000..53d086b4d1 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/fields/fields.yml @@ -0,0 +1,39 @@ +- name: kubernetes.cronjob + type: group + fields: + - name: name + type: keyword + description: Cronjob name + - name: schedule + type: keyword + description: Cronjob schedule + - name: concurrency + type: keyword + description: Concurrency policy + - name: active.count + type: long + metric_type: gauge + description: Number of active pods for the cronjob + - name: is_suspended + type: boolean + description: Whether the cronjob is suspended + - name: created.sec + type: double + unit: s + metric_type: gauge + description: Epoch seconds since the cronjob was created + - name: last_schedule.sec + type: double + unit: s + metric_type: gauge + description: Epoch seconds for last cronjob run + - name: next_schedule.sec + type: double + unit: s + metric_type: gauge + description: Epoch seconds for next cronjob run + - name: deadline.sec + type: long + unit: s + metric_type: gauge + description: Deadline seconds after schedule for considering failed diff --git a/test/packages/kubernetes/data_stream/state_cronjob/manifest.yml b/test/packages/kubernetes/data_stream/state_cronjob/manifest.yml new file mode 100644 index 0000000000..fcc893d16c --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Cronjob metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Cronjob metrics + description: Collect Kubernetes Cronjob metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_cronjob/sample_event.json b/test/packages/kubernetes/data_stream/state_cronjob/sample_event.json new file mode 100644 index 0000000000..f297190ba7 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_cronjob/sample_event.json @@ -0,0 +1,66 @@ +{ + "@timestamp": "2020-06-25T12:43:04.384Z", + "metricset": { + "name": "state_cronjob", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + } + }, + "event": { + "dataset": "kubernetes.cronjob", + "module": "kubernetes", + "duration": 9482053 + }, + "kubernetes": { + "namespace": "default", + "cronjob": { + "active": { + "count": 0 + }, + "is_suspended": false, + "name": "hello", + "next_schedule": { + "sec": 1593088980 + }, + "last_schedule": { + "sec": 1593088920 + }, + "created": { + "sec": 1593088862 + } + } + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_daemonset/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_daemonset/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_daemonset/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_daemonset/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..f7b98418b7 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_daemonset"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_daemonset/fields/agent.yml b/test/packages/kubernetes/data_stream/state_daemonset/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_daemonset/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_daemonset/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_daemonset/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_daemonset/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_daemonset/fields/fields.yml b/test/packages/kubernetes/data_stream/state_daemonset/fields/fields.yml new file mode 100644 index 0000000000..0e06111729 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/fields/fields.yml @@ -0,0 +1,30 @@ +- name: kubernetes.daemonset + type: group + fields: + - name: name + type: keyword + - name: replicas + type: group + description: | + Kubernetes DaemonSet replica metrics + fields: + - name: available + type: long + metric_type: gauge + description: | + The number of available replicas per DaemonSet + - name: desired + type: long + metric_type: gauge + description: | + The desired number of replicas per DaemonSet + - name: ready + type: long + metric_type: gauge + description: | + The number of ready replicas per DaemonSet + - name: unavailable + type: long + metric_type: gauge + description: | + The number of unavailable replicas per DaemonSet diff --git a/test/packages/kubernetes/data_stream/state_daemonset/manifest.yml b/test/packages/kubernetes/data_stream/state_daemonset/manifest.yml new file mode 100644 index 0000000000..a5c761d75c --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Deamonset metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Deamonset metrics + description: Collect Kubernetes Deamonset metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_daemonset/sample_event.json b/test/packages/kubernetes/data_stream/state_daemonset/sample_event.json new file mode 100644 index 0000000000..54b75c87c9 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_daemonset/sample_event.json @@ -0,0 +1,62 @@ +{ + "@timestamp": "2020-06-25T12:37:04.455Z", + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "event": { + "module": "kubernetes", + "duration": 8648138, + "dataset": "kubernetes.daemonset" + }, + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "name": "state_daemonset", + "period": 10000 + }, + "kubernetes": { + "daemonset": { + "name": "metricbeat", + "replicas": { + "available": 1, + "desired": 1, + "ready": 1, + "unavailable": 0 + } + }, + "labels": { + "k8s-app": "metricbeat" + }, + "namespace": "kube-system" + }, + "host": { + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat" + }, + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ] + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_deployment/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_deployment/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_deployment/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_deployment/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..205bc73767 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_deployment"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_deployment/fields/agent.yml b/test/packages/kubernetes/data_stream/state_deployment/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_deployment/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_deployment/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_deployment/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_deployment/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_deployment/fields/fields.yml b/test/packages/kubernetes/data_stream/state_deployment/fields/fields.yml new file mode 100644 index 0000000000..51b6abb87e --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/fields/fields.yml @@ -0,0 +1,30 @@ +- name: kubernetes.deployment + type: group + fields: + - name: paused + type: boolean + description: | + Kubernetes deployment paused status + - name: replicas + type: group + fields: + - name: desired + type: integer + metric_type: gauge + description: | + Deployment number of desired replicas (spec) + - name: available + type: integer + metric_type: gauge + description: | + Deployment available replicas + - name: unavailable + type: integer + metric_type: gauge + description: | + Deployment unavailable replicas + - name: updated + type: integer + metric_type: gauge + description: | + Deployment updated replicas diff --git a/test/packages/kubernetes/data_stream/state_deployment/manifest.yml b/test/packages/kubernetes/data_stream/state_deployment/manifest.yml new file mode 100644 index 0000000000..7259b870a5 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Deployment metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Deployment metrics + description: Collect Kubernetes Deployment metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_deployment/sample_event.json b/test/packages/kubernetes/data_stream/state_deployment/sample_event.json new file mode 100644 index 0000000000..fd79bacedd --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_deployment/sample_event.json @@ -0,0 +1,63 @@ +{ + "@timestamp": "2020-06-25T12:37:04.455Z", + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "event": { + "module": "kubernetes", + "duration": 8648138, + "dataset": "kubernetes.deployment" + }, + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "name": "state_deployment", + "period": 10000 + }, + "kubernetes": { + "deployment": { + "name": "metricbeat", + "replicas": { + "unavailable": 0, + "desired": 1, + "updated": 1, + "available": 1 + }, + "paused": false + }, + "labels": { + "k8s-app": "metricbeat" + }, + "namespace": "kube-system" + }, + "host": { + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat" + }, + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ] + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_job/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_job/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_job/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_job/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..b9903eff74 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/agent/stream/stream.yml.hbs @@ -0,0 +1,7 @@ +metricsets: ["state_job"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} diff --git a/test/packages/kubernetes/data_stream/state_job/fields/agent.yml b/test/packages/kubernetes/data_stream/state_job/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_job/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_job/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_job/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_job/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_job/fields/fields.yml b/test/packages/kubernetes/data_stream/state_job/fields/fields.yml new file mode 100644 index 0000000000..cbf96e3177 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/fields/fields.yml @@ -0,0 +1,75 @@ +- name: kubernetes.job + type: group + fields: + - name: name + type: keyword + description: > + The name of the job resource + + - name: pods + type: group + description: > + Pod metrics for the job + + fields: + - name: active + type: long + metric_type: gauge + description: Number of active pods + - name: failed + type: long + metric_type: gauge + description: Number of failed pods + - name: succeeded + type: long + metric_type: gauge + description: Number of successful pods + - name: time + type: group + description: Kubernetes job timestamps + fields: + - name: created + type: date + description: The time at which the job was created + - name: completed + type: date + description: The time at which the job completed + - name: completions + type: group + description: Kubernetes job completion settings + fields: + - name: desired + type: long + metric_type: gauge + description: The configured completion count for the job (Spec) + - name: parallelism + type: group + description: Kubernetes job parallelism settings + fields: + - name: desired + type: long + metric_type: gauge + description: The configured parallelism of the job (Spec) + - name: owner + type: group + description: Kubernetes job owner information + fields: + - name: name + type: keyword + description: The name of the resource that owns this job + - name: kind + type: keyword + description: The kind of resource that owns this job (eg. "CronJob") + - name: is_controller + type: keyword + description: Owner is controller ("true", "false", or `""`) + - name: status + type: group + description: Kubernetes job status information + fields: + - name: complete + type: keyword + description: Whether the job completed ("true", "false", or "unknown") + - name: failed + type: keyword + description: Whether the job failed ("true", "false", or "unknown") diff --git a/test/packages/kubernetes/data_stream/state_job/manifest.yml b/test/packages/kubernetes/data_stream/state_job/manifest.yml new file mode 100644 index 0000000000..cf8fab958b --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/manifest.yml @@ -0,0 +1,31 @@ +title: Kubernetes Job metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Job metrics + description: Collect Kubernetes Job metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_job/sample_event.json b/test/packages/kubernetes/data_stream/state_job/sample_event.json new file mode 100644 index 0000000000..c9ff59627c --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_job/sample_event.json @@ -0,0 +1,72 @@ +{ + "@timestamp": "2020-06-25T12:43:04.384Z", + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + } + }, + "event": { + "dataset": "kubernetes.job", + "module": "kubernetes", + "duration": 9482053 + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "sleep-30-ok-cron-27075645", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "sleep-30-ok-cron" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 1, + "failed": 0, + "succeeded": 0 + }, + "time": { + "created": "2021-06-24T12:45:00.000Z" + } + }, + "namespace": "default" + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_node/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_node/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_node/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_node/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..1ddfb5e92f --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_node"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_node/fields/agent.yml b/test/packages/kubernetes/data_stream/state_node/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_node/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_node/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_node/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_node/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_node/fields/fields.yml b/test/packages/kubernetes/data_stream/state_node/fields/fields.yml new file mode 100644 index 0000000000..c1eb215244 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/fields/fields.yml @@ -0,0 +1,69 @@ +- name: kubernetes.node + type: group + fields: + - name: status + type: group + fields: + - name: ready + type: keyword + description: | + Node ready status (true, false or unknown) + - name: unschedulable + type: boolean + description: | + Node unschedulable status + - name: disk_pressure + type: keyword + description: Node DiskPressure status (true, false or unknown) + - name: memory_pressure + type: keyword + description: Node MemoryPressure status (true, false or unknown) + - name: out_of_disk + type: keyword + description: Node OutOfDisk status (true, false or unknown) + - name: pid_pressure + type: keyword + description: Node PIDPressure status (true, false or unknown) + - name: cpu + type: group + fields: + - name: allocatable.cores + type: float + metric_type: gauge + description: | + Node CPU allocatable cores + - name: capacity.cores + type: long + metric_type: gauge + description: | + Node CPU capacity cores + - name: memory + type: group + fields: + - name: allocatable.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Node allocatable memory in bytes + - name: capacity.bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Node memory capacity in bytes + - name: pod + type: group + fields: + - name: allocatable.total + type: long + metric_type: gauge + description: | + Node allocatable pods + - name: capacity.total + type: long + metric_type: gauge + description: | + Node pod capacity diff --git a/test/packages/kubernetes/data_stream/state_node/manifest.yml b/test/packages/kubernetes/data_stream/state_node/manifest.yml new file mode 100644 index 0000000000..833041bc2c --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Node metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Node metrics + description: Collect Kubernetes Node metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_node/sample_event.json b/test/packages/kubernetes/data_stream/state_node/sample_event.json new file mode 100644 index 0000000000..9b7f451ab6 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_node/sample_event.json @@ -0,0 +1,88 @@ +{ + "@timestamp": "2020-06-25T12:37:44.457Z", + "ecs": { + "version": "1.5.0" + }, + "host": { + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ] + }, + "metricset": { + "name": "state_node", + "period": 10000 + }, + "kubernetes": { + "node": { + "pod": { + "capacity": { + "total": 110 + }, + "allocatable": { + "total": 110 + } + }, + "memory": { + "capacity": { + "bytes": 16815325184 + }, + "allocatable": { + "bytes": 16815325184 + } + }, + "cpu": { + "allocatable": { + "cores": 4 + }, + "capacity": { + "cores": 4 + } + }, + "name": "minikube", + "status": { + "ready": "true", + "unschedulable": false + } + }, + "labels": { + "kubernetes_io/arch": "amd64", + "kubernetes_io/hostname": "minikube", + "kubernetes_io/os": "linux", + "node-role_kubernetes_io/master": "", + "beta_kubernetes_io/arch": "amd64", + "beta_kubernetes_io/os": "linux" + } + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + }, + "service": { + "type": "kubernetes", + "address": "kube-state-metrics:8080" + }, + "event": { + "dataset": "kubernetes.node", + "module": "kubernetes", + "duration": 8194220 + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_persistentvolume/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_persistentvolume/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..b8556ce98b --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["state_persistentvolume"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} + diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/fields/agent.yml b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/fields/fields.yml b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/fields.yml new file mode 100644 index 0000000000..883ddcbd22 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/fields/fields.yml @@ -0,0 +1,17 @@ +- name: kubernetes.persistentvolume + type: group + fields: + - name: name + type: keyword + description: Volume name. + - name: capacity.bytes + type: long + unit: byte + metric_type: gauge + description: Volume capacity + - name: phase + type: keyword + description: Volume phase according to kubernetes + - name: storage_class + type: keyword + description: Storage class for the volume diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/manifest.yml b/test/packages/kubernetes/data_stream/state_persistentvolume/manifest.yml new file mode 100644 index 0000000000..b7ba3f9d54 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes PersistentVolume metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes PersistentVolume metrics + description: Collect Kubernetes PersistentVolume metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_persistentvolume/sample_event.json b/test/packages/kubernetes/data_stream/state_persistentvolume/sample_event.json new file mode 100644 index 0000000000..cbc6f7f846 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolume/sample_event.json @@ -0,0 +1,60 @@ +{ + "@timestamp": "2020-06-25T12:43:54.412Z", + "ecs": { + "version": "1.5.0" + }, + "event": { + "module": "kubernetes", + "duration": 12149615, + "dataset": "kubernetes.persistentvolume" + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + }, + "kubernetes": { + "persistentvolume": { + "capacity": { + "bytes": 10737418240 + }, + "phase": "Bound", + "storage_class": "manual", + "name": "task-pv-volume" + }, + "labels": { + "type": "local" + } + }, + "host": { + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "containerized": false + }, + "metricset": { + "period": 10000, + "name": "state_persistentvolume" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..06ae236140 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_persistentvolumeclaim"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/agent.yml b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/fields.yml b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/fields.yml new file mode 100644 index 0000000000..3b5f813d07 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/fields/fields.yml @@ -0,0 +1,23 @@ +- name: kubernetes.persistentvolumeclaim + type: group + fields: + - name: name + type: keyword + description: PVC name. + - name: volume_name + type: keyword + description: Binded volume name. + - name: request_storage.bytes + type: long + unit: byte + metric_type: gauge + description: Requested capacity. + - name: phase + type: keyword + description: PVC phase. + - name: access_mode + type: keyword + description: Access mode. + - name: storage_class + type: keyword + description: Storage class for the PVC. diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/manifest.yml b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/manifest.yml new file mode 100644 index 0000000000..2c7264c612 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes PersistentVolumeClaim metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes PersistentVolumeClaim metrics + description: Collect Kubernetes PersistentVolumeClaim metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/sample_event.json b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/sample_event.json new file mode 100644 index 0000000000..0a1204964a --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_persistentvolumeclaim/sample_event.json @@ -0,0 +1,60 @@ +{ + "@timestamp": "2020-06-25T12:44:44.418Z", + "event": { + "dataset": "kubernetes.persistentvolumeclaim", + "module": "kubernetes", + "duration": 5698588 + }, + "metricset": { + "name": "state_persistentvolumeclaim", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "kubernetes": { + "namespace": "default", + "persistentvolumeclaim": { + "phase": "Bound", + "storage_class": "manual", + "volume_name": "task-pv-volume", + "name": "task-pv-claim", + "request_storage": { + "bytes": 3221225472 + }, + "access_mode": "ReadWriteOnce" + } + }, + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_pod/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_pod/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_pod/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_pod/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..b35f091f9a --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_pod"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_pod/fields/agent.yml b/test/packages/kubernetes/data_stream/state_pod/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_pod/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_pod/fields/base-fields.yml new file mode 100644 index 0000000000..bd2abd6f22 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/fields/base-fields.yml @@ -0,0 +1,95 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: daemonset.name + type: keyword + description: > + Kubernetes daemonset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_pod/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_pod/fields/ecs.yml new file mode 100644 index 0000000000..e60b6629bb --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/fields/ecs.yml @@ -0,0 +1,16 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: container.runtime + type: keyword + description: Runtime managing this container +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_pod/fields/fields.yml b/test/packages/kubernetes/data_stream/state_pod/fields/fields.yml new file mode 100644 index 0000000000..67d4cb4b22 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/fields/fields.yml @@ -0,0 +1,26 @@ +- name: kubernetes.pod + type: group + fields: + - name: ip + type: ip + description: | + Kubernetes pod IP + - name: host_ip + type: ip + description: | + Kubernetes pod host IP + - name: status + type: group + fields: + - name: phase + type: keyword + description: | + Kubernetes pod phase (Running, Pending...) + - name: ready + type: keyword + description: | + Kubernetes pod ready status (true, false or unknown) + - name: scheduled + type: keyword + description: | + Kubernetes pod scheduled status (true, false, unknown) diff --git a/test/packages/kubernetes/data_stream/state_pod/manifest.yml b/test/packages/kubernetes/data_stream/state_pod/manifest.yml new file mode 100644 index 0000000000..f000ea29cd --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Pod metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Pod metrics + description: Collect Kubernetes Pod metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_pod/sample_event.json b/test/packages/kubernetes/data_stream/state_pod/sample_event.json new file mode 100644 index 0000000000..1b868887bd --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_pod/sample_event.json @@ -0,0 +1,69 @@ +{ + "@timestamp": "2020-06-25T12:38:34.469Z", + "ecs": { + "version": "1.5.0" + }, + "host": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + } + }, + "event": { + "duration": 10777415, + "dataset": "kubernetes.pod", + "module": "kubernetes" + }, + "service": { + "type": "kubernetes", + "address": "kube-state-metrics:8080" + }, + "kubernetes": { + "pod": { + "name": "filebeat-dqzzz", + "status": { + "ready": "true", + "scheduled": "true", + "phase": "running" + }, + "host_ip": "192.168.64.10", + "ip": "192.168.64.10", + "uid": "a5f1d3c9-40b6-4182-823b-dd5ff9832279" + }, + "namespace": "kube-system", + "node": { + "name": "minikube" + }, + "labels": { + "controller-revision-hash": "85649b9ddb", + "k8s-app": "filebeat", + "pod-template-generation": "1" + } + }, + "agent": { + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487" + }, + "metricset": { + "period": 10000, + "name": "state_pod" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_replicaset/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_replicaset/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_replicaset/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_replicaset/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..8b4cdd5828 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_replicaset"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_replicaset/fields/agent.yml b/test/packages/kubernetes/data_stream/state_replicaset/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_replicaset/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_replicaset/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_replicaset/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_replicaset/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_replicaset/fields/fields.yml b/test/packages/kubernetes/data_stream/state_replicaset/fields/fields.yml new file mode 100644 index 0000000000..40928a7713 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/fields/fields.yml @@ -0,0 +1,31 @@ +- name: kubernetes.replicaset + type: group + fields: + - name: replicas + type: group + fields: + - name: available + type: long + metric_type: gauge + description: | + The number of replicas per ReplicaSet + - name: desired + type: long + metric_type: gauge + description: | + The number of replicas per ReplicaSet + - name: ready + type: long + metric_type: gauge + description: | + The number of ready replicas per ReplicaSet + - name: observed + type: long + metric_type: gauge + description: | + The generation observed by the ReplicaSet controller + - name: labeled + type: long + metric_type: gauge + description: | + The number of fully labeled replicas per ReplicaSet diff --git a/test/packages/kubernetes/data_stream/state_replicaset/manifest.yml b/test/packages/kubernetes/data_stream/state_replicaset/manifest.yml new file mode 100644 index 0000000000..6727fd45bd --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes state_replicaset metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Replicaset metrics + description: Collect Kubernetes Replicaset metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_replicaset/sample_event.json b/test/packages/kubernetes/data_stream/state_replicaset/sample_event.json new file mode 100644 index 0000000000..e5506863d7 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_replicaset/sample_event.json @@ -0,0 +1,69 @@ +{ + "@timestamp": "2020-06-25T12:38:54.482Z", + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "metricset": { + "period": 10000, + "name": "state_replicaset" + }, + "event": { + "module": "kubernetes", + "duration": 5456128, + "dataset": "kubernetes.replicaset" + }, + "kubernetes": { + "namespace": "kube-system", + "replicaset": { + "name": "nginx-ingress-controller-6fc5bcc8c9", + "replicas": { + "labeled": 1, + "ready": 1, + "available": 1, + "observed": 1, + "desired": 1 + } + }, + "deployment": { + "name": "nginx-ingress-controller" + }, + "labels": { + "app_kubernetes_io/part-of": "kube-system", + "pod-template-hash": "6fc5bcc8c9", + "addonmanager_kubernetes_io/mode": "Reconcile", + "app_kubernetes_io/name": "nginx-ingress-controller" + } + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_resourcequota/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_resourcequota/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..2b7da2e386 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_resourcequota"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/fields/agent.yml b/test/packages/kubernetes/data_stream/state_resourcequota/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_resourcequota/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_resourcequota/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/fields/fields.yml b/test/packages/kubernetes/data_stream/state_resourcequota/fields/fields.yml new file mode 100644 index 0000000000..015f40048a --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/fields/fields.yml @@ -0,0 +1,21 @@ +- name: kubernetes.resourcequota + type: group + fields: + - name: created.sec + type: double + unit: s + metric_type: gauge + description: Epoch seconds since the ResourceQuota was created + - name: quota + type: double + metric_type: gauge + description: Quota informed (hard or used) for the resource + - name: name + type: keyword + description: ResourceQuota name + - name: type + type: keyword + description: Quota information type, `hard` or `used` + - name: resource + type: keyword + description: Resource name the quota applies to diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/manifest.yml b/test/packages/kubernetes/data_stream/state_resourcequota/manifest.yml new file mode 100644 index 0000000000..b5813ff9c1 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes ResourceQuota metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes ResourceQuota metrics + description: Collect Kubernetes ResourceQuota metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_resourcequota/sample_event.json b/test/packages/kubernetes/data_stream/state_resourcequota/sample_event.json new file mode 100644 index 0000000000..d3603943f0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_resourcequota/sample_event.json @@ -0,0 +1,56 @@ +{ + "@timestamp": "2020-06-25T12:45:04.416Z", + "metricset": { + "name": "state_resourcequota", + "period": 10000 + }, + "host": { + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ] + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "event": { + "dataset": "kubernetes.resourcequota", + "module": "kubernetes", + "duration": 6324269 + }, + "agent": { + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487" + }, + "ecs": { + "version": "1.5.0" + }, + "kubernetes": { + "namespace": "quota-object-example", + "resourcequota": { + "name": "object-quota-demo", + "resource": "persistentvolumeclaims", + "type": "hard", + "quota": 1 + } + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_service/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_service/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..1343496786 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_service"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_service/fields/agent.yml b/test/packages/kubernetes/data_stream/state_service/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_service/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_service/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_service/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_service/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_service/fields/fields.yml b/test/packages/kubernetes/data_stream/state_service/fields/fields.yml new file mode 100644 index 0000000000..85100326ea --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/fields/fields.yml @@ -0,0 +1,30 @@ +- name: kubernetes.service + type: group + fields: + - name: name + type: keyword + description: Service name. + - name: cluster_ip + type: ip + description: Internal IP for the service. + - name: external_name + type: keyword + description: Service external DNS name + - name: external_ip + type: keyword + description: Service external IP + - name: load_balancer_ip + type: keyword + description: Load Balancer service IP + - name: type + type: keyword + description: Service type + - name: ingress_ip + type: keyword + description: Ingress IP + - name: ingress_hostname + type: keyword + description: Ingress Hostname + - name: created + type: date + description: Service creation date diff --git a/test/packages/kubernetes/data_stream/state_service/manifest.yml b/test/packages/kubernetes/data_stream/state_service/manifest.yml new file mode 100644 index 0000000000..1827542fde --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes Service metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes Service metrics + description: Collect Kubernetes Service metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_service/sample_event.json b/test/packages/kubernetes/data_stream/state_service/sample_event.json new file mode 100644 index 0000000000..a6cd05ed17 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_service/sample_event.json @@ -0,0 +1,62 @@ +{ + "@timestamp": "2020-06-25T12:39:24.389Z", + "kubernetes": { + "labels": { + "kubernetes_io_minikube_addons_endpoint": "metrics-server", + "kubernetes_io_name": "Metrics-server", + "addonmanager_kubernetes_io_mode": "Reconcile", + "kubernetes_io_minikube_addons": "metrics-server" + }, + "service": { + "name": "metrics-server", + "created": "2020-06-10T09:02:27.000Z", + "cluster_ip": "10.96.124.248", + "type": "ClusterIP" + }, + "namespace": "kube-system" + }, + "event": { + "dataset": "kubernetes.service", + "module": "kubernetes", + "duration": 10966648 + }, + "metricset": { + "name": "state_service", + "period": 10000 + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + } + }, + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "ecs": { + "version": "1.5.0" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_statefulset/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_statefulset/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_statefulset/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_statefulset/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..2ecf8cc5f3 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_statefulset"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_statefulset/fields/agent.yml b/test/packages/kubernetes/data_stream/state_statefulset/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_statefulset/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_statefulset/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_statefulset/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_statefulset/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_statefulset/fields/fields.yml b/test/packages/kubernetes/data_stream/state_statefulset/fields/fields.yml new file mode 100644 index 0000000000..e28adddcaa --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/fields/fields.yml @@ -0,0 +1,40 @@ +- name: kubernetes.statefulset + type: group + fields: + - name: created + type: long + metric_type: gauge + description: | + The creation timestamp (epoch) for StatefulSet + - name: replicas + type: group + fields: + - name: observed + type: long + metric_type: gauge + description: | + The number of observed replicas per StatefulSet + - name: desired + type: long + metric_type: gauge + description: | + The number of desired replicas per StatefulSet + - name: ready + type: long + metric_type: gauge + description: > + The number of ready replicas per StatefulSet + + - name: generation + type: group + fields: + - name: observed + type: long + metric_type: gauge + description: | + The observed generation per StatefulSet + - name: desired + type: long + metric_type: gauge + description: | + The desired generation per StatefulSet diff --git a/test/packages/kubernetes/data_stream/state_statefulset/manifest.yml b/test/packages/kubernetes/data_stream/state_statefulset/manifest.yml new file mode 100644 index 0000000000..4bab01e842 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes StatefulSet metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes StatefulSet metrics + description: Collect Kubernetes StatefulSet metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_statefulset/sample_event.json b/test/packages/kubernetes/data_stream/state_statefulset/sample_event.json new file mode 100644 index 0000000000..9a87bc3df2 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_statefulset/sample_event.json @@ -0,0 +1,62 @@ +{ + "@timestamp": "2020-06-25T12:39:24.389Z", + "kubernetes": { + "namespace": "default", + "statefulset": { + "created": 1511989697, + "generation": { + "desired": 4, + "observed": 2 + }, + "name": "mysql", + "replicas": { + "desired": 5, + "observed": 2 + } + } + }, + "event": { + "dataset": "kubernetes.statefulset", + "module": "kubernetes", + "duration": 10966648 + }, + "metricset": { + "name": "state_statefulset", + "period": 10000 + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + } + }, + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "ecs": { + "version": "1.5.0" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/state_storageclass/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/state_storageclass/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..0f4bd620c0 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/_dev/test/system/test-default-config.yml @@ -0,0 +1,6 @@ +service: kubernetes +data_stream: + vars: + hosts: + # this is the DNS name of the k8s service for kube-state-metrics deployment + - http://kube-state-metrics:8080 diff --git a/test/packages/kubernetes/data_stream/state_storageclass/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/state_storageclass/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..acf1b2e2c6 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/agent/stream/stream.yml.hbs @@ -0,0 +1,10 @@ +metricsets: ["state_storageclass"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if leaderelection}} +condition: ${kubernetes_leaderelection.leader} == true +{{/if}} diff --git a/test/packages/kubernetes/data_stream/state_storageclass/fields/agent.yml b/test/packages/kubernetes/data_stream/state_storageclass/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/state_storageclass/fields/base-fields.yml b/test/packages/kubernetes/data_stream/state_storageclass/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/state_storageclass/fields/ecs.yml b/test/packages/kubernetes/data_stream/state_storageclass/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/state_storageclass/fields/fields.yml b/test/packages/kubernetes/data_stream/state_storageclass/fields/fields.yml new file mode 100644 index 0000000000..c190f1dbb1 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/fields/fields.yml @@ -0,0 +1,18 @@ +- name: kubernetes.storageclass + type: group + fields: + - name: name + type: keyword + description: Storage class name. + - name: provisioner + type: keyword + description: Volume provisioner for the storage class. + - name: reclaim_policy + type: keyword + description: Reclaim policy for dynamically created volumes + - name: volume_binding_mode + type: keyword + description: Mode for default provisioning and binding + - name: created + type: date + description: Storage class creation date diff --git a/test/packages/kubernetes/data_stream/state_storageclass/manifest.yml b/test/packages/kubernetes/data_stream/state_storageclass/manifest.yml new file mode 100644 index 0000000000..95b7e9d631 --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/manifest.yml @@ -0,0 +1,38 @@ +title: Kubernetes StorageClass metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + enabled: false + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - kube-state-metrics:8080 + - name: leaderelection + type: bool + title: Leader Election + multi: false + required: true + show_user: true + default: true + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + title: Kubernetes StorageClass metrics + description: Collect Kubernetes StorageClass metrics from kube_state_metrics diff --git a/test/packages/kubernetes/data_stream/state_storageclass/sample_event.json b/test/packages/kubernetes/data_stream/state_storageclass/sample_event.json new file mode 100644 index 0000000000..de074d381d --- /dev/null +++ b/test/packages/kubernetes/data_stream/state_storageclass/sample_event.json @@ -0,0 +1,59 @@ +{ + "@timestamp": "2020-06-25T12:39:44.399Z", + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "kubernetes": { + "storageclass": { + "provisioner": "k8s.io/minikube-hostpath", + "reclaim_policy": "Delete", + "volume_binding_mode": "Immediate", + "name": "standard", + "created": "2020-06-10T09:02:27.000Z" + }, + "labels": { + "addonmanager_kubernetes_io_mode": "EnsureExists" + } + }, + "host": { + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ] + }, + "event": { + "module": "kubernetes", + "duration": 5713503, + "dataset": "kubernetes.storageclass" + }, + "metricset": { + "name": "state_storageclass", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/system/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/system/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/system/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/system/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..6c69562d49 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/_dev/test/system/test-default-config.yml @@ -0,0 +1,7 @@ +service: kubernetes +data_stream: + vars: + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + period: 5s + hosts: + - https://{{Hostname}}:10250 diff --git a/test/packages/kubernetes/data_stream/system/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/system/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..7157b762c7 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["system"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.verification_mode: {{ssl.verification_mode}} +{{/if}} diff --git a/test/packages/kubernetes/data_stream/system/fields/agent.yml b/test/packages/kubernetes/data_stream/system/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/system/fields/base-fields.yml b/test/packages/kubernetes/data_stream/system/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/system/fields/ecs.yml b/test/packages/kubernetes/data_stream/system/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/system/fields/fields.yml b/test/packages/kubernetes/data_stream/system/fields/fields.yml new file mode 100644 index 0000000000..67f7f21604 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/fields/fields.yml @@ -0,0 +1,73 @@ +- name: kubernetes.system + type: group + fields: + - name: container + type: keyword + description: | + Container name + - name: start_time + type: date + description: | + Start time + - name: cpu + type: group + fields: + - name: usage + type: group + fields: + - name: core + type: group + fields: + - name: ns + type: long + metric_type: gauge + description: | + CPU Core usage nanoseconds + - name: nanocores + type: long + metric_type: gauge + description: | + CPU used nanocores + - name: memory + type: group + fields: + - name: usage + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Total memory usage + - name: rss + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + RSS memory usage + - name: workingset + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Working set memory usage + - name: pagefaults + type: long + metric_type: counter + description: | + Number of page faults + - name: majorpagefaults + type: long + metric_type: counter + description: | + Number of major page faults diff --git a/test/packages/kubernetes/data_stream/system/manifest.yml b/test/packages/kubernetes/data_stream/system/manifest.yml new file mode 100644 index 0000000000..a75c2ab4fc --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/manifest.yml @@ -0,0 +1,44 @@ +title: Kubernetes System metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://${env.NODE_NAME}:10250 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: ssl.verification_mode + type: text + title: SSL Verification Mode + multi: false + required: true + show_user: true + default: none + title: Kubernetes System metrics + description: Collect Kubernetes system metrics diff --git a/test/packages/kubernetes/data_stream/system/sample_event.json b/test/packages/kubernetes/data_stream/system/sample_event.json new file mode 100644 index 0000000000..1c490ef754 --- /dev/null +++ b/test/packages/kubernetes/data_stream/system/sample_event.json @@ -0,0 +1,101 @@ +{ + "@timestamp": "2020-06-25T12:39:59.647Z", + "service": { + "address": "minikube:10250", + "type": "kubernetes" + }, + "event": { + "duration": 20012905, + "dataset": "kubernetes.system", + "module": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "name": "minikube", + "architecture": "x86_64", + "os": { + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ] + }, + "agent": { + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube", + "type": "metricbeat", + "version": "8.0.0" + }, + "kubernetes": { + "node": { + "name": "minikube" + }, + "system": { + "container": "runtime", + "cpu": { + "usage": { + "nanocores": 35779815, + "core": { + "ns": 530899961233 + } + } + }, + "memory": { + "pagefaults": 12944019, + "majorpagefaults": 99, + "usage": { + "bytes": 198279168 + }, + "workingset": { + "bytes": 178794496 + }, + "rss": { + "bytes": 125259776 + } + }, + "start_time": "2020-06-25T07:19:32Z" + } + }, + "metricset": { + "name": "system", + "period": 10000 + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/data_stream/volume/_dev/deploy/k8s/.empty b/test/packages/kubernetes/data_stream/volume/_dev/deploy/k8s/.empty new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/packages/kubernetes/data_stream/volume/_dev/test/system/test-default-config.yml b/test/packages/kubernetes/data_stream/volume/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..6c69562d49 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/_dev/test/system/test-default-config.yml @@ -0,0 +1,7 @@ +service: kubernetes +data_stream: + vars: + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + period: 5s + hosts: + - https://{{Hostname}}:10250 diff --git a/test/packages/kubernetes/data_stream/volume/agent/stream/stream.yml.hbs b/test/packages/kubernetes/data_stream/volume/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..d546a66630 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/agent/stream/stream.yml.hbs @@ -0,0 +1,11 @@ +metricsets: ["volume"] +add_metadata: {{add_metadata}} +hosts: +{{#each hosts}} + - {{this}} +{{/each}} +period: {{period}} +{{#if bearer_token_file}} +bearer_token_file: {{bearer_token_file}} +ssl.verification_mode: {{ssl.verification_mode}} +{{/if}} diff --git a/test/packages/kubernetes/data_stream/volume/fields/agent.yml b/test/packages/kubernetes/data_stream/volume/fields/agent.yml new file mode 100644 index 0000000000..da4e652c53 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/fields/agent.yml @@ -0,0 +1,198 @@ +- name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from its host, the cloud info contains the data about this machine. If Metricbeat runs on a remote machine outside the cloud and fetches data from a service running in the cloud, the field contains cloud data from the machine the service is running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: project.id + type: keyword + description: Name of the project in Google Cloud. + - name: image.id + type: keyword + description: Image ID for the cloud instance. +- name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. +- name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + default_field: false + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment.' + - name: containerized + type: boolean + description: > + If the host is a container. + + - name: os.build + type: keyword + example: "18D109" + description: > + OS build information. + + - name: os.codename + type: keyword + example: "stretch" + description: > + OS codename, if any. + diff --git a/test/packages/kubernetes/data_stream/volume/fields/base-fields.yml b/test/packages/kubernetes/data_stream/volume/fields/base-fields.yml new file mode 100644 index 0000000000..d43ffd7964 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/fields/base-fields.yml @@ -0,0 +1,90 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: '@timestamp' + type: date + description: Event timestamp. +- name: kubernetes + type: group + fields: + - name: pod.name + type: keyword + description: > + Kubernetes pod name + + - name: pod.uid + type: keyword + description: > + Kubernetes pod UID + + - name: pod.ip + type: ip + description: > + Kubernetes pod IP + + - name: namespace + type: keyword + description: > + Kubernetes namespace + + - name: node.name + type: keyword + description: > + Kubernetes node name + + - name: node.hostname + type: keyword + description: > + Kubernetes hostname as reported by the node’s kernel + + - name: labels.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes labels map + + - name: annotations.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes annotations map + + - name: selectors.* + type: object + object_type: keyword + object_type_mapping_type: "*" + description: > + Kubernetes Service selectors map + + - name: replicaset.name + type: keyword + description: > + Kubernetes replicaset name + + - name: deployment.name + type: keyword + description: > + Kubernetes deployment name + + - name: statefulset.name + type: keyword + description: > + Kubernetes statefulset name + + - name: container.name + type: keyword + description: > + Kubernetes container name + + - name: container.image + type: keyword + description: >- + Kubernetes container image diff --git a/test/packages/kubernetes/data_stream/volume/fields/ecs.yml b/test/packages/kubernetes/data_stream/volume/fields/ecs.yml new file mode 100644 index 0000000000..adbab0f791 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/fields/ecs.yml @@ -0,0 +1,13 @@ +- name: ecs.version + type: keyword + description: ECS version +- name: service.address + type: keyword + description: Service address +- name: service.type + type: keyword + description: Service type +- name: orchestrator.cluster.name + external: ecs +- name: orchestrator.cluster.url + external: ecs diff --git a/test/packages/kubernetes/data_stream/volume/fields/fields.yml b/test/packages/kubernetes/data_stream/volume/fields/fields.yml new file mode 100644 index 0000000000..49e510f1b4 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/fields/fields.yml @@ -0,0 +1,64 @@ +- name: kubernetes.volume + type: group + fields: + - name: name + type: keyword + description: | + Volume name + - name: fs + type: group + fields: + - name: capacity + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Filesystem total capacity in bytes + - name: available + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Filesystem total available in bytes + - name: used + type: group + fields: + - name: bytes + type: long + format: bytes + unit: byte + metric_type: gauge + description: | + Filesystem total used in bytes + - name: pct + type: long + unit: percent + metric_type: gauge + description: | + Percentage of filesystem total used + - name: inodes + type: group + fields: + - name: used + type: long + metric_type: gauge + description: | + Used inodes + - name: free + type: long + metric_type: gauge + description: | + Free inodes + - name: count + type: long + metric_type: gauge + description: | + Total inodes diff --git a/test/packages/kubernetes/data_stream/volume/manifest.yml b/test/packages/kubernetes/data_stream/volume/manifest.yml new file mode 100644 index 0000000000..d5da20b984 --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/manifest.yml @@ -0,0 +1,44 @@ +title: Kubernetes Volume metrics +release: experimental +type: metrics +streams: + - input: kubernetes/metrics + vars: + - name: add_metadata + type: bool + title: Add Metadata + multi: false + required: true + show_user: true + default: true + - name: bearer_token_file + type: text + title: Bearer Token File + multi: false + required: true + show_user: true + default: /var/run/secrets/kubernetes.io/serviceaccount/token + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - https://${env.NODE_NAME}:10250 + - name: period + type: text + title: Period + multi: false + required: true + show_user: true + default: 10s + - name: ssl.verification_mode + type: text + title: SSL Verification Mode + multi: false + required: true + show_user: true + default: none + title: Kubernetes Volume metrics + description: Collect Kubernetes Volume metrics diff --git a/test/packages/kubernetes/data_stream/volume/sample_event.json b/test/packages/kubernetes/data_stream/volume/sample_event.json new file mode 100644 index 0000000000..700d089f1b --- /dev/null +++ b/test/packages/kubernetes/data_stream/volume/sample_event.json @@ -0,0 +1,99 @@ +{ + "@timestamp": "2020-06-25T12:40:19.649Z", + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "name": "volume", + "period": 10000 + }, + "service": { + "type": "kubernetes", + "address": "minikube:10250" + }, + "kubernetes": { + "pod": { + "name": "metricbeat-g9fc6" + }, + "volume": { + "name": "config", + "fs": { + "inodes": { + "used": 5, + "free": 9549949, + "count": 9768928 + }, + "available": { + "bytes": 7719858176 + }, + "capacity": { + "bytes": 17361141760 + }, + "used": { + "bytes": 12288 + } + } + }, + "namespace": "kube-system", + "node": { + "name": "minikube" + } + }, + "host": { + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "name": "minikube", + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube" + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube" + }, + "event": { + "dataset": "kubernetes.volume", + "module": "kubernetes", + "duration": 12481688 + } +} \ No newline at end of file diff --git a/test/packages/kubernetes/docs/README.md b/test/packages/kubernetes/docs/README.md index e182b19427..f7dc53d855 100644 --- a/test/packages/kubernetes/docs/README.md +++ b/test/packages/kubernetes/docs/README.md @@ -1 +1,84 @@ -# Kubernetes package \ No newline at end of file +# Kubernetes integration + +This integration is used to collect metrics from +[Kubernetes clusters](https://kubernetes.io/). + +As one of the main pieces provided for Kubernetes monitoring, this integration is capable of fetching metrics from several components: + +- [kubelet](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/) +- [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics) +- [apiserver](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/) +- [controller-manager](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-controller-manager/) +- [scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler/) +- [proxy](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-proxy/) + +Some of the previous components are running on each of the Kubernetes nodes (like `kubelet` or `proxy`) while others provide +a single cluster-wide endpoint. This is important to determine the optimal configuration and running strategy +for the different datasets included in the integration. + +For a complete reference on how to configure and run this package on Kubernetes as part of a `DaemonSet` and a `Deployment`, +there's a complete [example manifest](https://github.com/elastic/beats/blob/master/deploy/kubernetes/elastic-agent-kubernetes.yaml) +available. + +#### Kubernetes endpoints and metricsets + +Kubernetes module is a bit complex as its internal datasets require access to a wide variety of endpoints. + +This section highlights and introduces some groups of datasets with similar endpoint access needs. +For more details on the datasets see `configuration example` and the `datasets` sections below. + + +#### node / system / pod / container / module / volume + +The datasets `container`, `node`, `pod`, `system` and `volume` require access to the `kubelet endpoint` in each of +the Kubernetes nodes, hence it's recommended to include them as part +of an `Agent DaemonSet` or standalone Agents running on the hosts. + +Depending on the version and configuration of Kubernetes nodes, `kubelet` might provide a read only http port (typically 10255), +which is used in some configuration examples. But in general, and lately, this endpoint requires SSL (`https`) access +(to port 10250 by default) and token based authentication. + + +##### state_* and event + +All datasets with the `state_` prefix require `hosts` field pointing to `kube-state-metrics` +service within the cluster. As the service provides cluster-wide metrics, there's no need to fetch them per node, +hence the recommendation is to run these datasets as part of an `Agent Deployment` with one only replica. + +Note: Kube-state-metrics is not deployed by default in Kubernetes. For these cases the instructions for its +deployment are available [here](https://github.com/kubernetes/kube-state-metrics#kubernetes-deployment). +Generally `kube-state-metrics` runs a `Deployment` and is accessible via a service called `kube-state-metrics` on +`kube-system` namespace, which will be the service to use in our configuration. + +state_* datasets are not enabled by default. + +#### apiserver + +The apiserver dataset requires access to the Kubernetes API, which should be easily available in all Kubernetes +environments. Depending on the Kubernetes configuration, the API access might require SSL (`https`) and token +based authentication. + +#### proxy + +The proxy dataset requires access to the proxy endpoint in each of Kubernetes nodes, hence it's recommended +to configure it as a part of an `Agent DaemonSet`. + +#### scheduler and controllermanager + +These datasets require access to the Kubernetes `controller-manager` and `scheduler` endpoints. By default, these pods +run only on master nodes, and they are not exposed via a Service, but there are different strategies +available for its configuration: + +- Create `Kubernetes Services` to make `kube-controller-manager` and `kube-scheduler` available and configure + the datasets to point to these services as part of an `Agent Deployment`. +- Run these datasets as part an `Agent Daemonset` (with HostNetwork setting) with a `nodeSelector` to only run on Master nodes. + +These datasets are not enabled by default. + +Note: In some "As a Service" Kubernetes implementations, like `GKE`, the master nodes or even the pods running on +the masters won't be visible. In these cases it won't be possible to use `scheduler` and `controllermanager` metricsets. + +## Compatibility + +The Kubernetes package is tested with Kubernetes 1.13.x, 1.14.x, 1.15.x, 1.16.x, 1.17.x, and 1.18.x + diff --git a/test/packages/kubernetes/docs/events.md b/test/packages/kubernetes/docs/events.md new file mode 100644 index 0000000000..1ea6c84f6c --- /dev/null +++ b/test/packages/kubernetes/docs/events.md @@ -0,0 +1,171 @@ +# events + +## Metrics + +### event + +This is the `event` dataset of the Kubernetes package. It collects Kubernetes events +related metrics. + +If Leader Election is activated (default behaviour) only the `elastic agent` which holds the leadership lock +will retrieve events related metrics. +This is relevant in multi-node kubernetes cluster and prevents duplicate data. + +An example event for `event` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:30:27.575Z", + "metricset": { + "name": "event" + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc" + }, + "ecs": { + "version": "1.5.0" + }, + "event": { + "dataset": "kubernetes.event", + "module": "kubernetes" + }, + "service": { + "type": "kubernetes" + }, + "kubernetes": { + "event": { + "metadata": { + "uid": "604e39e0-862f-4615-9cec-8cb62299dea3", + "resource_version": "485630", + "timestamp": { + "created": "2020-06-25T07:20:25.000Z" + }, + "name": "monitor.161bb862545e3099", + "namespace": "beats", + "self_link": "/api/v1/namespaces/beats/events/monitor.161bb862545e3099", + "generate_name": "" + }, + "timestamp": { + "first_occurrence": "2020-06-25T07:20:25.000Z", + "last_occurrence": "2020-06-25T12:30:27.000Z" + }, + "message": "Failed to find referenced backend beats/monitor: Elasticsearch.elasticsearch.k8s.elastic.co \"monitor\" not found", + "reason": "AssociationError", + "type": "Warning", + "count": 1861, + "source": { + "host": "", + "component": "kibana-association-controller" + }, + "involved_object": { + "api_version": "kibana.k8s.elastic.co/v1", + "resource_version": "101842", + "name": "monitor", + "kind": "Kibana", + "uid": "45a19de5-5eef-4090-a2d3-dbceb0a28af8" + } + } + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + } + } +} +``` + +**Exported fields** + +| Field | Description | Type | Metric Type | +|---|---|---|---| +| @timestamp | Event timestamp. | date | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | +| cloud.instance.name | Instance name of the host machine. | keyword | | +| cloud.machine.type | Machine type of the host machine. | keyword | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | +| cloud.region | Region in which this host is running. | keyword | | +| container.id | Unique container id. | keyword | | +| container.image.name | Name of the image the container was built on. | keyword | | +| container.labels | Image labels. | object | | +| container.name | Container name. | keyword | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | +| data_stream.type | Data stream type. | constant_keyword | | +| ecs.version | ECS version | keyword | | +| host.architecture | Operating system architecture. | keyword | | +| host.containerized | If the host is a container. | boolean | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | +| host.ip | Host ip addresses. | ip | | +| host.mac | Host mac addresses. | keyword | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | +| host.os.build | OS build information. | keyword | | +| host.os.codename | OS codename, if any. | keyword | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | +| host.os.name | Operating system name, without the version. | keyword | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | +| host.os.version | Operating system version as a raw string. | keyword | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | +| kubernetes.container.image | Kubernetes container image | keyword | | +| kubernetes.container.name | Kubernetes container name | keyword | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | +| kubernetes.event.count | Count field records the number of times the particular event has occurred | long | counter | +| kubernetes.event.involved_object.api_version | API version of the object | keyword | | +| kubernetes.event.involved_object.kind | API kind of the object | keyword | | +| kubernetes.event.involved_object.name | name of the object | keyword | | +| kubernetes.event.involved_object.resource_version | resource version of the object | keyword | | +| kubernetes.event.involved_object.uid | UUID version of the object | keyword | | +| kubernetes.event.message | Message recorded for the given event | text | | +| kubernetes.event.metadata.generate_name | Generate name of the event | keyword | | +| kubernetes.event.metadata.name | Name of the event | keyword | | +| kubernetes.event.metadata.namespace | Namespace in which event was generated | keyword | | +| kubernetes.event.metadata.resource_version | Version of the event resource | keyword | | +| kubernetes.event.metadata.self_link | URL representing the event | keyword | | +| kubernetes.event.metadata.timestamp.created | Timestamp of creation of the given event | date | | +| kubernetes.event.metadata.uid | Unique identifier to the event object | keyword | | +| kubernetes.event.reason | Reason recorded for the given event | keyword | | +| kubernetes.event.source.component | Component from which the event is generated | keyword | | +| kubernetes.event.source.host | Node name on which the event is generated | keyword | | +| kubernetes.event.timestamp.first_occurrence | Timestamp of first occurrence of event | date | | +| kubernetes.event.timestamp.last_occurrence | Timestamp of last occurrence of event | date | | +| kubernetes.event.type | Type of the given event | keyword | | +| kubernetes.labels.\* | Kubernetes labels map | object | | +| kubernetes.namespace | Kubernetes namespace | keyword | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | +| kubernetes.node.name | Kubernetes node name | keyword | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | +| service.type | Service type | keyword | | diff --git a/test/packages/kubernetes/docs/kube-apiserver.md b/test/packages/kubernetes/docs/kube-apiserver.md new file mode 100644 index 0000000000..52a5bec309 --- /dev/null +++ b/test/packages/kubernetes/docs/kube-apiserver.md @@ -0,0 +1,186 @@ +# kube-apiserver + +## Metrics + +### apiserver + +This is the `apiserver` dataset of the Kubernetes package, in charge of retrieving metrics +from the Kubernetes API (available at `/metrics`). + +This metricset needs access to the `apiserver` component of Kubernetes, accessible typically +by any POD via the `kubernetes.default` service or via environment +variables (`KUBERNETES_SERVICE_HOST` and `KUBERNETES_SERVICE_PORT`). + +If Leader Election is activated (default behaviour) only the `elastic agent` which holds the leadership lock +will retrieve metrics from the `apiserver`. +This is relevant in multi-node kubernetes cluster and prevents duplicate data. + +When the API uses https, the pod will need to authenticate using its default token and trust +the server using the appropriate CA file. + +Configuration example using https and token based authentication: + + +In order to access the `/metrics` path of the API service, some Kubernetes environments might +require the following permission to be added to a ClusterRole. + +```yaml +rules: +- nonResourceURLs: + - /metrics + verbs: + - get +``` + +An example event for `apiserver` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:30:34.616Z", + "metricset": { + "name": "apiserver", + "period": 30000 + }, + "service": { + "address": "10.96.0.1:443", + "type": "kubernetes" + }, + "event": { + "dataset": "kubernetes.apiserver", + "module": "kubernetes", + "duration": 114780772 + }, + "kubernetes": { + "apiserver": { + "request": { + "client": "metrics-server/v0.0.0 (linux/amd64) kubernetes/$Format", + "version": "v1", + "count": 3, + "scope": "cluster", + "content_type": "application/vnd.kubernetes.protobuf", + "code": "200", + "verb": "LIST", + "component": "apiserver", + "resource": "nodes" + } + } + }, + "ecs": { + "version": "1.5.0" + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + } + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.apiserver.audit.event.count | Number of audit events | long | | counter | +| kubernetes.apiserver.audit.rejected.count | Number of audit rejected events | long | | counter | +| kubernetes.apiserver.client.request.count | Number of requests as client | long | | counter | +| kubernetes.apiserver.etcd.object.count | Number of kubernetes objects at etcd | long | | gauge | +| kubernetes.apiserver.http.request.count | Request count for response | long | | counter | +| kubernetes.apiserver.http.request.duration.us.count | Request count for duration | long | micros | counter | +| kubernetes.apiserver.http.request.duration.us.percentile.\* | Request duration microseconds percentiles | object | | | +| kubernetes.apiserver.http.request.duration.us.sum | Request duration microseconds cumulative sum | double | micros | counter | +| kubernetes.apiserver.http.request.size.bytes.count | Request count for size | long | byte | counter | +| kubernetes.apiserver.http.request.size.bytes.percentile.\* | Request size percentiles | object | | | +| kubernetes.apiserver.http.request.size.bytes.sum | Request size cumulative sum | long | byte | counter | +| kubernetes.apiserver.http.response.size.bytes.count | Response count | long | | counter | +| kubernetes.apiserver.http.response.size.bytes.percentile.\* | Response size percentiles | object | | | +| kubernetes.apiserver.http.response.size.bytes.sum | Response size cumulative sum | long | byte | counter | +| kubernetes.apiserver.process.cpu.sec | CPU seconds | double | | counter | +| kubernetes.apiserver.process.fds.open.count | Number of open file descriptors | long | | gauge | +| kubernetes.apiserver.process.memory.resident.bytes | Bytes in resident memory | long | byte | gauge | +| kubernetes.apiserver.process.memory.virtual.bytes | Bytes in virtual memory | long | byte | gauge | +| kubernetes.apiserver.process.started.sec | Seconds since the process started | double | | gauge | +| kubernetes.apiserver.request.client | Client executing requests | keyword | | | +| kubernetes.apiserver.request.code | HTTP code | keyword | | | +| kubernetes.apiserver.request.component | Component handling the request | keyword | | | +| kubernetes.apiserver.request.content_type | Request HTTP content type | keyword | | | +| kubernetes.apiserver.request.count | Number of requests | long | | counter | +| kubernetes.apiserver.request.current.count | Inflight requests | long | | counter | +| kubernetes.apiserver.request.dry_run | Wether the request uses dry run | keyword | | | +| kubernetes.apiserver.request.duration.us.bucket.\* | Request duration, histogram buckets | object | | | +| kubernetes.apiserver.request.duration.us.count | Request duration, number of operations | long | | counter | +| kubernetes.apiserver.request.duration.us.sum | Request duration, sum in microseconds | long | | counter | +| kubernetes.apiserver.request.group | API group for the resource | keyword | | | +| kubernetes.apiserver.request.handler | Request handler | keyword | | | +| kubernetes.apiserver.request.host | Request host | keyword | | | +| kubernetes.apiserver.request.kind | Kind of request | keyword | | | +| kubernetes.apiserver.request.latency.bucket.\* | Request latency histogram buckets | object | | | +| kubernetes.apiserver.request.latency.count | Request latency, number of requests | long | | counter | +| kubernetes.apiserver.request.latency.sum | Requests latency, sum of latencies in microseconds | long | | counter | +| kubernetes.apiserver.request.longrunning.count | Number of requests active long running requests | long | | counter | +| kubernetes.apiserver.request.method | HTTP method | keyword | | | +| kubernetes.apiserver.request.resource | Requested resource | keyword | | | +| kubernetes.apiserver.request.scope | Request scope (cluster, namespace, resource) | keyword | | | +| kubernetes.apiserver.request.subresource | Requested subresource | keyword | | | +| kubernetes.apiserver.request.verb | HTTP verb | keyword | | | +| kubernetes.apiserver.request.version | version for the group | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | diff --git a/test/packages/kubernetes/docs/kube-controller-manager.md b/test/packages/kubernetes/docs/kube-controller-manager.md new file mode 100644 index 0000000000..f987fdc6bb --- /dev/null +++ b/test/packages/kubernetes/docs/kube-controller-manager.md @@ -0,0 +1,195 @@ +# kube-controller-manager + +## Metrics + +### controllermanager + +This is the `controllermanager` dataset for the Kubernetes package. It collects from +Kubernetes controller component `metrics` endpoint. + +An example event for `controllermanager` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:33:29.643Z", + "kubernetes": { + "controllermanager": { + "workqueue": { + "unfinished": { + "sec": 0 + }, + "adds": { + "count": 0 + }, + "depth": { + "count": 0 + }, + "longestrunning": { + "sec": 0 + }, + "retries": { + "count": 0 + } + }, + "name": "certificate" + } + }, + "event": { + "dataset": "kubernetes.controllermanager", + "module": "kubernetes", + "duration": 8893806 + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "name": "minikube" + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube", + "type": "metricbeat" + }, + "metricset": { + "period": 10000, + "name": "controllermanager" + }, + "service": { + "address": "localhost:10252", + "type": "kubernetes" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.controllermanager.client.request.count | Number of requests as client | long | | counter | +| kubernetes.controllermanager.code | HTTP code | keyword | | | +| kubernetes.controllermanager.handler | Request handler | keyword | | | +| kubernetes.controllermanager.host | Request host | keyword | | | +| kubernetes.controllermanager.http.request.count | Request count for response | long | | counter | +| kubernetes.controllermanager.http.request.duration.us.count | Request count for duration | long | micros | counter | +| kubernetes.controllermanager.http.request.duration.us.percentile.\* | Request duration microseconds percentiles | object | | | +| kubernetes.controllermanager.http.request.duration.us.sum | Request duration microseconds cumulative sum | double | micros | counter | +| kubernetes.controllermanager.http.request.size.bytes.count | Request count for size | long | byte | counter | +| kubernetes.controllermanager.http.request.size.bytes.percentile.\* | Request size percentiles | object | | | +| kubernetes.controllermanager.http.request.size.bytes.sum | Request size cumulative sum | long | byte | counter | +| kubernetes.controllermanager.http.response.size.bytes.count | Response count | long | byte | counter | +| kubernetes.controllermanager.http.response.size.bytes.percentile.\* | Response size percentiles | object | | | +| kubernetes.controllermanager.http.response.size.bytes.sum | Response size cumulative sum | long | byte | counter | +| kubernetes.controllermanager.leader.is_master | Whether the node is master | boolean | | | +| kubernetes.controllermanager.method | HTTP method | keyword | | | +| kubernetes.controllermanager.name | Name for the resource | keyword | | | +| kubernetes.controllermanager.node.collector.count | Number of nodes | long | | gauge | +| kubernetes.controllermanager.node.collector.eviction.count | Number of node evictions | long | | counter | +| kubernetes.controllermanager.node.collector.health.pct | Percentage of healthy nodes | long | | gauge | +| kubernetes.controllermanager.node.collector.unhealthy.count | Number of unhealthy nodes | long | | gauge | +| kubernetes.controllermanager.process.cpu.sec | CPU seconds | double | | counter | +| kubernetes.controllermanager.process.fds.open.count | Number of open file descriptors | long | | gauge | +| kubernetes.controllermanager.process.memory.resident.bytes | Bytes in resident memory | long | byte | gauge | +| kubernetes.controllermanager.process.memory.virtual.bytes | Bytes in virtual memory | long | byte | gauge | +| kubernetes.controllermanager.process.started.sec | Seconds since the process started | double | | gauge | +| kubernetes.controllermanager.workqueue.adds.count | Workqueue add count | long | | counter | +| kubernetes.controllermanager.workqueue.depth.count | Workqueue depth count | long | | gauge | +| kubernetes.controllermanager.workqueue.longestrunning.sec | Longest running processors | double | | gauge | +| kubernetes.controllermanager.workqueue.retries.count | Workqueue number of retries | long | | counter | +| kubernetes.controllermanager.workqueue.unfinished.sec | Unfinished processors | double | | gauge | +| kubernetes.controllermanager.zone | Infrastructure zone | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | diff --git a/test/packages/kubernetes/docs/kube-proxy.md b/test/packages/kubernetes/docs/kube-proxy.md new file mode 100644 index 0000000000..675550ee6c --- /dev/null +++ b/test/packages/kubernetes/docs/kube-proxy.md @@ -0,0 +1,298 @@ +# kube-proxy + +## Metrics + +### proxy + +This is the `proxy` dataset of the Kubernetes package. It collects metrics +from Kubernetes Proxy component. + +An example event for `proxy` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:35:29.639Z", + "agent": { + "name": "minikube", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a" + }, + "host": { + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "name": "minikube", + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false + }, + "kubernetes": { + "proxy": { + "sync": { + "rules": { + "duration": { + "us": { + "sum": 763620.9329999998, + "count": 18, + "bucket": { + "1000": 0, + "2000": 0, + "4000": 0, + "8000": 0, + "16000": 0, + "32000": 10, + "64000": 16, + "128000": 17, + "256000": 18, + "512000": 18, + "1024000": 18, + "2048000": 18, + "4096000": 18, + "8192000": 18, + "16384000": 18, + "+Inf": 18 + } + } + } + }, + "networkprogramming": { + "duration": { + "us": { + "count": 19, + "bucket": { + "0": 0, + "250000": 4, + "500000": 8, + "1000000": 11, + "2000000": 11, + "3000000": 11, + "4000000": 11, + "5000000": 11, + "6000000": 11, + "7000000": 11, + "8000000": 11, + "9000000": 11, + "10000000": 11, + "11000000": 11, + "12000000": 11, + "13000000": 11, + "14000000": 11, + "15000000": 11, + "16000000": 11, + "17000000": 11, + "18000000": 11, + "19000000": 11, + "20000000": 11, + "21000000": 11, + "22000000": 11, + "23000000": 11, + "24000000": 11, + "25000000": 11, + "26000000": 11, + "27000000": 11, + "28000000": 11, + "29000000": 11, + "30000000": 11, + "31000000": 11, + "32000000": 11, + "33000000": 11, + "34000000": 11, + "35000000": 11, + "36000000": 11, + "37000000": 11, + "38000000": 11, + "39000000": 11, + "40000000": 11, + "41000000": 11, + "42000000": 11, + "43000000": 11, + "44000000": 11, + "45000000": 11, + "46000000": 11, + "47000000": 11, + "48000000": 11, + "49000000": 11, + "50000000": 11, + "51000000": 11, + "52000000": 11, + "53000000": 11, + "54000000": 11, + "55000000": 11, + "56000000": 11, + "57000000": 11, + "58000000": 11, + "59000000": 11, + "60000000": 11, + "65000000": 11, + "70000000": 11, + "75000000": 11, + "80000000": 11, + "85000000": 11, + "90000000": 11, + "95000000": 11, + "100000000": 11, + "105000000": 11, + "110000000": 11, + "115000000": 11, + "120000000": 11, + "150000000": 11, + "180000000": 11, + "210000000": 11, + "240000000": 11, + "270000000": 11, + "300000000": 11, + "+Inf": 19 + }, + "sum": 5571080914163.27 + } + } + } + }, + "process": { + "cpu": { + "sec": 8 + }, + "memory": { + "resident": { + "bytes": 37609472 + }, + "virtual": { + "bytes": 143990784 + } + }, + "started": { + "sec": 1593069580.69 + }, + "fds": { + "open": { + "count": 17 + } + } + } + } + }, + "ecs": { + "version": "1.5.0" + }, + "event": { + "module": "kubernetes", + "duration": 2031254, + "dataset": "kubernetes.proxy" + }, + "metricset": { + "name": "proxy", + "period": 10000 + }, + "service": { + "address": "localhost:10249", + "type": "kubernetes" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.proxy.client.request.count | Number of requests as client | long | | counter | +| kubernetes.proxy.code | HTTP code | keyword | | | +| kubernetes.proxy.handler | Request handler | keyword | | | +| kubernetes.proxy.host | Request host | keyword | | | +| kubernetes.proxy.http.request.count | Request count | long | | counter | +| kubernetes.proxy.http.request.duration.us.count | Request count for duration | long | micros | counter | +| kubernetes.proxy.http.request.duration.us.percentile.\* | Request duration microseconds percentiles | object | | | +| kubernetes.proxy.http.request.duration.us.sum | Request duration microseconds cumulative sum | double | micros | counter | +| kubernetes.proxy.http.request.size.bytes.count | Request count for size | long | byte | counter | +| kubernetes.proxy.http.request.size.bytes.percentile.\* | Request size percentiles | object | | | +| kubernetes.proxy.http.request.size.bytes.sum | Request size cumulative sum | long | byte | counter | +| kubernetes.proxy.http.response.size.bytes.count | Response count | long | | counter | +| kubernetes.proxy.http.response.size.bytes.percentile.\* | Response size percentiles | object | | | +| kubernetes.proxy.http.response.size.bytes.sum | Response size cumulative sum | long | byte | counter | +| kubernetes.proxy.method | HTTP method | keyword | | | +| kubernetes.proxy.process.cpu.sec | CPU seconds | double | | counter | +| kubernetes.proxy.process.fds.open.count | Number of open file descriptors | long | | gauge | +| kubernetes.proxy.process.memory.resident.bytes | Bytes in resident memory | long | byte | gauge | +| kubernetes.proxy.process.memory.virtual.bytes | Bytes in virtual memory | long | byte | gauge | +| kubernetes.proxy.process.started.sec | Seconds since the process started | double | | gauge | +| kubernetes.proxy.sync.networkprogramming.duration.us.bucket.\* | Network programming duration, histogram buckets | object | | | +| kubernetes.proxy.sync.networkprogramming.duration.us.count | Network programming duration, number of operations | long | | counter | +| kubernetes.proxy.sync.networkprogramming.duration.us.sum | Network programming duration, sum in microseconds | long | | counter | +| kubernetes.proxy.sync.rules.duration.us.bucket.\* | SyncProxyRules duration, histogram buckets | object | | | +| kubernetes.proxy.sync.rules.duration.us.count | SyncProxyRules duration, number of operations | long | | counter | +| kubernetes.proxy.sync.rules.duration.us.sum | SyncProxyRules duration, sum of durations in microseconds | long | | counter | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | diff --git a/test/packages/kubernetes/docs/kube-scheduler.md b/test/packages/kubernetes/docs/kube-scheduler.md new file mode 100644 index 0000000000..5c239728f9 --- /dev/null +++ b/test/packages/kubernetes/docs/kube-scheduler.md @@ -0,0 +1,183 @@ +# kube-scheduler + +## Metrics + +### scheduler + +This is the `scheduler` dataset of the Kubernetes package. It collects metrics +from Kubernetes Scheduler component. + +An example event for `scheduler` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:35:59.624Z", + "agent": { + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube", + "type": "metricbeat" + }, + "host": { + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + }, + "name": "minikube", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ] + }, + "ecs": { + "version": "1.5.0" + }, + "event": { + "duration": 7245648, + "dataset": "kubernetes.scheduler", + "module": "kubernetes" + }, + "metricset": { + "name": "scheduler", + "period": 10000 + }, + "service": { + "address": "localhost:10251", + "type": "kubernetes" + }, + "kubernetes": { + "scheduler": { + "name": "kube-scheduler", + "leader": { + "is_master": true + } + } + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.scheduler.client.request.count | Number of requests as client | long | | counter | +| kubernetes.scheduler.code | HTTP code | keyword | | | +| kubernetes.scheduler.handler | Request handler | keyword | | | +| kubernetes.scheduler.host | Request host | keyword | | | +| kubernetes.scheduler.http.request.count | Request count | long | | counter | +| kubernetes.scheduler.http.request.duration.us.count | Request count for duration | long | micros | counter | +| kubernetes.scheduler.http.request.duration.us.percentile.\* | Request duration microseconds percentiles | object | | | +| kubernetes.scheduler.http.request.duration.us.sum | Request duration microseconds cumulative sum | double | micros | counter | +| kubernetes.scheduler.http.request.size.bytes.count | Request count for size | long | byte | counter | +| kubernetes.scheduler.http.request.size.bytes.percentile.\* | Request size percentiles | object | | | +| kubernetes.scheduler.http.request.size.bytes.sum | Request size cumulative sum | long | byte | counter | +| kubernetes.scheduler.http.response.size.bytes.count | Response count | long | | counter | +| kubernetes.scheduler.http.response.size.bytes.percentile.\* | Response size percentiles | object | | | +| kubernetes.scheduler.http.response.size.bytes.sum | Response size cumulative sum | long | byte | counter | +| kubernetes.scheduler.leader.is_master | Whether the node is master | boolean | | | +| kubernetes.scheduler.method | HTTP method | keyword | | | +| kubernetes.scheduler.name | Name for the resource | keyword | | | +| kubernetes.scheduler.operation | Scheduling operation | keyword | | | +| kubernetes.scheduler.process.cpu.sec | CPU seconds | double | | counter | +| kubernetes.scheduler.process.fds.open.count | Number of open file descriptors | long | | gauge | +| kubernetes.scheduler.process.memory.resident.bytes | Bytes in resident memory | long | byte | gauge | +| kubernetes.scheduler.process.memory.virtual.bytes | Bytes in virtual memory | long | byte | gauge | +| kubernetes.scheduler.process.started.sec | Seconds since the process started | double | | gauge | +| kubernetes.scheduler.result | Schedule attempt result | keyword | | | +| kubernetes.scheduler.scheduling.duration.seconds.count | Scheduling count | long | | counter | +| kubernetes.scheduler.scheduling.duration.seconds.percentile.\* | Scheduling duration percentiles | object | | | +| kubernetes.scheduler.scheduling.duration.seconds.sum | Scheduling duration cumulative sum | double | | counter | +| kubernetes.scheduler.scheduling.e2e.duration.us.bucket.\* | End to end scheduling duration microseconds | object | | | +| kubernetes.scheduler.scheduling.e2e.duration.us.count | End to end scheduling count | long | micros | counter | +| kubernetes.scheduler.scheduling.e2e.duration.us.sum | End to end scheduling duration microseconds sum | long | micros | counter | +| kubernetes.scheduler.scheduling.pod.attempts.count | Pod attempts count | long | | counter | +| kubernetes.scheduler.scheduling.pod.preemption.victims.bucket.\* | Pod preemption victims | long | | | +| kubernetes.scheduler.scheduling.pod.preemption.victims.count | Pod preemption victims count | long | | counter | +| kubernetes.scheduler.scheduling.pod.preemption.victims.sum | Pod preemption victims sum | long | | counter | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | diff --git a/test/packages/kubernetes/docs/kube-state-metrics.md b/test/packages/kubernetes/docs/kube-state-metrics.md new file mode 100644 index 0000000000..e94360c85e --- /dev/null +++ b/test/packages/kubernetes/docs/kube-state-metrics.md @@ -0,0 +1,1988 @@ +# kube-state-metrics + +## Metrics + +If Leader Election is activated (default behaviour) only the `elastic agent` which holds the leadership lock +will retrieve metrics from the `kube_state_metrics`. +This is relevant in multi-node kubernetes cluster and prevents duplicate data. + +### state_container + +This is the `state_container` dataset of the Kubernetes package. It collects container related +metrics from `kube_state_metrics`. + +An example event for `state_container` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:36:34.469Z", + "host": { + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false + }, + "event": { + "dataset": "kubernetes.container", + "module": "kubernetes", + "duration": 8554499 + }, + "kubernetes": { + "node": { + "name": "minikube" + }, + "labels": { + "component": "kube-scheduler", + "tier": "control-plane" + }, + "container": { + "image": "k8s.gcr.io/kube-scheduler:v1.17.0", + "name": "kube-scheduler", + "cpu": { + "request": { + "cores": 0.1 + } + }, + "status": { + "phase": "running", + "ready": true, + "restarts": 10 + }, + "id": "docker://b00b185f2b304a7ece804d1af28eb232f825255f716bcc85ef5bd20d5a4f45d4" + }, + "pod": { + "name": "kube-scheduler-minikube", + "uid": "9cdbd5ea-7638-4e86-a706-a5b222d86f26" + }, + "namespace": "kube-system" + }, + "ecs": { + "version": "1.5.0" + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + }, + "container": { + "runtime": "docker", + "id": "b00b185f2b304a7ece804d1af28eb232f825255f716bcc85ef5bd20d5a4f45d4" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "metricset": { + "name": "state_container", + "period": 10000 + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| container.runtime | Runtime managing this container | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.cpu.limit.cores | Container CPU cores limit | float | | gauge | +| kubernetes.container.cpu.limit.nanocores | Container CPU nanocores limit | long | | gauge | +| kubernetes.container.cpu.request.cores | Container CPU requested cores | float | | gauge | +| kubernetes.container.cpu.request.nanocores | Container CPU requested nanocores | long | | gauge | +| kubernetes.container.id | Container id | keyword | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.memory.limit.bytes | Container memory limit in bytes | long | byte | gauge | +| kubernetes.container.memory.request.bytes | Container requested memory in bytes | long | byte | gauge | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.container.status.phase | Container phase (running, waiting, terminated) | keyword | | | +| kubernetes.container.status.ready | Container ready status | boolean | | | +| kubernetes.container.status.reason | Waiting (ContainerCreating, CrashLoopBackoff, ErrImagePull, ImagePullBackoff) or termination (Completed, ContainerCannotRun, Error, OOMKilled) reason. | keyword | | | +| kubernetes.container.status.restarts | Container restarts count | integer | | counter | +| kubernetes.daemonset.name | Kubernetes daemonset name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### state_cronjob + +This is the `state_cronjob` dataset of the Kubernetes package. It collects cronjob related +metrics from `kube_state_metrics`. + +An example event for `state_cronjob` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:43:04.384Z", + "metricset": { + "name": "state_cronjob", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + } + }, + "event": { + "dataset": "kubernetes.cronjob", + "module": "kubernetes", + "duration": 9482053 + }, + "kubernetes": { + "namespace": "default", + "cronjob": { + "active": { + "count": 0 + }, + "is_suspended": false, + "name": "hello", + "next_schedule": { + "sec": 1593088980 + }, + "last_schedule": { + "sec": 1593088920 + }, + "created": { + "sec": 1593088862 + } + } + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.cronjob.active.count | Number of active pods for the cronjob | long | | gauge | +| kubernetes.cronjob.concurrency | Concurrency policy | keyword | | | +| kubernetes.cronjob.created.sec | Epoch seconds since the cronjob was created | double | s | gauge | +| kubernetes.cronjob.deadline.sec | Deadline seconds after schedule for considering failed | long | s | gauge | +| kubernetes.cronjob.is_suspended | Whether the cronjob is suspended | boolean | | | +| kubernetes.cronjob.last_schedule.sec | Epoch seconds for last cronjob run | double | s | gauge | +| kubernetes.cronjob.name | Cronjob name | keyword | | | +| kubernetes.cronjob.next_schedule.sec | Epoch seconds for next cronjob run | double | s | gauge | +| kubernetes.cronjob.schedule | Cronjob schedule | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### state_daemonset + +This is the `state_daemonset` dataset of the Kubernetes package. It collects daemonset related +metrics from `kube_state_metrics`. + +An example event for `state_daemonset` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:37:04.455Z", + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "event": { + "module": "kubernetes", + "duration": 8648138, + "dataset": "kubernetes.daemonset" + }, + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "name": "state_daemonset", + "period": 10000 + }, + "kubernetes": { + "daemonset": { + "name": "metricbeat", + "replicas": { + "available": 1, + "desired": 1, + "ready": 1, + "unavailable": 0 + } + }, + "labels": { + "k8s-app": "metricbeat" + }, + "namespace": "kube-system" + }, + "host": { + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat" + }, + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ] + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Metric Type | +|---|---|---|---| +| @timestamp | Event timestamp. | date | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | +| cloud.instance.name | Instance name of the host machine. | keyword | | +| cloud.machine.type | Machine type of the host machine. | keyword | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | +| cloud.region | Region in which this host is running. | keyword | | +| container.id | Unique container id. | keyword | | +| container.image.name | Name of the image the container was built on. | keyword | | +| container.labels | Image labels. | object | | +| container.name | Container name. | keyword | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | +| data_stream.type | Data stream type. | constant_keyword | | +| ecs.version | ECS version | keyword | | +| host.architecture | Operating system architecture. | keyword | | +| host.containerized | If the host is a container. | boolean | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | +| host.ip | Host ip addresses. | ip | | +| host.mac | Host mac addresses. | keyword | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | +| host.os.build | OS build information. | keyword | | +| host.os.codename | OS codename, if any. | keyword | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | +| host.os.name | Operating system name, without the version. | keyword | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | +| host.os.version | Operating system version as a raw string. | keyword | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | +| kubernetes.container.image | Kubernetes container image | keyword | | +| kubernetes.container.name | Kubernetes container name | keyword | | +| kubernetes.daemonset.name | | keyword | | +| kubernetes.daemonset.replicas.available | The number of available replicas per DaemonSet | long | gauge | +| kubernetes.daemonset.replicas.desired | The desired number of replicas per DaemonSet | long | gauge | +| kubernetes.daemonset.replicas.ready | The number of ready replicas per DaemonSet | long | gauge | +| kubernetes.daemonset.replicas.unavailable | The number of unavailable replicas per DaemonSet | long | gauge | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | +| kubernetes.labels.\* | Kubernetes labels map | object | | +| kubernetes.namespace | Kubernetes namespace | keyword | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | +| kubernetes.node.name | Kubernetes node name | keyword | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | +| service.address | Service address | keyword | | +| service.type | Service type | keyword | | + + +### state_deployment + +This is the `state_deployment` dataset of the Kubernetes package. It collects deployment related +metrics from `kube_state_metrics`. + +An example event for `state_deployment` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:37:04.455Z", + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "event": { + "module": "kubernetes", + "duration": 8648138, + "dataset": "kubernetes.deployment" + }, + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "name": "state_deployment", + "period": 10000 + }, + "kubernetes": { + "deployment": { + "name": "metricbeat", + "replicas": { + "unavailable": 0, + "desired": 1, + "updated": 1, + "available": 1 + }, + "paused": false + }, + "labels": { + "k8s-app": "metricbeat" + }, + "namespace": "kube-system" + }, + "host": { + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat" + }, + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ] + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Metric Type | +|---|---|---|---| +| @timestamp | Event timestamp. | date | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | +| cloud.instance.name | Instance name of the host machine. | keyword | | +| cloud.machine.type | Machine type of the host machine. | keyword | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | +| cloud.region | Region in which this host is running. | keyword | | +| container.id | Unique container id. | keyword | | +| container.image.name | Name of the image the container was built on. | keyword | | +| container.labels | Image labels. | object | | +| container.name | Container name. | keyword | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | +| data_stream.type | Data stream type. | constant_keyword | | +| ecs.version | ECS version | keyword | | +| host.architecture | Operating system architecture. | keyword | | +| host.containerized | If the host is a container. | boolean | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | +| host.ip | Host ip addresses. | ip | | +| host.mac | Host mac addresses. | keyword | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | +| host.os.build | OS build information. | keyword | | +| host.os.codename | OS codename, if any. | keyword | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | +| host.os.name | Operating system name, without the version. | keyword | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | +| host.os.version | Operating system version as a raw string. | keyword | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | +| kubernetes.container.image | Kubernetes container image | keyword | | +| kubernetes.container.name | Kubernetes container name | keyword | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | +| kubernetes.deployment.paused | Kubernetes deployment paused status | boolean | | +| kubernetes.deployment.replicas.available | Deployment available replicas | integer | gauge | +| kubernetes.deployment.replicas.desired | Deployment number of desired replicas (spec) | integer | gauge | +| kubernetes.deployment.replicas.unavailable | Deployment unavailable replicas | integer | gauge | +| kubernetes.deployment.replicas.updated | Deployment updated replicas | integer | gauge | +| kubernetes.labels.\* | Kubernetes labels map | object | | +| kubernetes.namespace | Kubernetes namespace | keyword | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | +| kubernetes.node.name | Kubernetes node name | keyword | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | +| service.address | Service address | keyword | | +| service.type | Service type | keyword | | + + +### state_job + +This is the `state_job` dataset of the Kubernetes package. It collects job related +metrics from `kube_state_metrics`. + +An example event for `state_job` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:43:04.384Z", + "metricset": { + "name": "state_job", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + } + }, + "event": { + "dataset": "kubernetes.job", + "module": "kubernetes", + "duration": 9482053 + }, + "kubernetes": { + "job": { + "completions": { + "desired": 1 + }, + "name": "sleep-30-ok-cron-27075645", + "owner": { + "is_controller": "true", + "kind": "CronJob", + "name": "sleep-30-ok-cron" + }, + "parallelism": { + "desired": 1 + }, + "pods": { + "active": 1, + "failed": 0, + "succeeded": 0 + }, + "time": { + "created": "2021-06-24T12:45:00.000Z" + } + }, + "namespace": "default" + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Metric Type | +|---|---|---|---| +| @timestamp | Event timestamp. | date | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | +| cloud.instance.name | Instance name of the host machine. | keyword | | +| cloud.machine.type | Machine type of the host machine. | keyword | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | +| cloud.region | Region in which this host is running. | keyword | | +| container.id | Unique container id. | keyword | | +| container.image.name | Name of the image the container was built on. | keyword | | +| container.labels | Image labels. | object | | +| container.name | Container name. | keyword | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | +| data_stream.type | Data stream type. | constant_keyword | | +| ecs.version | ECS version | keyword | | +| host.architecture | Operating system architecture. | keyword | | +| host.containerized | If the host is a container. | boolean | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | +| host.ip | Host ip addresses. | ip | | +| host.mac | Host mac addresses. | keyword | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | +| host.os.build | OS build information. | keyword | | +| host.os.codename | OS codename, if any. | keyword | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | +| host.os.name | Operating system name, without the version. | keyword | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | +| host.os.version | Operating system version as a raw string. | keyword | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | +| kubernetes.container.image | Kubernetes container image | keyword | | +| kubernetes.container.name | Kubernetes container name | keyword | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | +| kubernetes.job.completions.desired | The configured completion count for the job (Spec) | long | gauge | +| kubernetes.job.name | The name of the job resource | keyword | | +| kubernetes.job.owner.is_controller | Owner is controller ("true", "false", or `"\"`) | keyword | | +| kubernetes.job.owner.kind | The kind of resource that owns this job (eg. "CronJob") | keyword | | +| kubernetes.job.owner.name | The name of the resource that owns this job | keyword | | +| kubernetes.job.parallelism.desired | The configured parallelism of the job (Spec) | long | gauge | +| kubernetes.job.pods.active | Number of active pods | long | gauge | +| kubernetes.job.pods.failed | Number of failed pods | long | gauge | +| kubernetes.job.pods.succeeded | Number of successful pods | long | gauge | +| kubernetes.job.status.complete | Whether the job completed ("true", "false", or "unknown") | keyword | | +| kubernetes.job.status.failed | Whether the job failed ("true", "false", or "unknown") | keyword | | +| kubernetes.job.time.completed | The time at which the job completed | date | | +| kubernetes.job.time.created | The time at which the job was created | date | | +| kubernetes.labels.\* | Kubernetes labels map | object | | +| kubernetes.namespace | Kubernetes namespace | keyword | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | +| kubernetes.node.name | Kubernetes node name | keyword | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | +| service.address | Service address | keyword | | +| service.type | Service type | keyword | | + + +### state_node + +This is the `state_node` dataset of the Kubernetes package. It collects node related +metrics from `kube_state_metrics`. + +An example event for `state_node` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:37:44.457Z", + "ecs": { + "version": "1.5.0" + }, + "host": { + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ] + }, + "metricset": { + "name": "state_node", + "period": 10000 + }, + "kubernetes": { + "node": { + "pod": { + "capacity": { + "total": 110 + }, + "allocatable": { + "total": 110 + } + }, + "memory": { + "capacity": { + "bytes": 16815325184 + }, + "allocatable": { + "bytes": 16815325184 + } + }, + "cpu": { + "allocatable": { + "cores": 4 + }, + "capacity": { + "cores": 4 + } + }, + "name": "minikube", + "status": { + "ready": "true", + "unschedulable": false + } + }, + "labels": { + "kubernetes_io/arch": "amd64", + "kubernetes_io/hostname": "minikube", + "kubernetes_io/os": "linux", + "node-role_kubernetes_io/master": "", + "beta_kubernetes_io/arch": "amd64", + "beta_kubernetes_io/os": "linux" + } + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + }, + "service": { + "type": "kubernetes", + "address": "kube-state-metrics:8080" + }, + "event": { + "dataset": "kubernetes.node", + "module": "kubernetes", + "duration": 8194220 + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.cpu.allocatable.cores | Node CPU allocatable cores | float | | gauge | +| kubernetes.node.cpu.capacity.cores | Node CPU capacity cores | long | | gauge | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.memory.allocatable.bytes | Node allocatable memory in bytes | long | byte | gauge | +| kubernetes.node.memory.capacity.bytes | Node memory capacity in bytes | long | byte | gauge | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.node.pod.allocatable.total | Node allocatable pods | long | | gauge | +| kubernetes.node.pod.capacity.total | Node pod capacity | long | | gauge | +| kubernetes.node.status.disk_pressure | Node DiskPressure status (true, false or unknown) | keyword | | | +| kubernetes.node.status.memory_pressure | Node MemoryPressure status (true, false or unknown) | keyword | | | +| kubernetes.node.status.out_of_disk | Node OutOfDisk status (true, false or unknown) | keyword | | | +| kubernetes.node.status.pid_pressure | Node PIDPressure status (true, false or unknown) | keyword | | | +| kubernetes.node.status.ready | Node ready status (true, false or unknown) | keyword | | | +| kubernetes.node.status.unschedulable | Node unschedulable status | boolean | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### state_persistentvolume + +This is the `state_persistentvolume` dataset of the Kubernetes package. It collects +PersistentVolume related metrics from `kube_state_metrics`. + +An example event for `state_persistentvolume` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:43:54.412Z", + "ecs": { + "version": "1.5.0" + }, + "event": { + "module": "kubernetes", + "duration": 12149615, + "dataset": "kubernetes.persistentvolume" + }, + "agent": { + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat" + }, + "kubernetes": { + "persistentvolume": { + "capacity": { + "bytes": 10737418240 + }, + "phase": "Bound", + "storage_class": "manual", + "name": "task-pv-volume" + }, + "labels": { + "type": "local" + } + }, + "host": { + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "containerized": false + }, + "metricset": { + "period": 10000, + "name": "state_persistentvolume" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.persistentvolume.capacity.bytes | Volume capacity | long | byte | gauge | +| kubernetes.persistentvolume.name | Volume name. | keyword | | | +| kubernetes.persistentvolume.phase | Volume phase according to kubernetes | keyword | | | +| kubernetes.persistentvolume.storage_class | Storage class for the volume | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### state_persistentvolumeclaim + +This is the `state_persistentvolumeclaim` dataset of the Kubernetes package. It collects +PersistentVolumeClaim related metrics from `kube_state_metrics`. + +An example event for `state_persistentvolumeclaim` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:44:44.418Z", + "event": { + "dataset": "kubernetes.persistentvolumeclaim", + "module": "kubernetes", + "duration": 5698588 + }, + "metricset": { + "name": "state_persistentvolumeclaim", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "kubernetes": { + "namespace": "default", + "persistentvolumeclaim": { + "phase": "Bound", + "storage_class": "manual", + "volume_name": "task-pv-volume", + "name": "task-pv-claim", + "request_storage": { + "bytes": 3221225472 + }, + "access_mode": "ReadWriteOnce" + } + }, + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.persistentvolumeclaim.access_mode | Access mode. | keyword | | | +| kubernetes.persistentvolumeclaim.name | PVC name. | keyword | | | +| kubernetes.persistentvolumeclaim.phase | PVC phase. | keyword | | | +| kubernetes.persistentvolumeclaim.request_storage.bytes | Requested capacity. | long | byte | gauge | +| kubernetes.persistentvolumeclaim.storage_class | Storage class for the PVC. | keyword | | | +| kubernetes.persistentvolumeclaim.volume_name | Binded volume name. | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### state_pod + +This is the `state_pod` dataset of the Kubernetes package. It collects +Pod related metrics from `kube_state_metrics`. + +An example event for `state_pod` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:38:34.469Z", + "ecs": { + "version": "1.5.0" + }, + "host": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + } + }, + "event": { + "duration": 10777415, + "dataset": "kubernetes.pod", + "module": "kubernetes" + }, + "service": { + "type": "kubernetes", + "address": "kube-state-metrics:8080" + }, + "kubernetes": { + "pod": { + "name": "filebeat-dqzzz", + "status": { + "ready": "true", + "scheduled": "true", + "phase": "running" + }, + "host_ip": "192.168.64.10", + "ip": "192.168.64.10", + "uid": "a5f1d3c9-40b6-4182-823b-dd5ff9832279" + }, + "namespace": "kube-system", + "node": { + "name": "minikube" + }, + "labels": { + "controller-revision-hash": "85649b9ddb", + "k8s-app": "filebeat", + "pod-template-generation": "1" + } + }, + "agent": { + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487" + }, + "metricset": { + "period": 10000, + "name": "state_pod" + } +} +``` + +**Exported fields** + +| Field | Description | Type | +|---|---|---| +| @timestamp | Event timestamp. | date | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | +| cloud.image.id | Image ID for the cloud instance. | keyword | +| cloud.instance.id | Instance ID of the host machine. | keyword | +| cloud.instance.name | Instance name of the host machine. | keyword | +| cloud.machine.type | Machine type of the host machine. | keyword | +| cloud.project.id | Name of the project in Google Cloud. | keyword | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | +| cloud.region | Region in which this host is running. | keyword | +| container.id | Unique container id. | keyword | +| container.image.name | Name of the image the container was built on. | keyword | +| container.labels | Image labels. | object | +| container.name | Container name. | keyword | +| container.runtime | Runtime managing this container | keyword | +| data_stream.dataset | Data stream dataset. | constant_keyword | +| data_stream.namespace | Data stream namespace. | constant_keyword | +| data_stream.type | Data stream type. | constant_keyword | +| ecs.version | ECS version | keyword | +| host.architecture | Operating system architecture. | keyword | +| host.containerized | If the host is a container. | boolean | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | +| host.ip | Host ip addresses. | ip | +| host.mac | Host mac addresses. | keyword | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | +| host.os.build | OS build information. | keyword | +| host.os.codename | OS codename, if any. | keyword | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | +| host.os.name | Operating system name, without the version. | keyword | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | +| host.os.version | Operating system version as a raw string. | keyword | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | +| kubernetes.annotations.\* | Kubernetes annotations map | object | +| kubernetes.container.image | Kubernetes container image | keyword | +| kubernetes.container.name | Kubernetes container name | keyword | +| kubernetes.daemonset.name | Kubernetes daemonset name | keyword | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | +| kubernetes.labels.\* | Kubernetes labels map | object | +| kubernetes.namespace | Kubernetes namespace | keyword | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | +| kubernetes.node.name | Kubernetes node name | keyword | +| kubernetes.pod.host_ip | Kubernetes pod host IP | ip | +| kubernetes.pod.ip | Kubernetes pod IP | ip | +| kubernetes.pod.name | Kubernetes pod name | keyword | +| kubernetes.pod.status.phase | Kubernetes pod phase (Running, Pending...) | keyword | +| kubernetes.pod.status.ready | Kubernetes pod ready status (true, false or unknown) | keyword | +| kubernetes.pod.status.scheduled | Kubernetes pod scheduled status (true, false, unknown) | keyword | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | +| orchestrator.cluster.name | Name of the cluster. | keyword | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | +| service.address | Service address | keyword | +| service.type | Service type | keyword | + + +### state_replicaset + +This is the `state_replicaset` dataset of the Kubernetes package. It collects +Replicaset related metrics from `kube_state_metrics`. + +An example event for `state_replicaset` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:38:54.482Z", + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "metricset": { + "period": 10000, + "name": "state_replicaset" + }, + "event": { + "module": "kubernetes", + "duration": 5456128, + "dataset": "kubernetes.replicaset" + }, + "kubernetes": { + "namespace": "kube-system", + "replicaset": { + "name": "nginx-ingress-controller-6fc5bcc8c9", + "replicas": { + "labeled": 1, + "ready": 1, + "available": 1, + "observed": 1, + "desired": 1 + } + }, + "deployment": { + "name": "nginx-ingress-controller" + }, + "labels": { + "app_kubernetes_io/part-of": "kube-system", + "pod-template-hash": "6fc5bcc8c9", + "addonmanager_kubernetes_io/mode": "Reconcile", + "app_kubernetes_io/name": "nginx-ingress-controller" + } + }, + "agent": { + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Metric Type | +|---|---|---|---| +| @timestamp | Event timestamp. | date | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | +| cloud.instance.name | Instance name of the host machine. | keyword | | +| cloud.machine.type | Machine type of the host machine. | keyword | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | +| cloud.region | Region in which this host is running. | keyword | | +| container.id | Unique container id. | keyword | | +| container.image.name | Name of the image the container was built on. | keyword | | +| container.labels | Image labels. | object | | +| container.name | Container name. | keyword | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | +| data_stream.type | Data stream type. | constant_keyword | | +| ecs.version | ECS version | keyword | | +| host.architecture | Operating system architecture. | keyword | | +| host.containerized | If the host is a container. | boolean | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | +| host.ip | Host ip addresses. | ip | | +| host.mac | Host mac addresses. | keyword | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | +| host.os.build | OS build information. | keyword | | +| host.os.codename | OS codename, if any. | keyword | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | +| host.os.name | Operating system name, without the version. | keyword | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | +| host.os.version | Operating system version as a raw string. | keyword | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | +| kubernetes.container.image | Kubernetes container image | keyword | | +| kubernetes.container.name | Kubernetes container name | keyword | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | +| kubernetes.labels.\* | Kubernetes labels map | object | | +| kubernetes.namespace | Kubernetes namespace | keyword | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | +| kubernetes.node.name | Kubernetes node name | keyword | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | +| kubernetes.replicaset.replicas.available | The number of replicas per ReplicaSet | long | gauge | +| kubernetes.replicaset.replicas.desired | The number of replicas per ReplicaSet | long | gauge | +| kubernetes.replicaset.replicas.labeled | The number of fully labeled replicas per ReplicaSet | long | gauge | +| kubernetes.replicaset.replicas.observed | The generation observed by the ReplicaSet controller | long | gauge | +| kubernetes.replicaset.replicas.ready | The number of ready replicas per ReplicaSet | long | gauge | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | +| service.address | Service address | keyword | | +| service.type | Service type | keyword | | + + +### state_resourcequota + +This is the `state_resourcequota` dataset of the Kubernetes package. It collects ResourceQuota related metrics +from `kube_state_metrics`. + +An example event for `state_resourcequota` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:45:04.416Z", + "metricset": { + "name": "state_resourcequota", + "period": 10000 + }, + "host": { + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ] + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "event": { + "dataset": "kubernetes.resourcequota", + "module": "kubernetes", + "duration": 6324269 + }, + "agent": { + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487" + }, + "ecs": { + "version": "1.5.0" + }, + "kubernetes": { + "namespace": "quota-object-example", + "resourcequota": { + "name": "object-quota-demo", + "resource": "persistentvolumeclaims", + "type": "hard", + "quota": 1 + } + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.resourcequota.created.sec | Epoch seconds since the ResourceQuota was created | double | s | gauge | +| kubernetes.resourcequota.name | ResourceQuota name | keyword | | | +| kubernetes.resourcequota.quota | Quota informed (hard or used) for the resource | double | | gauge | +| kubernetes.resourcequota.resource | Resource name the quota applies to | keyword | | | +| kubernetes.resourcequota.type | Quota information type, `hard` or `used` | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### state_service + +This is the `state_service` dataset of the Kubernetes package. It collects +Service related metrics from `kube_state_metrics`. + +An example event for `state_service` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:39:24.389Z", + "kubernetes": { + "labels": { + "kubernetes_io_minikube_addons_endpoint": "metrics-server", + "kubernetes_io_name": "Metrics-server", + "addonmanager_kubernetes_io_mode": "Reconcile", + "kubernetes_io_minikube_addons": "metrics-server" + }, + "service": { + "name": "metrics-server", + "created": "2020-06-10T09:02:27.000Z", + "cluster_ip": "10.96.124.248", + "type": "ClusterIP" + }, + "namespace": "kube-system" + }, + "event": { + "dataset": "kubernetes.service", + "module": "kubernetes", + "duration": 10966648 + }, + "metricset": { + "name": "state_service", + "period": 10000 + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + } + }, + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "ecs": { + "version": "1.5.0" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + } +} +``` + +**Exported fields** + +| Field | Description | Type | +|---|---|---| +| @timestamp | Event timestamp. | date | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | +| cloud.image.id | Image ID for the cloud instance. | keyword | +| cloud.instance.id | Instance ID of the host machine. | keyword | +| cloud.instance.name | Instance name of the host machine. | keyword | +| cloud.machine.type | Machine type of the host machine. | keyword | +| cloud.project.id | Name of the project in Google Cloud. | keyword | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | +| cloud.region | Region in which this host is running. | keyword | +| container.id | Unique container id. | keyword | +| container.image.name | Name of the image the container was built on. | keyword | +| container.labels | Image labels. | object | +| container.name | Container name. | keyword | +| data_stream.dataset | Data stream dataset. | constant_keyword | +| data_stream.namespace | Data stream namespace. | constant_keyword | +| data_stream.type | Data stream type. | constant_keyword | +| ecs.version | ECS version | keyword | +| host.architecture | Operating system architecture. | keyword | +| host.containerized | If the host is a container. | boolean | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | +| host.ip | Host ip addresses. | ip | +| host.mac | Host mac addresses. | keyword | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | +| host.os.build | OS build information. | keyword | +| host.os.codename | OS codename, if any. | keyword | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | +| host.os.name | Operating system name, without the version. | keyword | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | +| host.os.version | Operating system version as a raw string. | keyword | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | +| kubernetes.annotations.\* | Kubernetes annotations map | object | +| kubernetes.container.image | Kubernetes container image | keyword | +| kubernetes.container.name | Kubernetes container name | keyword | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | +| kubernetes.labels.\* | Kubernetes labels map | object | +| kubernetes.namespace | Kubernetes namespace | keyword | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | +| kubernetes.node.name | Kubernetes node name | keyword | +| kubernetes.pod.ip | Kubernetes pod IP | ip | +| kubernetes.pod.name | Kubernetes pod name | keyword | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | +| kubernetes.service.cluster_ip | Internal IP for the service. | ip | +| kubernetes.service.created | Service creation date | date | +| kubernetes.service.external_ip | Service external IP | keyword | +| kubernetes.service.external_name | Service external DNS name | keyword | +| kubernetes.service.ingress_hostname | Ingress Hostname | keyword | +| kubernetes.service.ingress_ip | Ingress IP | keyword | +| kubernetes.service.load_balancer_ip | Load Balancer service IP | keyword | +| kubernetes.service.name | Service name. | keyword | +| kubernetes.service.type | Service type | keyword | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | +| orchestrator.cluster.name | Name of the cluster. | keyword | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | +| service.address | Service address | keyword | +| service.type | Service type | keyword | + + +### state_statefulset + +This is the `state_statefulset` dataset of the Kubernetes package. + +An example event for `state_statefulset` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:39:24.389Z", + "kubernetes": { + "namespace": "default", + "statefulset": { + "created": 1511989697, + "generation": { + "desired": 4, + "observed": 2 + }, + "name": "mysql", + "replicas": { + "desired": 5, + "observed": 2 + } + } + }, + "event": { + "dataset": "kubernetes.statefulset", + "module": "kubernetes", + "duration": 10966648 + }, + "metricset": { + "name": "state_statefulset", + "period": 10000 + }, + "host": { + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ], + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + } + }, + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "ecs": { + "version": "1.5.0" + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Metric Type | +|---|---|---|---| +| @timestamp | Event timestamp. | date | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | +| cloud.instance.name | Instance name of the host machine. | keyword | | +| cloud.machine.type | Machine type of the host machine. | keyword | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | +| cloud.region | Region in which this host is running. | keyword | | +| container.id | Unique container id. | keyword | | +| container.image.name | Name of the image the container was built on. | keyword | | +| container.labels | Image labels. | object | | +| container.name | Container name. | keyword | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | +| data_stream.type | Data stream type. | constant_keyword | | +| ecs.version | ECS version | keyword | | +| host.architecture | Operating system architecture. | keyword | | +| host.containerized | If the host is a container. | boolean | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | +| host.ip | Host ip addresses. | ip | | +| host.mac | Host mac addresses. | keyword | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | +| host.os.build | OS build information. | keyword | | +| host.os.codename | OS codename, if any. | keyword | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | +| host.os.name | Operating system name, without the version. | keyword | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | +| host.os.version | Operating system version as a raw string. | keyword | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | +| kubernetes.container.image | Kubernetes container image | keyword | | +| kubernetes.container.name | Kubernetes container name | keyword | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | +| kubernetes.labels.\* | Kubernetes labels map | object | | +| kubernetes.namespace | Kubernetes namespace | keyword | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | +| kubernetes.node.name | Kubernetes node name | keyword | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | +| kubernetes.statefulset.created | The creation timestamp (epoch) for StatefulSet | long | gauge | +| kubernetes.statefulset.generation.desired | The desired generation per StatefulSet | long | gauge | +| kubernetes.statefulset.generation.observed | The observed generation per StatefulSet | long | gauge | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | +| kubernetes.statefulset.replicas.desired | The number of desired replicas per StatefulSet | long | gauge | +| kubernetes.statefulset.replicas.observed | The number of observed replicas per StatefulSet | long | gauge | +| kubernetes.statefulset.replicas.ready | The number of ready replicas per StatefulSet | long | gauge | +| orchestrator.cluster.name | Name of the cluster. | keyword | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | +| service.address | Service address | keyword | | +| service.type | Service type | keyword | | + + +### state_storageclass + +This is the `state_storageclass` dataset of the Kubernetes package. It collects +StorageClass related metrics from `kube_state_metrics`. + +An example event for `state_storageclass` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:39:44.399Z", + "agent": { + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "644323b5-5d6a-4dfb-92dd-35ca602db487", + "id": "a6147a6e-6626-4a84-9907-f372f6c61eee" + }, + "kubernetes": { + "storageclass": { + "provisioner": "k8s.io/minikube-hostpath", + "reclaim_policy": "Delete", + "volume_binding_mode": "Immediate", + "name": "standard", + "created": "2020-06-10T09:02:27.000Z" + }, + "labels": { + "addonmanager_kubernetes_io_mode": "EnsureExists" + } + }, + "host": { + "hostname": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "name": "agent-ingest-management-clusterscope-674dbb75df-rp8cc", + "containerized": false, + "ip": [ + "172.17.0.11" + ], + "mac": [ + "02:42:ac:11:00:0b" + ] + }, + "event": { + "module": "kubernetes", + "duration": 5713503, + "dataset": "kubernetes.storageclass" + }, + "metricset": { + "name": "state_storageclass", + "period": 10000 + }, + "service": { + "address": "kube-state-metrics:8080", + "type": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + } +} +``` + +**Exported fields** + +| Field | Description | Type | +|---|---|---| +| @timestamp | Event timestamp. | date | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | +| cloud.image.id | Image ID for the cloud instance. | keyword | +| cloud.instance.id | Instance ID of the host machine. | keyword | +| cloud.instance.name | Instance name of the host machine. | keyword | +| cloud.machine.type | Machine type of the host machine. | keyword | +| cloud.project.id | Name of the project in Google Cloud. | keyword | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | +| cloud.region | Region in which this host is running. | keyword | +| container.id | Unique container id. | keyword | +| container.image.name | Name of the image the container was built on. | keyword | +| container.labels | Image labels. | object | +| container.name | Container name. | keyword | +| data_stream.dataset | Data stream dataset. | constant_keyword | +| data_stream.namespace | Data stream namespace. | constant_keyword | +| data_stream.type | Data stream type. | constant_keyword | +| ecs.version | ECS version | keyword | +| host.architecture | Operating system architecture. | keyword | +| host.containerized | If the host is a container. | boolean | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | +| host.ip | Host ip addresses. | ip | +| host.mac | Host mac addresses. | keyword | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | +| host.os.build | OS build information. | keyword | +| host.os.codename | OS codename, if any. | keyword | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | +| host.os.name | Operating system name, without the version. | keyword | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | +| host.os.version | Operating system version as a raw string. | keyword | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | +| kubernetes.annotations.\* | Kubernetes annotations map | object | +| kubernetes.container.image | Kubernetes container image | keyword | +| kubernetes.container.name | Kubernetes container name | keyword | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | +| kubernetes.labels.\* | Kubernetes labels map | object | +| kubernetes.namespace | Kubernetes namespace | keyword | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | +| kubernetes.node.name | Kubernetes node name | keyword | +| kubernetes.pod.ip | Kubernetes pod IP | ip | +| kubernetes.pod.name | Kubernetes pod name | keyword | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | +| kubernetes.storageclass.created | Storage class creation date | date | +| kubernetes.storageclass.name | Storage class name. | keyword | +| kubernetes.storageclass.provisioner | Volume provisioner for the storage class. | keyword | +| kubernetes.storageclass.reclaim_policy | Reclaim policy for dynamically created volumes | keyword | +| kubernetes.storageclass.volume_binding_mode | Mode for default provisioning and binding | keyword | +| orchestrator.cluster.name | Name of the cluster. | keyword | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | +| service.address | Service address | keyword | +| service.type | Service type | keyword | diff --git a/test/packages/kubernetes/docs/kubelet.md b/test/packages/kubernetes/docs/kubelet.md new file mode 100644 index 0000000000..13e0b8facf --- /dev/null +++ b/test/packages/kubernetes/docs/kubelet.md @@ -0,0 +1,1043 @@ +# kubelet + +## Metrics + +### container + +This is the `container` dataset of the Kubernetes package. It collects container related metrics +from Kubelet's monitoring APIs. + +An example event for `container` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:32:29.748Z", + "kubernetes": { + "namespace": "kube-system", + "node": { + "name": "minikube" + }, + "pod": { + "name": "metricbeat-g9fc6" + }, + "container": { + "rootfs": { + "used": { + "bytes": 61440 + }, + "inodes": { + "used": 17 + }, + "available": { + "bytes": 6724222976 + }, + "capacity": { + "bytes": 17361141760 + } + }, + "logs": { + "used": { + "bytes": 1617920 + }, + "inodes": { + "count": 9768928, + "used": 223910, + "free": 9545018 + }, + "available": { + "bytes": 6724222976 + }, + "capacity": { + "bytes": 17361141760 + } + }, + "start_time": "2020-06-25T07:19:37Z", + "name": "metricbeat", + "cpu": { + "usage": { + "node": { + "pct": 0.00015289625 + }, + "limit": { + "pct": 0.00015289625 + }, + "nanocores": 611585, + "core": { + "ns": 12206519774 + } + } + }, + "memory": { + "pagefaults": 10164, + "majorpagefaults": 528, + "available": { + "bytes": 188600320 + }, + "usage": { + "limit": { + "pct": 0.005608354460473573 + }, + "bytes": 94306304, + "node": { + "pct": 0.005608354460473573 + } + }, + "workingset": { + "bytes": 21114880 + }, + "rss": { + "bytes": 18386944 + } + } + } + }, + "host": { + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)" + }, + "name": "minikube", + "id": "b0e83d397c054b8a99a431072fe4617b" + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube" + }, + "metricset": { + "period": 10000, + "name": "container" + }, + "service": { + "address": "minikube:10250", + "type": "kubernetes" + }, + "event": { + "dataset": "kubernetes.container", + "module": "kubernetes", + "duration": 11091346 + }, + "ecs": { + "version": "1.5.0" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.cpu.usage.core.ns | Container CPU Core usage nanoseconds | long | | gauge | +| kubernetes.container.cpu.usage.limit.pct | CPU usage as a percentage of the defined limit for the container (or total node allocatable CPU if unlimited) | scaled_float | percent | gauge | +| kubernetes.container.cpu.usage.nanocores | CPU used nanocores | long | | gauge | +| kubernetes.container.cpu.usage.node.pct | CPU usage as a percentage of the total node allocatable CPU | scaled_float | percent | gauge | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.logs.available.bytes | Logs available capacity in bytes | long | byte | gauge | +| kubernetes.container.logs.capacity.bytes | Logs total capacity in bytes | long | byte | gauge | +| kubernetes.container.logs.inodes.count | Total available inodes | long | | gauge | +| kubernetes.container.logs.inodes.free | Total free inodes | long | | gauge | +| kubernetes.container.logs.inodes.used | Total used inodes | long | | gauge | +| kubernetes.container.logs.used.bytes | Logs used capacity in bytes | long | byte | gauge | +| kubernetes.container.memory.available.bytes | Total available memory | long | byte | gauge | +| kubernetes.container.memory.majorpagefaults | Number of major page faults | long | | counter | +| kubernetes.container.memory.pagefaults | Number of page faults | long | | counter | +| kubernetes.container.memory.rss.bytes | RSS memory usage | long | byte | gauge | +| kubernetes.container.memory.usage.bytes | Total memory usage | long | byte | gauge | +| kubernetes.container.memory.usage.limit.pct | Memory usage as a percentage of the defined limit for the container (or total node allocatable memory if unlimited) | scaled_float | percent | gauge | +| kubernetes.container.memory.usage.node.pct | Memory usage as a percentage of the total node allocatable memory | scaled_float | percent | gauge | +| kubernetes.container.memory.workingset.bytes | Working set memory usage | long | byte | gauge | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.container.rootfs.available.bytes | Root filesystem total available in bytes | long | byte | gauge | +| kubernetes.container.rootfs.capacity.bytes | Root filesystem total capacity in bytes | long | byte | gauge | +| kubernetes.container.rootfs.inodes.used | Used inodes | long | | gauge | +| kubernetes.container.rootfs.used.bytes | Root filesystem total used in bytes | long | byte | gauge | +| kubernetes.container.start_time | Start time | date | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### node + +This is the `node` dataset of the Kubernetes package. It collects Node related metrics +from Kubelet's monitoring APIs. + +An example event for `node` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:34:39.723Z", + "event": { + "dataset": "kubernetes.node", + "module": "kubernetes", + "duration": 13042307 + }, + "service": { + "type": "kubernetes", + "address": "minikube:10250" + }, + "host": { + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "name": "minikube", + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81" + }, + "id": "b0e83d397c054b8a99a431072fe4617b" + }, + "metricset": { + "name": "node", + "period": 10000 + }, + "kubernetes": { + "labels": { + "beta_kubernetes_io/os": "linux", + "kubernetes_io/arch": "amd64", + "kubernetes_io/hostname": "minikube", + "kubernetes_io/os": "linux", + "node-role_kubernetes_io/master": "", + "beta_kubernetes_io/arch": "amd64" + }, + "node": { + "memory": { + "available": { + "bytes": 12746428416 + }, + "usage": { + "bytes": 5670916096 + }, + "workingset": { + "bytes": 4068896768 + }, + "rss": { + "bytes": 3252125696 + }, + "pagefaults": 31680, + "majorpagefaults": 0 + }, + "network": { + "rx": { + "bytes": 107077476, + "errors": 0 + }, + "tx": { + "bytes": 67457933, + "errors": 0 + } + }, + "fs": { + "available": { + "bytes": 6655090688 + }, + "capacity": { + "bytes": 17361141760 + }, + "used": { + "bytes": 9689358336 + }, + "inodes": { + "count": 9768928, + "used": 224151, + "free": 9544777 + } + }, + "runtime": { + "imagefs": { + "capacity": { + "bytes": 17361141760 + }, + "used": { + "bytes": 8719928568 + }, + "available": { + "bytes": 6655090688 + } + } + }, + "start_time": "2020-06-25T07:18:38Z", + "name": "minikube", + "cpu": { + "usage": { + "core": { + "ns": 6136184971873 + }, + "nanocores": 455263291 + } + } + } + }, + "agent": { + "name": "minikube", + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a" + }, + "ecs": { + "version": "1.5.0" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.cpu.usage.core.ns | Node CPU Core usage nanoseconds | long | | gauge | +| kubernetes.node.cpu.usage.nanocores | CPU used nanocores | long | | gauge | +| kubernetes.node.fs.available.bytes | Filesystem total available in bytes | long | byte | gauge | +| kubernetes.node.fs.capacity.bytes | Filesystem total capacity in bytes | long | byte | gauge | +| kubernetes.node.fs.inodes.count | Number of inodes | long | | gauge | +| kubernetes.node.fs.inodes.free | Number of free inodes | long | | gauge | +| kubernetes.node.fs.inodes.used | Number of used inodes | long | | gauge | +| kubernetes.node.fs.used.bytes | Filesystem total used in bytes | long | byte | gauge | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.memory.available.bytes | Total available memory | long | byte | gauge | +| kubernetes.node.memory.majorpagefaults | Number of major page faults | long | | counter | +| kubernetes.node.memory.pagefaults | Number of page faults | long | | counter | +| kubernetes.node.memory.rss.bytes | RSS memory usage | long | byte | gauge | +| kubernetes.node.memory.usage.bytes | Total memory usage | long | byte | gauge | +| kubernetes.node.memory.workingset.bytes | Working set memory usage | long | byte | gauge | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.node.network.rx.bytes | Received bytes | long | byte | counter | +| kubernetes.node.network.rx.errors | Rx errors | long | | | +| kubernetes.node.network.tx.bytes | Transmitted bytes | long | byte | counter | +| kubernetes.node.network.tx.errors | Tx errors | long | | counter | +| kubernetes.node.runtime.imagefs.available.bytes | Image filesystem total available in bytes | long | byte | gauge | +| kubernetes.node.runtime.imagefs.capacity.bytes | Image filesystem total capacity in bytes | long | byte | gauge | +| kubernetes.node.runtime.imagefs.used.bytes | Image filesystem total used in bytes | long | byte | gauge | +| kubernetes.node.start_time | Start time | date | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### pod + +This is the `pod` dataset of the Kubernetes package. It collects Pod related metrics +from Kubelet's monitoring APIs. + +An example event for `pod` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:34:59.729Z", + "kubernetes": { + "pod": { + "memory": { + "rss": { + "bytes": 7823360 + }, + "page_faults": 5742, + "major_page_faults": 0, + "usage": { + "limit": { + "pct": 0.0008033509820466402 + }, + "bytes": 13508608, + "node": { + "pct": 0.0008033509820466402 + } + }, + "available": { + "bytes": 0 + }, + "working_set": { + "bytes": 8556544 + } + }, + "network": { + "rx": { + "bytes": 25671624, + "errors": 0 + }, + "tx": { + "errors": 0, + "bytes": 1092900259 + } + }, + "start_time": "2020-06-18T11:12:58Z", + "name": "kube-state-metrics-57cd6fdf9-hd959", + "uid": "a7c61334-dd52-4a12-bed5-4daee4c74139", + "cpu": { + "usage": { + "nanocores": 2811918, + "node": { + "pct": 0.0007029795 + }, + "limit": { + "pct": 0.0007029795 + } + } + } + }, + "namespace": "kube-system", + "node": { + "name": "minikube" + } + }, + "event": { + "duration": 20735189, + "dataset": "kubernetes.pod", + "module": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "period": 10000, + "name": "pod" + }, + "service": { + "type": "kubernetes", + "address": "minikube:10250" + }, + "host": { + "name": "minikube", + "hostname": "minikube", + "architecture": "x86_64", + "os": { + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ] + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube" + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.cpu.usage.limit.pct | CPU usage as a percentage of the defined limit for the pod containers (or total node CPU if one or more containers of the pod are unlimited) | scaled_float | percent | gauge | +| kubernetes.pod.cpu.usage.nanocores | CPU used nanocores | long | byte | gauge | +| kubernetes.pod.cpu.usage.node.pct | CPU usage as a percentage of the total node CPU | scaled_float | percent | gauge | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.memory.available.bytes | Total memory available | long | percent | gauge | +| kubernetes.pod.memory.major_page_faults | Total major page faults | long | | counter | +| kubernetes.pod.memory.page_faults | Total page faults | long | | counter | +| kubernetes.pod.memory.rss.bytes | Total resident set size memory | long | percent | gauge | +| kubernetes.pod.memory.usage.bytes | Total memory usage | long | byte | gauge | +| kubernetes.pod.memory.usage.limit.pct | Memory usage as a percentage of the defined limit for the pod containers (or total node allocatable memory if unlimited) | scaled_float | percent | gauge | +| kubernetes.pod.memory.usage.node.pct | Memory usage as a percentage of the total node allocatable memory | scaled_float | percent | gauge | +| kubernetes.pod.memory.working_set.bytes | Total working set memory | long | percent | gauge | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.network.rx.bytes | Received bytes | long | byte | counter | +| kubernetes.pod.network.rx.errors | Rx errors | long | | counter | +| kubernetes.pod.network.tx.bytes | Transmitted bytes | long | byte | counter | +| kubernetes.pod.network.tx.errors | Tx errors | long | | counter | +| kubernetes.pod.start_time | Start time | date | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### system + +This is the `system` dataset of the Kubernetes package. It collects System related metrics +from Kubelet's monitoring APIs. + +An example event for `system` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:39:59.647Z", + "service": { + "address": "minikube:10250", + "type": "kubernetes" + }, + "event": { + "duration": 20012905, + "dataset": "kubernetes.system", + "module": "kubernetes" + }, + "ecs": { + "version": "1.5.0" + }, + "host": { + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube", + "name": "minikube", + "architecture": "x86_64", + "os": { + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core", + "platform": "centos" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ] + }, + "agent": { + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube", + "type": "metricbeat", + "version": "8.0.0" + }, + "kubernetes": { + "node": { + "name": "minikube" + }, + "system": { + "container": "runtime", + "cpu": { + "usage": { + "nanocores": 35779815, + "core": { + "ns": 530899961233 + } + } + }, + "memory": { + "pagefaults": 12944019, + "majorpagefaults": 99, + "usage": { + "bytes": 198279168 + }, + "workingset": { + "bytes": 178794496 + }, + "rss": { + "bytes": 125259776 + } + }, + "start_time": "2020-06-25T07:19:32Z" + } + }, + "metricset": { + "name": "system", + "period": 10000 + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| kubernetes.system.container | Container name | keyword | | | +| kubernetes.system.cpu.usage.core.ns | CPU Core usage nanoseconds | long | | gauge | +| kubernetes.system.cpu.usage.nanocores | CPU used nanocores | long | | gauge | +| kubernetes.system.memory.majorpagefaults | Number of major page faults | long | | counter | +| kubernetes.system.memory.pagefaults | Number of page faults | long | | counter | +| kubernetes.system.memory.rss.bytes | RSS memory usage | long | byte | gauge | +| kubernetes.system.memory.usage.bytes | Total memory usage | long | byte | gauge | +| kubernetes.system.memory.workingset.bytes | Working set memory usage | long | byte | gauge | +| kubernetes.system.start_time | Start time | date | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | + + +### volume + +This is the `volume` dataset of the Kubernetes package. It collects Volume related metrics +from Kubelet's monitoring APIs. + +An example event for `volume` looks as following: + +```json +{ + "@timestamp": "2020-06-25T12:40:19.649Z", + "ecs": { + "version": "1.5.0" + }, + "metricset": { + "name": "volume", + "period": 10000 + }, + "service": { + "type": "kubernetes", + "address": "minikube:10250" + }, + "kubernetes": { + "pod": { + "name": "metricbeat-g9fc6" + }, + "volume": { + "name": "config", + "fs": { + "inodes": { + "used": 5, + "free": 9549949, + "count": 9768928 + }, + "available": { + "bytes": 7719858176 + }, + "capacity": { + "bytes": 17361141760 + }, + "used": { + "bytes": 12288 + } + } + }, + "namespace": "kube-system", + "node": { + "name": "minikube" + } + }, + "host": { + "architecture": "x86_64", + "os": { + "platform": "centos", + "version": "7 (Core)", + "family": "redhat", + "name": "CentOS Linux", + "kernel": "4.19.81", + "codename": "Core" + }, + "id": "b0e83d397c054b8a99a431072fe4617b", + "containerized": false, + "ip": [ + "192.168.64.10", + "fe80::a883:2fff:fe7f:6b12", + "172.17.0.1", + "fe80::42:d4ff:fe8c:9493", + "fe80::2859:80ff:fe9e:fcd6", + "fe80::d83a:d9ff:fee9:7052", + "fe80::880a:b6ff:fe18:ba76", + "fe80::f447:faff:fe80:e88b", + "fe80::9cc3:ffff:fe95:e48e", + "fe80::6c1c:29ff:fe50:d40c", + "fe80::b4f3:11ff:fe60:14ed", + "fe80::20f2:2aff:fe96:1e7b", + "fe80::5434:baff:fede:5720", + "fe80::a878:91ff:fe29:81f7" + ], + "name": "minikube", + "mac": [ + "aa:83:2f:7f:6b:12", + "02:42:d4:8c:94:93", + "2a:59:80:9e:fc:d6", + "da:3a:d9:e9:70:52", + "8a:0a:b6:18:ba:76", + "f6:47:fa:80:e8:8b", + "9e:c3:ff:95:e4:8e", + "6e:1c:29:50:d4:0c", + "b6:f3:11:60:14:ed", + "22:f2:2a:96:1e:7b", + "56:34:ba:de:57:20", + "aa:78:91:29:81:f7" + ], + "hostname": "minikube" + }, + "agent": { + "type": "metricbeat", + "version": "8.0.0", + "ephemeral_id": "b964a246-96c0-456a-a5c2-8c8b1040ecaf", + "id": "f7ec69f9-4997-4e76-b6c7-0c75206b727a", + "name": "minikube" + }, + "event": { + "dataset": "kubernetes.volume", + "module": "kubernetes", + "duration": 12481688 + } +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host is running. | keyword | | | +| cloud.image.id | Image ID for the cloud instance. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.instance.name | Instance name of the host machine. | keyword | | | +| cloud.machine.type | Machine type of the host machine. | keyword | | | +| cloud.project.id | Name of the project in Google Cloud. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host is running. | keyword | | | +| container.id | Unique container id. | keyword | | | +| container.image.name | Name of the image the container was built on. | keyword | | | +| container.labels | Image labels. | object | | | +| container.name | Container name. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version | keyword | | | +| host.architecture | Operating system architecture. | keyword | | | +| host.containerized | If the host is a container. | boolean | | | +| host.domain | Name of the domain of which the host is a member. For example, on Windows this could be the host's Active Directory domain or NetBIOS domain name. For Linux this could be the domain of the host's LDAP provider. | keyword | | | +| host.hostname | Hostname of the host. It normally contains what the `hostname` command returns on the host machine. | keyword | | | +| host.id | Unique host id. As hostname is not always unique, use values that are meaningful in your environment. Example: The current usage of `beat.name`. | keyword | | | +| host.ip | Host ip addresses. | ip | | | +| host.mac | Host mac addresses. | keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| host.os.build | OS build information. | keyword | | | +| host.os.codename | OS codename, if any. | keyword | | | +| host.os.family | OS family (such as redhat, debian, freebsd, windows). | keyword | | | +| host.os.kernel | Operating system kernel version as a raw string. | keyword | | | +| host.os.name | Operating system name, without the version. | keyword | | | +| host.os.platform | Operating system platform (such centos, ubuntu, windows). | keyword | | | +| host.os.version | Operating system version as a raw string. | keyword | | | +| host.type | Type of host. For Cloud providers this can be the machine type like `t2.medium`. If vm, this could be the container, for example, or other information meaningful in your environment. | keyword | | | +| kubernetes.annotations.\* | Kubernetes annotations map | object | | | +| kubernetes.container.image | Kubernetes container image | keyword | | | +| kubernetes.container.name | Kubernetes container name | keyword | | | +| kubernetes.deployment.name | Kubernetes deployment name | keyword | | | +| kubernetes.labels.\* | Kubernetes labels map | object | | | +| kubernetes.namespace | Kubernetes namespace | keyword | | | +| kubernetes.node.hostname | Kubernetes hostname as reported by the node’s kernel | keyword | | | +| kubernetes.node.name | Kubernetes node name | keyword | | | +| kubernetes.pod.ip | Kubernetes pod IP | ip | | | +| kubernetes.pod.name | Kubernetes pod name | keyword | | | +| kubernetes.pod.uid | Kubernetes pod UID | keyword | | | +| kubernetes.replicaset.name | Kubernetes replicaset name | keyword | | | +| kubernetes.selectors.\* | Kubernetes Service selectors map | object | | | +| kubernetes.statefulset.name | Kubernetes statefulset name | keyword | | | +| kubernetes.volume.fs.available.bytes | Filesystem total available in bytes | long | byte | gauge | +| kubernetes.volume.fs.capacity.bytes | Filesystem total capacity in bytes | long | byte | gauge | +| kubernetes.volume.fs.inodes.count | Total inodes | long | | gauge | +| kubernetes.volume.fs.inodes.free | Free inodes | long | | gauge | +| kubernetes.volume.fs.inodes.used | Used inodes | long | | gauge | +| kubernetes.volume.fs.used.bytes | Filesystem total used in bytes | long | byte | gauge | +| kubernetes.volume.fs.used.pct | Percentage of filesystem total used | long | percent | gauge | +| kubernetes.volume.name | Volume name | keyword | | | +| orchestrator.cluster.name | Name of the cluster. | keyword | | | +| orchestrator.cluster.url | URL of the API used to manage the cluster. | keyword | | | +| service.address | Service address | keyword | | | +| service.type | Service type | keyword | | | diff --git a/test/packages/kubernetes/img/logo_kubernetes.svg b/test/packages/kubernetes/img/logo_kubernetes.svg new file mode 100644 index 0000000000..7f3e86f548 --- /dev/null +++ b/test/packages/kubernetes/img/logo_kubernetes.svg @@ -0,0 +1 @@ + diff --git a/test/packages/kubernetes/img/metricbeat-kubernetes-controllermanager.png b/test/packages/kubernetes/img/metricbeat-kubernetes-controllermanager.png new file mode 100644 index 0000000000000000000000000000000000000000..ba9120f263891533a90d82814c8fb5541caa9e27 GIT binary patch literal 269783 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

Kmm_dyZmCrcxL0PGFwo= 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�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�{A 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 literal 0 HcmV?d00001 diff --git a/test/packages/kubernetes/img/metricbeat_kubernetes_overview.png b/test/packages/kubernetes/img/metricbeat_kubernetes_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..16ff532d275c6aa5abd485e117e45fd9e5153f27 GIT binary patch literal 237723 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≥nmi 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%0ALcJQ(H8**qbHa;INqGNZmr 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 R*957A4j53iRomNNOq%4>@+x84O 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 Bq7(oC literal 0 HcmV?d00001 diff --git a/test/packages/kubernetes/img/metricbeat_kubernetes_scheduler.png b/test/packages/kubernetes/img/metricbeat_kubernetes_scheduler.png new file mode 100644 index 0000000000000000000000000000000000000000..8f296b7990ccfec19bfa58fb26bdbbd75b6932a1 GIT binary patch literal 198656 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