From ee305a1d44124133831d17f380d59f2d0c585dfa Mon Sep 17 00:00:00 2001 From: Chris Mark Date: Fri, 27 Mar 2020 10:55:52 +0200 Subject: [PATCH] Add system test for Openmetrics module (#17200) (#17260) (cherry picked from commit 4af31be889574a922b1e23d43cad0f5da26d7465) --- .../module/openmetrics/_meta/Dockerfile | 5 +++ .../module/openmetrics/docker-compose.yml | 11 ++++++ .../module/openmetrics/test_openmetrics.py | 36 +++++++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 x-pack/metricbeat/module/openmetrics/_meta/Dockerfile create mode 100644 x-pack/metricbeat/module/openmetrics/docker-compose.yml create mode 100644 x-pack/metricbeat/module/openmetrics/test_openmetrics.py diff --git a/x-pack/metricbeat/module/openmetrics/_meta/Dockerfile b/x-pack/metricbeat/module/openmetrics/_meta/Dockerfile new file mode 100644 index 000000000000..09e2da0eaf57 --- /dev/null +++ b/x-pack/metricbeat/module/openmetrics/_meta/Dockerfile @@ -0,0 +1,5 @@ +ARG NODE_EXPORTER_VERSION +FROM prom/node-exporter:v${NODE_EXPORTER_VERSION} +EXPOSE 9100 +HEALTHCHECK --interval=1s --retries=90 CMD wget -q http://localhost:9100/metrics -O - | grep "node_cpu_seconds_total" + diff --git a/x-pack/metricbeat/module/openmetrics/docker-compose.yml b/x-pack/metricbeat/module/openmetrics/docker-compose.yml new file mode 100644 index 000000000000..64250ded2e14 --- /dev/null +++ b/x-pack/metricbeat/module/openmetrics/docker-compose.yml @@ -0,0 +1,11 @@ +version: '2.3' + +services: + openmetrics-node_exporter: + image: docker.elastic.co/integrations-ci/beats-openmetrics-node-exporter:${NODE_EXPORTER_VERSION:-0.18.1}-1 + build: + context: ./_meta + args: + NODE_EXPORTER_VERSION: ${NODE_EXPORTER_VERSION:-0.18.1} + ports: + - 9100 diff --git a/x-pack/metricbeat/module/openmetrics/test_openmetrics.py b/x-pack/metricbeat/module/openmetrics/test_openmetrics.py new file mode 100644 index 000000000000..6e86ad3a5063 --- /dev/null +++ b/x-pack/metricbeat/module/openmetrics/test_openmetrics.py @@ -0,0 +1,36 @@ +import os +import sys +import unittest + +sys.path.append(os.path.join(os.path.dirname(__file__), '../../tests/system')) +from xpack_metricbeat import XPackTest, metricbeat + + +class Test(XPackTest): + + COMPOSE_SERVICES = ['openmetrics-node_exporter'] + + @unittest.skipUnless(metricbeat.INTEGRATION_TESTS, "integration test") + def test_openmetrics(self): + """ + openmetrics collector test + """ + self.render_config_template(modules=[{ + "name": "openmetrics", + "metricsets": ["collector"], + "hosts": self.get_hosts(), + "period": "5s", + }]) + proc = self.start_beat(home=self.beat_path) + self.wait_until(lambda: self.output_lines() > 0, 60) + proc.check_kill_and_wait() + self.assert_no_logged_warnings() + + output = self.read_output_json() + self.assertGreater(len(output), 0) + + for evt in output: + self.assert_fields_are_documented(evt) + self.assertIn("openmetrics", evt.keys(), evt) + self.assertIn("metrics", evt["openmetrics"].keys(), evt) + self.assertGreater(len(evt["openmetrics"]["metrics"].keys()), 0)