From 6bf2e3c7dcc3a7d1800f73af5b8f28dc2b81a3a3 Mon Sep 17 00:00:00 2001 From: Ujwal Sah Date: Mon, 6 Jul 2026 12:05:41 +0530 Subject: [PATCH 1/2] feat(zookeeper): promote OTel synthesis rules to prod for ZooKeeper entity type --- entity-types/infra-zookeeper/definition.yml | 48 ++++ .../opentelemetry_dashboard.json | 230 ++++++++++++++++++ 2 files changed, 278 insertions(+) create mode 100644 entity-types/infra-zookeeper/definition.yml create mode 100644 entity-types/infra-zookeeper/opentelemetry_dashboard.json diff --git a/entity-types/infra-zookeeper/definition.yml b/entity-types/infra-zookeeper/definition.yml new file mode 100644 index 000000000..9f573403d --- /dev/null +++ b/entity-types/infra-zookeeper/definition.yml @@ -0,0 +1,48 @@ +domain: INFRA +type: ZOOKEEPER + +synthesis: + rules: + - ruleName: infra_zookeeper_otel_instance + identifier: zookeeper.instance.id + name: zookeeper.instance.id + encodeIdentifierInGUID: true + conditions: + - attribute: eventType + value: Metric + - attribute: metricName + prefix: zookeeper. + - attribute: instrumentation.provider + value: opentelemetry + - attribute: zookeeper.instance.id + tags: + zookeeper.instance.id: + service.name: + service.instance.id: + host.name: + host.id: + server.state: + zk.version: + otel.library.name: + entityTagName: instrumentation.name + + tags: + telemetry.sdk.name: + entityTagName: instrumentation.provider + +goldenTags: +- zookeeper.instance.id +- service.name +- host.name + +configuration: + entityExpirationTime: DAILY + alertable: true + +dashboardTemplates: + opentelemetry: + template: opentelemetry_dashboard.json + +ownership: + primaryOwner: + teamName: "OnHost Agent and Integrations" diff --git a/entity-types/infra-zookeeper/opentelemetry_dashboard.json b/entity-types/infra-zookeeper/opentelemetry_dashboard.json new file mode 100644 index 000000000..c78c0cdc4 --- /dev/null +++ b/entity-types/infra-zookeeper/opentelemetry_dashboard.json @@ -0,0 +1,230 @@ +{ + "name": "ZooKeeper (OpenTelemetry)", + "pages": [ + { + "name": "Overview", + "widgets": [ + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 1, + "row": 1, + "height": 3, + "width": 3 + }, + "title": "ZooKeeper Metrics Seen", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT uniqueCount(metricName) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 4, + "row": 1, + "height": 3, + "width": 3 + }, + "title": "ZooKeeper Instances", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT uniqueCount(zookeeper.instance.id) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 7, + "row": 1, + "height": 3, + "width": 3 + }, + "title": "Server States Reporting", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT uniqueCount(server.state) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.billboard" + }, + "layout": { + "column": 10, + "row": 1, + "height": 3, + "width": 3 + }, + "title": "Metric Throughput / min", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT rate(count(*), 1 minute) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 1, + "row": 4, + "height": 3, + "width": 6 + }, + "title": "Request Latency (avg / max)", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT average(zookeeper.latency.avg), max(zookeeper.latency.max) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 7, + "row": 4, + "height": 3, + "width": 6 + }, + "title": "Outstanding Requests", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT max(zookeeper.request.active) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 1, + "row": 7, + "height": 3, + "width": 6 + }, + "title": "Network Packets (recv / sent)", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT sum(zookeeper.packet.count) WHERE instrumentation.provider = 'opentelemetry' FACET direction TIMESERIES AUTO", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 7, + "row": 7, + "height": 3, + "width": 6 + }, + "title": "Alive Connections", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT max(zookeeper.connection.active) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.line" + }, + "layout": { + "column": 1, + "row": 10, + "height": 3, + "width": 6 + }, + "title": "Data Tree and Watches", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT max(zookeeper.znode.count), max(zookeeper.watch.count), max(zookeeper.data_tree.ephemeral_node.count) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 7, + "row": 10, + "height": 3, + "width": 6 + }, + "title": "Top ZooKeeper Metrics by Volume", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT count(*) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%' FACET metricName LIMIT 20", + "accountId": 0 + } + ] + } + }, + { + "visualization": { + "id": "viz.table" + }, + "layout": { + "column": 1, + "row": 13, + "height": 3, + "width": 12 + }, + "title": "Instance Coverage", + "rawConfiguration": { + "nrqlQueries": [ + { + "query": "FROM Metric SELECT count(*) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%' FACET zookeeper.instance.id, server.state LIMIT 100", + "accountId": 0 + } + ] + } + } + ] + } + ] +} From 2a7477e231cbc9c76253f1652f503dfe23afcc0a Mon Sep 17 00:00:00 2001 From: Ujwal Sah Date: Mon, 6 Jul 2026 12:27:09 +0530 Subject: [PATCH 2/2] chore: sanitize zookeeper dashboard --- .../opentelemetry_dashboard.json | 35 +++++++------------ 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/entity-types/infra-zookeeper/opentelemetry_dashboard.json b/entity-types/infra-zookeeper/opentelemetry_dashboard.json index c78c0cdc4..5b3e388a3 100644 --- a/entity-types/infra-zookeeper/opentelemetry_dashboard.json +++ b/entity-types/infra-zookeeper/opentelemetry_dashboard.json @@ -19,8 +19,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT uniqueCount(metricName) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -39,8 +38,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT uniqueCount(zookeeper.instance.id) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -59,8 +57,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT uniqueCount(server.state) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -79,8 +76,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT rate(count(*), 1 minute) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%'", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -99,8 +95,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT average(zookeeper.latency.avg), max(zookeeper.latency.max) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -119,8 +114,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT max(zookeeper.request.active) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -139,8 +133,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT sum(zookeeper.packet.count) WHERE instrumentation.provider = 'opentelemetry' FACET direction TIMESERIES AUTO", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -159,8 +152,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT max(zookeeper.connection.active) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -179,8 +171,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT max(zookeeper.znode.count), max(zookeeper.watch.count), max(zookeeper.data_tree.ephemeral_node.count) WHERE instrumentation.provider = 'opentelemetry' TIMESERIES AUTO", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -199,8 +190,7 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT count(*) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%' FACET metricName LIMIT 20", - "accountId": 0 - } + "accountId": 0} ] } }, @@ -219,12 +209,11 @@ "nrqlQueries": [ { "query": "FROM Metric SELECT count(*) WHERE instrumentation.provider = 'opentelemetry' AND metricName LIKE 'zookeeper.%' FACET zookeeper.instance.id, server.state LIMIT 100", - "accountId": 0 - } + "accountId": 0} ] } } ] } ] -} +} \ No newline at end of file