summaryrefslogtreecommitdiffstats
path: root/nixos/tests/elk.nix
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2021-06-08 13:53:20 +0200
committerGitHub <noreply@github.com>2021-06-08 13:53:20 +0200
commit843248d39f6a52d7631e92a4b06f84b5949f634c (patch)
tree98658e11d595eac9090836c33d4707dc469a77ab /nixos/tests/elk.nix
parent094dcbe0ff1ace98c198c94d96028d6c67a40f00 (diff)
parent5699d027eccea705b25bf84da147708f2021eb01 (diff)
Merge pull request #117379 from hercules-ci/nixos-metricbeat
nixos/metricbeat: init
Diffstat (limited to 'nixos/tests/elk.nix')
-rw-r--r--nixos/tests/elk.nix38
1 files changed, 38 insertions, 0 deletions
diff --git a/nixos/tests/elk.nix b/nixos/tests/elk.nix
index 71d39a647a5a..2a1a4cba2956 100644
--- a/nixos/tests/elk.nix
+++ b/nixos/tests/elk.nix
@@ -56,6 +56,24 @@ let
'');
};
+ metricbeat = {
+ enable = true;
+ package = elk.metricbeat;
+ modules.system = {
+ metricsets = ["cpu" "load" "memory" "network" "process" "process_summary" "uptime" "socket_summary"];
+ enabled = true;
+ period = "5s";
+ processes = [".*"];
+ cpu.metrics = ["percentages" "normalized_percentages"];
+ core.metrics = ["percentages"];
+ };
+ settings = {
+ output.elasticsearch = {
+ hosts = ["127.0.0.1:9200"];
+ };
+ };
+ };
+
logstash = {
enable = true;
package = elk.logstash;
@@ -135,6 +153,16 @@ let
)
+ def has_metricbeat():
+ dictionary = {"query": {"match": {"event.dataset": {"query": "system.cpu"}}}}
+ return (
+ "curl --silent --show-error '${esUrl}/_search' "
+ + "-H 'Content-Type: application/json' "
+ + "-d '{}' ".format(json.dumps(dictionary))
+ + "| jq '.hits.total > 0'"
+ )
+
+
start_all()
one.wait_for_unit("elasticsearch.service")
@@ -161,6 +189,12 @@ let
"curl --silent --show-error 'http://localhost:5601/api/status' | jq .status.overall.state | grep green"
)
+ with subtest("Metricbeat is running"):
+ one.wait_for_unit("metricbeat.service")
+
+ with subtest("Metricbeat metrics arrive in elasticsearch"):
+ one.wait_until_succeeds(has_metricbeat() + " | tee /dev/console | grep 'true'")
+
with subtest("Logstash messages arive in elasticsearch"):
one.wait_until_succeeds(total_hits("flowers") + " | grep -v 0")
one.wait_until_succeeds(total_hits("dragons") + " | grep 0")
@@ -190,12 +224,14 @@ in pkgs.lib.mapAttrs mkElkTest {
logstash = pkgs.logstash6;
kibana = pkgs.kibana6;
journalbeat = pkgs.journalbeat6;
+ metricbeat = pkgs.metricbeat6;
}
else {
elasticsearch = pkgs.elasticsearch6-oss;
logstash = pkgs.logstash6-oss;
kibana = pkgs.kibana6-oss;
journalbeat = pkgs.journalbeat6;
+ metricbeat = pkgs.metricbeat6;
};
ELK-7 =
if enableUnfree
@@ -204,11 +240,13 @@ in pkgs.lib.mapAttrs mkElkTest {
logstash = pkgs.logstash7;
kibana = pkgs.kibana7;
journalbeat = pkgs.journalbeat7;
+ metricbeat = pkgs.metricbeat7;
}
else {
elasticsearch = pkgs.elasticsearch7-oss;
logstash = pkgs.logstash7-oss;
kibana = pkgs.kibana7-oss;
journalbeat = pkgs.journalbeat7;
+ metricbeat = pkgs.metricbeat7;
};
}