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..5b3e388a3 --- /dev/null +++ b/entity-types/infra-zookeeper/opentelemetry_dashboard.json @@ -0,0 +1,219 @@ +{ + "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} + ] + } + } + ] + } + ] +} \ No newline at end of file