Skip to content

Commit

Permalink
Add kube-state-metrics system tests
Browse files Browse the repository at this point in the history
  • Loading branch information
exekias committed May 16, 2017
1 parent 7c8316c commit 1fba4ef
Show file tree
Hide file tree
Showing 7 changed files with 105 additions and 51 deletions.
6 changes: 6 additions & 0 deletions metricbeat/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ services:
kafka: { condition: service_healthy }
kibana: { condition: service_healthy }
kubernetes: { condition: service_healthy }
kube-state: { condition: service_started }
memcached: { condition: service_healthy }
mongodb: { condition: service_healthy }
mysql: { condition: service_healthy }
Expand Down Expand Up @@ -109,6 +110,11 @@ services:
- /var/lib/docker:/var/lib/docker
- /var/run:/var/run

kube-state:
build:
context: ${PWD}/module/kubernetes/_meta/
dockerfile: Dockerfile.kube-state

memcached:
build: ${PWD}/module/memcached/_meta

Expand Down
20 changes: 10 additions & 10 deletions metricbeat/docs/fields.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -6361,31 +6361,31 @@ kubernetes container metrics
[float]
== resource Fields
Kubernetes container resource requests and limits
=== kubernetes.container.id
type: keyword
Container id
[float]
=== kubernetes.container.resource.status.phase
=== kubernetes.container.status.phase
type: keyword
Container phase (running, waiting, terminated)
[float]
=== kubernetes.container.resource.status.ready
=== kubernetes.container.status.ready
type: boolean
Container ready status
[float]
=== kubernetes.container.resource.status.restarts
=== kubernetes.container.status.restarts
type: integer
Expand All @@ -6394,15 +6394,15 @@ Container restarts count
[float]
=== kubernetes.container.resource.cpu.limit.nanocores
=== kubernetes.container.cpu.limit.nanocores
type: long
Container CPU nanocores limit
[float]
=== kubernetes.container.resource.cpu.request.nanocores
=== kubernetes.container.cpu.request.nanocores
type: long
Expand All @@ -6411,7 +6411,7 @@ Container CPU requested nanocores
[float]
=== kubernetes.container.resource.memory.limit.bytes
=== kubernetes.container.memory.limit.bytes
type: long
Expand All @@ -6421,7 +6421,7 @@ Container memory limit in bytes
[float]
=== kubernetes.container.resource.memory.request.bytes
=== kubernetes.container.memory.request.bytes
type: long
Expand Down
6 changes: 6 additions & 0 deletions metricbeat/module/kubernetes/_meta/Dockerfile.kube-state
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM gcr.io/google_containers/kube-state-metrics:v0.5.0

ADD kubeconfig /

ENTRYPOINT ["/kube-state-metrics"]
CMD ["--port=8080", "--in-cluster=false", "--apiserver=http://172.17.0.1:8080", "--kubeconfig=/kubeconfig"]
2 changes: 2 additions & 0 deletions metricbeat/module/kubernetes/_meta/env
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
KUBELET_HOST=172.17.0.1
KUBELET_PORT=10255
KUBE_STATE_METRICS_HOST=kube-state
KUBE_STATE_METRICS_PORT=8080
18 changes: 18 additions & 0 deletions metricbeat/module/kubernetes/_meta/kubeconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: v1
clusters:
- cluster:
server: http://172.17.0.1:8080
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes
name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes
user:
client-certificate:
client-key:
81 changes: 40 additions & 41 deletions metricbeat/module/kubernetes/state_container/_meta/fields.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,46 @@
description: >
kubernetes container metrics
fields:
- name: resource
- name: id
type: keyword
description:
Container id
- name: status
type: group
description: >
Kubernetes container resource requests and limits
fields:
- name: status
type: group
fields:
- name: phase
type: keyword
description: >
- name: phase
type: keyword
description: >
Container phase (running, waiting, terminated)
- name: ready
type: boolean
description: >
Container ready status
- name: restarts
type: integer
description: >
Container restarts count
- name: cpu
type: group
fields:
- name: limit.nanocores
type: long
description: >
Container CPU nanocores limit
- name: request.nanocores
type: long
description: >
Container CPU requested nanocores
- name: memory
type: group
fields:
- name: limit.bytes
type: long
format: bytes
description: >
Container memory limit in bytes
- name: request.bytes
type: long
format: bytes
description: >
Container requested memory in bytes
- name: ready
type: boolean
description: >
Container ready status
- name: restarts
type: integer
description: >
Container restarts count
- name: cpu
type: group
fields:
- name: limit.nanocores
type: long
description: >
Container CPU nanocores limit
- name: request.nanocores
type: long
description: >
Container CPU requested nanocores
- name: memory
type: group
fields:
- name: limit.bytes
type: long
format: bytes
description: >
Container memory limit in bytes
- name: request.bytes
type: long
format: bytes
description: >
Container requested memory in bytes
23 changes: 23 additions & 0 deletions metricbeat/tests/system/test_kubernetes.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,21 @@ def test_kubelet_container(self):
""" Kubernetes kubelet container metricset tests """
self._test_metricset('container', 1, self.get_kubelet_hosts())

@unittest.skipUnless(metricbeat.INTEGRATION_TESTS, "integration test")
def test_state_node(self):
""" Kubernetes state node metricset tests """
self._test_metricset('state_node', 1, self.get_kube_state_hosts())

@unittest.skipUnless(metricbeat.INTEGRATION_TESTS, "integration test")
def test_state_pod(self):
""" Kubernetes state pod metricset tests """
self._test_metricset('state_pod', 1, self.get_kube_state_hosts())

@unittest.skipUnless(metricbeat.INTEGRATION_TESTS, "integration test")
def test_state_container(self):
""" Kubernetes state container metricset tests """
self._test_metricset('state_container', 1, self.get_kube_state_hosts())

def _test_metricset(self, metricset, expected_events, hosts):
self.render_config_template(modules=[{
"name": "kubernetes",
Expand Down Expand Up @@ -59,3 +74,11 @@ def get_kubelet_hosts(cls):
os.getenv('KUBELET_HOST', 'localhost') + ':' +
os.getenv('KUBELET_PORT', '10255')
]

@classmethod
def get_kube_state_hosts(cls):
return [
"http://" +
os.getenv('KUBE_STATE_METRICS_HOST', 'localhost') + ':' +
os.getenv('KUBE_STATE_METRICS_PORT', '18080')
]

0 comments on commit 1fba4ef

Please sign in to comment.