diff --git a/entity-types/infra-confluentcloudcluster/confluent_dashboard.json b/entity-types/infra-confluentcloudcluster/confluent_dashboard.json index 91d58a46d..d1f3f423d 100644 --- a/entity-types/infra-confluentcloudcluster/confluent_dashboard.json +++ b/entity-types/infra-confluentcloudcluster/confluent_dashboard.json @@ -1,13 +1,13 @@ { - "name": "Confluent Cloud", + "name": "Confluent Cloud Cluster", "description": null, "pages": [ { - "name": "Confluent Cloud", + "name": "Confluent Cloud Cluster", "description": null, "widgets": [ { - "title": "Cluster Specs", + "title": "Cluster load percent", "layout": { "column": 1, "row": 1, @@ -15,7 +15,7 @@ "height": 4 }, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { "dataFormatters": [ @@ -30,7 +30,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(confluent.kafka.server.metric.topic) as 'Topics', average(confluent.kafka.server.partition_count) as 'Partitions', uniqueCount(confluent.kafka.server.metric.consumer_group_id) as 'Consumer Groups' FROM Metric" + "query": "select average(confluent.kafka.server.cluster_load_percent) * 100 AS 'Cluster load percent' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -39,7 +39,7 @@ } }, { - "title": "Request Bytes (bytes/second) Per Type", + "title": "Request throughtput (bytes/second)", "layout": { "column": 7, "row": 1, @@ -47,7 +47,7 @@ "height": 4 }, "visualization": { - "id": "viz.pie" + "id": "viz.line" }, "rawConfiguration": { "facet": { @@ -59,7 +59,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.request_bytes), 1 second) FROM Metric FACET confluent.kafka.server.metric.type LIMIT MAX" + "query": "select rate(sum(confluent.kafka.server.request_bytes), 1 second) AS 'Request throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -68,7 +68,7 @@ } }, { - "title": "Retained Bytes Per Topic", + "title": "Response throughtput (bytes/second)", "layout": { "column": 1, "row": 5, @@ -88,15 +88,12 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(confluent.kafka.server.retained_bytes) FROM Metric TIMESERIES FACET confluent.kafka.server.metric.topic LIMIT MAX" + "query": "select rate(sum(confluent.kafka.server.response_bytes), 1 second) AS 'Response throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES" - }, "yAxisLeft": { "zero": true }, @@ -106,7 +103,7 @@ } }, { - "title": "Records Sent Per Minute", + "title": "Active connections", "layout": { "column": 5, "row": 5, @@ -126,7 +123,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.sent_records),1 minute) FROM Metric TIMESERIES FACET confluent.kafka.server.metric.topic LIMIT MAX" + "query": "select max(confluent.kafka.server.active_connection_count) AS 'Active connections' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -138,7 +135,7 @@ } }, { - "title": "Active Connections", + "title": "Requests", "layout": { "column": 9, "row": 5, @@ -158,7 +155,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT max(confluent.kafka.server.active_connection_count) AS 'Active Connections' FROM Metric LIMIT MAX TIMESERIES" + "query": "select max(confluent.kafka.server.request_count) AS 'Requests' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -193,7 +190,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(confluent.kafka.server.partition_count) AS partitions FROM Metric LIMIT MAX TIMESERIES" + "query": "select latest(confluent.kafka.server.partition_count) AS 'Partitions' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -205,7 +202,7 @@ } }, { - "title": "Recieved Bytes by Topic", + "title": "Successful Auth Attempts", "layout": { "column": 5, "row": 8, @@ -225,22 +222,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(confluent.kafka.server.received_bytes) FROM Metric TIMESERIES FACET confluent.kafka.server.metric.topic" + "query": "select sum(confluent.kafka.server.successful_authentication_count) AS 'Successful Authentications' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES" - }, "yAxisLeft": { "zero": false } } }, { - "title": "Records Recieved Per Minute", + "title": "Rest produced request throughtput (bytes/second)", "layout": { "column": 9, "row": 8, @@ -260,7 +254,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.received_records),1 minute) FROM Metric TIMESERIES FACET confluent.kafka.server.metric.topic LIMIT MAX" + "query": "select rate(sum(confluent.kafka.server.rest_produce_request_bytes), 1 second) AS 'Rest produced request throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -272,7 +266,7 @@ } }, { - "title": "Successful Auth Attempts", + "title": "Link destination response throughtput (bytes/second)", "layout": { "column": 1, "row": 11, @@ -292,22 +286,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.successful_authentication_count), 1 minute) AS 'Auths Per Minute' FROM Metric LIMIT MAX TIMESERIES" + "query": "select rate(sum(confluent.kafka.server.cluster_link_destination_response_bytes), 1 second) AS 'Cluster link destination response throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "COUNT" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Egres rate (bytes/minute)", + "title": "Link source response throughtput (bytes/second)", "layout": { "column": 5, "row": 11, @@ -327,7 +318,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.response_bytes), 1 minute) as 'Egres' FROM Metric LIMIT MAX TIMESERIES" + "query": "select rate(sum(confluent.kafka.server.cluster_link_source_response_bytes), 1 second) AS 'Cluster link source response throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -342,7 +333,7 @@ } }, { - "title": "Sent Bytes by Topic", + "title": "Cluster links", "layout": { "column": 9, "row": 11, @@ -362,22 +353,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(confluent.kafka.server.sent_bytes) FROM Metric TIMESERIES FACET confluent.kafka.server.metric.topic LIMIT MAX " + "query": "select max(confluent.kafka.server.cluster_link_count) AS 'Cluster links' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Response Bytes (bytes/second) Per Kafka Protocol Request Type", + "title": "Cluster link tasks", "layout": { "column": 1, "row": 14, @@ -397,22 +385,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.response_bytes), 1 second) FROM Metric FACET confluent.kafka.server.metric.type LIMIT MAX TIMESERIES" + "query": "select max(confluent.kafka.server.cluster_link_task_count) AS 'Cluster link tasks' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES_PER_SECOND" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Request Rate", + "title": "Link mirror topics error count", "layout": { "column": 5, "row": 14, @@ -432,22 +417,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.request_count), 1 minute) as 'Requests Per Minute' FROM Metric LIMIT MAX TIMESERIES" + "query": "select sum(confluent.kafka.server.cluster_link_mirror_transition_in_error) AS 'cluster link mirror topic errors' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "REQUESTS_PER_SECOND" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Ingress rate (bytes/minute)", + "title": "Link mirror topics count", "layout": { "column": 9, "row": 14, @@ -467,7 +449,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.request_bytes), 1 minute) as 'Ingress' FROM Metric LIMIT MAX TIMESERIES" + "query": "select sum(confluent.kafka.server.cluster_link_mirror_topic_count) AS 'Cluster link mirror topics' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -480,79 +462,6 @@ "zero": true } } - }, - { - "title": "Request Bytes (bytes/second) Per Kafka Protocol Request Type", - "layout": { - "column": 1, - "row": 17, - "width": 6, - "height": 3 - }, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.request_bytes), 1 second) FROM Metric FACET confluent.kafka.server.metric.type LIMIT MAX TIMESERIES" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES_PER_SECOND" - }, - "yAxisLeft": { - "zero": true - } - } - }, - { - "title": "Response Rate", - "layout": { - "column": 7, - "row": 17, - "width": 6, - "height": 3 - }, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT rate(sum(confluent.kafka.server.response_bytes), 1 minute) as 'Bytes Per Minute' FROM Metric LIMIT MAX TIMESERIES" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "REQUESTS_PER_SECOND" - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } } ] } diff --git a/entity-types/infra-confluentcloudcluster/definition.yml b/entity-types/infra-confluentcloudcluster/definition.yml index cc34e1b77..b13b67133 100644 --- a/entity-types/infra-confluentcloudcluster/definition.yml +++ b/entity-types/infra-confluentcloudcluster/definition.yml @@ -10,6 +10,17 @@ goldenTags: - newrelic.source - kafka.cluster_name - confluent.resourceType + - collector.version + - confluent.region + - confluent.resourceGroup + - confluent.resourceId + - confluent.resourceType + - http.scheme + - instrumentation.provider + - net.host.name + - net.host.port + - service.instance.id + - service.name configuration: entityExpirationTime: DAILY alertable: true @@ -40,6 +51,8 @@ synthesis: value: opentelemetry - attribute: kafka_id present: true + - attribute: topic + present: false # telemetry from confluent-cloud provider - identifier: confluent.clusterId @@ -64,4 +77,6 @@ synthesis: - attribute: confluent.resourceType value: kafka.server - attribute: confluent.clusterId - present: true \ No newline at end of file + present: true + - attribute: confluent.kafka.server.metric.topic + present: false \ No newline at end of file diff --git a/entity-types/infra-confluentcloudcluster/golden_metrics.yml b/entity-types/infra-confluentcloudcluster/golden_metrics.yml index 0c5c52a52..eeb2a0180 100644 --- a/entity-types/infra-confluentcloudcluster/golden_metrics.yml +++ b/entity-types/infra-confluentcloudcluster/golden_metrics.yml @@ -12,31 +12,3 @@ clusterLoadPercent: from: Metric where: confluent.clusterId is not null eventName: confluent.clusterId -hotPartitionIngress: - title: Hot Partition Ingress - unit: COUNT - queries: - opentelemetry: - select: filter(uniqueCount(topic), WHERE metricName='confluent_kafka_server_hot_partition_ingress') - from: Metric - where: kafka_id is not null - eventName: kafka_id - confluent: - select: filter(uniqueCount(confluent.kafka.server.metric.topic), WHERE metricName='confluent.kafka.server.hot_partition_ingress') - from: Metric - where: confluent.clusterId is not null - eventName: confluent.clusterId -hotPartitionEgress: - title: Hot Partition Egress - unit: COUNT - queries: - opentelemetry: - select: filter(uniqueCount(topic), WHERE metricName='confluent_kafka_server_hot_partition_egress') - from: Metric - where: kafka_id is not null - eventName: kafka_id - confluent: - select: filter(uniqueCount(confluent.kafka.server.metric.topic), WHERE metricName='confluent.kafka.server.hot_partition_egress') - from: Metric - where: confluent.clusterId is not null - eventName: confluent.clusterId diff --git a/entity-types/infra-confluentcloudcluster/opentelemetry_dashboard.json b/entity-types/infra-confluentcloudcluster/opentelemetry_dashboard.json index ac2f54276..04382f891 100644 --- a/entity-types/infra-confluentcloudcluster/opentelemetry_dashboard.json +++ b/entity-types/infra-confluentcloudcluster/opentelemetry_dashboard.json @@ -1,13 +1,13 @@ { - "name": "Confluent Cloud", + "name": "Confluent Cloud Cluster", "description": null, "pages": [ { - "name": "Confluent Cloud", + "name": "Confluent Cloud Cluster", "description": null, "widgets": [ { - "title": "Cluster Specs", + "title": "Cluster load percent", "layout": { "column": 1, "row": 1, @@ -15,7 +15,7 @@ "height": 4 }, "visualization": { - "id": "viz.billboard" + "id": "viz.line" }, "rawConfiguration": { "dataFormatters": [ @@ -30,7 +30,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT uniqueCount(topic) as 'Topics', latest(confluent_kafka_server_partition_count) as 'Partitions', uniqueCount(consumer_group_id) as 'Consumer Groups', uniqueCount(connector_id) AS 'Connectors' FROM Metric" + "query": "select average(confluent_kafka_server_cluster_load_percent) * 100 AS 'Cluster load percent' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -39,7 +39,7 @@ } }, { - "title": "Request Bytes (bytes/second) Per Type", + "title": "Request throughtput (bytes/second)", "layout": { "column": 7, "row": 1, @@ -47,7 +47,7 @@ "height": 4 }, "visualization": { - "id": "viz.pie" + "id": "viz.line" }, "rawConfiguration": { "facet": { @@ -59,7 +59,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_request_bytes), 1 second) FROM Metric FACET type LIMIT MAX" + "query": "select rate(sum(confluent_kafka_server_request_bytes), 1 second) AS 'Request throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -68,7 +68,7 @@ } }, { - "title": "Retained Bytes Per Topic", + "title": "Response throughtput (bytes/second)", "layout": { "column": 1, "row": 5, @@ -88,15 +88,12 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT average(confluent_kafka_server_retained_bytes) FROM Metric TIMESERIES FACET topic LIMIT MAX" + "query": "select rate(sum(confluent_kafka_server_response_bytes), 1 second) AS 'Response throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES" - }, "yAxisLeft": { "zero": true }, @@ -106,7 +103,7 @@ } }, { - "title": "Records Sent Per Minute", + "title": "Active connections", "layout": { "column": 5, "row": 5, @@ -126,7 +123,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_sent_records),1 minute ) FROM Metric TIMESERIES FACET `topic` LIMIT MAX" + "query": "select max(confluent_kafka_server_active_connection_count) AS 'Active connections' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -138,7 +135,7 @@ } }, { - "title": "Active Connections", + "title": "Requests", "layout": { "column": 9, "row": 5, @@ -158,7 +155,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT max(confluent_kafka_server_active_connection_count) AS 'Active Connections' FROM Metric LIMIT MAX TIMESERIES" + "query": "select max(confluent_kafka_server_request_count) AS 'Requests' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -193,7 +190,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT latest(confluent_kafka_server_partition_count) AS partitions FROM Metric LIMIT MAX TIMESERIES" + "query": "select latest(confluent_kafka_server_partition_count) AS 'Partitions' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -205,7 +202,7 @@ } }, { - "title": "Recieved Bytes by Topic", + "title": "Successful Auth Attempts", "layout": { "column": 5, "row": 8, @@ -225,22 +222,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(confluent_kafka_server_received_bytes) FROM Metric TIMESERIES FACET `topic` LIMIT MAX" + "query": "select sum(confluent_kafka_server_successful_authentication_count) AS 'Successful Authentications' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES" - }, "yAxisLeft": { "zero": false } } }, { - "title": "Records Recieved Per Minute", + "title": "Rest produced request throughtput (bytes/second)", "layout": { "column": 9, "row": 8, @@ -260,7 +254,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_received_records),1 minute) FROM Metric TIMESERIES FACET `topic` LIMIT MAX" + "query": "select rate(sum(confluent_kafka_server_rest_produce_request_bytes), 1 second) AS 'Rest produced request throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -272,7 +266,7 @@ } }, { - "title": "Successful Auth Attempts", + "title": "Link destination response throughtput (bytes/second)", "layout": { "column": 1, "row": 11, @@ -292,22 +286,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_successful_authentication_count), 1 minute) AS 'Auths Per Minute' FROM Metric LIMIT MAX TIMESERIES" + "query": "select rate(sum(confluent_kafka_server_cluster_link_destination_response_bytes), 1 second) AS 'Cluster link destination response throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "COUNT" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Egres rate (bytes/minute)", + "title": "Link source response throughtput (bytes/second)", "layout": { "column": 5, "row": 11, @@ -327,7 +318,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_response_bytes), 1 minute) FROM Metric LIMIT MAX TIMESERIES" + "query": "select rate(sum(confluent_kafka_server_cluster_link_source_response_bytes), 1 second) AS 'Cluster link source response throughtput' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -342,7 +333,7 @@ } }, { - "title": "Sent Bytes by Topic", + "title": "Cluster links", "layout": { "column": 9, "row": 11, @@ -362,22 +353,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT sum(confluent_kafka_server_sent_bytes) FROM Metric TIMESERIES FACET `topic` LIMIT MAX " + "query": "select max(confluent_kafka_server_cluster_link_count) AS 'Cluster links' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Response Bytes (bytes/second) Per Kafka Protocol Request Type", + "title": "Cluster link tasks", "layout": { "column": 1, "row": 14, @@ -397,22 +385,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_response_bytes), 1 second) FROM Metric FACET type LIMIT MAX TIMESERIES" + "query": "select max(confluent_kafka_server_cluster_link_task_count) AS 'Cluster link tasks' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "BYTES_PER_SECOND" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Request Rate", + "title": "Link mirror topics error count", "layout": { "column": 5, "row": 14, @@ -432,22 +417,19 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_request_count), 1 minute) as 'Requests Per Minute' FROM Metric LIMIT MAX TIMESERIES" + "query": "select sum(confluent_kafka_server_cluster_link_mirror_transition_in_error) AS 'cluster link mirror topic errors' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { "ignoreTimeRange": false }, - "units": { - "unit": "REQUESTS_PER_SECOND" - }, "yAxisLeft": { "zero": true } } }, { - "title": "Ingress rate (bytes/minute)", + "title": "Link mirror topics count", "layout": { "column": 9, "row": 14, @@ -467,7 +449,7 @@ "nrqlQueries": [ { "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_request_bytes), 1 minute) as 'Ingress' FROM Metric LIMIT MAX TIMESERIES" + "query": "select sum(confluent_kafka_server_cluster_link_mirror_topic_count) AS 'Cluster link mirror topics' from Metric TIMESERIES LIMIT MAX" } ], "platformOptions": { @@ -480,79 +462,6 @@ "zero": true } } - }, - { - "title": "Request Bytes (bytes/second) Per Kafka Protocol Request Type", - "layout": { - "column": 1, - "row": 17, - "width": 6, - "height": 3 - }, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_request_bytes), 1 second) FROM Metric FACET type LIMIT MAX TIMESERIES" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "BYTES_PER_SECOND" - }, - "yAxisLeft": { - "zero": true - } - } - }, - { - "title": "Response Rate ", - "layout": { - "column": 7, - "row": 17, - "width": 6, - "height": 3 - }, - "visualization": { - "id": "viz.line" - }, - "rawConfiguration": { - "facet": { - "showOtherSeries": false - }, - "legend": { - "enabled": true - }, - "nrqlQueries": [ - { - "accountId": 0, - "query": "SELECT rate(sum(confluent_kafka_server_response_bytes), 1 minute) as 'Bytes Per Minute' FROM Metric LIMIT MAX TIMESERIES" - } - ], - "platformOptions": { - "ignoreTimeRange": false - }, - "units": { - "unit": "REQUESTS_PER_SECOND" - }, - "yAxisLeft": { - "zero": true - }, - "yAxisRight": { - "zero": true - } - } } ] } diff --git a/entity-types/infra-confluentcloudcluster/summary_metrics.yml b/entity-types/infra-confluentcloudcluster/summary_metrics.yml index ef8a08b54..609c3f05e 100644 --- a/entity-types/infra-confluentcloudcluster/summary_metrics.yml +++ b/entity-types/infra-confluentcloudcluster/summary_metrics.yml @@ -6,12 +6,4 @@ providerName: clusterLoadPercent: goldenMetric: clusterLoadPercent unit: PERCENTAGE - title: Cluster load percent -hotPartitionIngress: - goldenMetric: hotPartitionIngress - unit: COUNT - title: Hot Partition Ingress -hotPartitionEgress: - goldenMetric: hotPartitionEgress - unit: COUNT - title: Hot Partition Egress \ No newline at end of file + title: Cluster load percent \ No newline at end of file diff --git a/entity-types/infra-confluentcloudcluster/tests/Metric.json b/entity-types/infra-confluentcloudcluster/tests/Metric.json index 6b9f35587..7d45e84ff 100644 --- a/entity-types/infra-confluentcloudcluster/tests/Metric.json +++ b/entity-types/infra-confluentcloudcluster/tests/Metric.json @@ -1,60 +1,4 @@ [ - { - "confluent_kafka_server_consumer_lag_offsets": { - "type": "gauge", - "count": 352, - "sum": 0, - "min": 0, - "max": 0, - "latest": 0 - }, - "consumer_group_id": "agent_actions_vortex_vortex-3_23456", - "description": "The lag between a group member's committed offset and the partition's high watermark.", - "endTimestamp": 1719554400000, - "http.scheme": "https", - "instrumentation.provider": "opentelemetry", - "kafka.cluster_name": "us-jurassic-dust", - "kafka_id": "lkc-knjjjv", - "metricName": "confluent_kafka_server_consumer_lag_offsets", - "net.host.name": "api.telemetry.confluent.cloud", - "net.host.port": "443", - "newrelic.source": "api.metrics.otlp", - "nr.dataPointCount": 352, - "otel.library.name": "", - "otel.library.version": "", - "service.instance.id": "api.telemetry.confluent.cloud:443", - "service.name": "confluent", - "timestamp": 1719532800000, - "topic": "agent_actions" - }, - { - "confluent_kafka_server_received_bytes": { - "type": "gauge", - "count": 312, - "sum": 293255, - "min": 0, - "max": 74103, - "latest": 2741 - }, - "description": "The delta count of bytes of the customer's data received from the network. Each sample is the number of bytes received since the previous data sample. The count is sampled every 60 seconds.", - "endTimestamp": 1719554400000, - "http.scheme": "https", - "instrumentation.provider": "opentelemetry", - "kafka.cluster_name": "stg-rat-hole", - "kafka_id": "lkc-gx5zg1", - "metricName": "confluent_kafka_server_received_bytes", - "net.host.name": "api.telemetry.confluent.cloud", - "net.host.port": "443", - "newrelic.source": "api.metrics.otlp", - "nr.dataPointCount": 312, - "otel.library.name": "", - "otel.library.version": "", - "service.instance.id": "api.telemetry.confluent.cloud:443", - "service.name": "confluent", - "timestamp": 1719532800000, - "topic": "connect_account_data_2", - "unit": "bytes" - }, { "collector.name": "confluent-monitor", "collector.version": "release-11", diff --git a/entity-types/infra-confluentcloudkafkatopic/confluent_dashboard.json b/entity-types/infra-confluentcloudkafkatopic/confluent_dashboard.json new file mode 100644 index 000000000..0a23a1d26 --- /dev/null +++ b/entity-types/infra-confluentcloudkafkatopic/confluent_dashboard.json @@ -0,0 +1,338 @@ +{ + "name": "Confluent Cloud Topic", + "description": null, + "pages": [ + { + "name": "Confluent Cloud Topic", + "description": null, + "widgets": [ + { + "title": "Received throughput (bytes/seconds)", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Last Update", + "type": "date" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent.kafka.server.received_bytes), 1 second) AS 'Received throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sent throughput (bytes/seconds)", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent.kafka.server.sent_bytes), 1 second) AS 'Sent throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Received records throughput (records/seconds)", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent.kafka.server.received_records), 1 second) AS 'Received records throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Sent records throughput (records/seconds)", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent.kafka.server.sent_records), 1 second) AS 'Sent records throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Retained throughput (bytes/seconds)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent.kafka.server.retained_bytes), 1 second) AS 'Retained throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Consumer lag offsets", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent.kafka.server.consumer_lag_offsets) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Link mirror topics offset lag", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent.kafka.server.cluster_link_mirror_topic_offset_lag) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": false + } + } + }, + { + "title": "Link mirror topics throughput (bytes/seconds)", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent.kafka.server.cluster_link_mirror_topic_bytes), 1 second) AS 'Link mirror topics throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Hot partition ingress", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent.kafka.server.hot_partition_ingress) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Hot partition egress", + "layout": { + "column": 5, + "row": 11, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent.kafka.server.hot_partition_egress) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + } + ] + } + ] +} diff --git a/entity-types/infra-confluentcloudkafkatopic/definition.yml b/entity-types/infra-confluentcloudkafkatopic/definition.yml new file mode 100644 index 000000000..29e041506 --- /dev/null +++ b/entity-types/infra-confluentcloudkafkatopic/definition.yml @@ -0,0 +1,92 @@ +domain: INFRA +type: CONFLUENTCLOUDKAFKATOPIC +goldenTags: + - confluent.clusterName + - kafka_id + - topic + - confluent.kafka.server.metric.topic + - confluent.clusterId + - confluent.metricNamespace + - collector.name + - instrumentation.provider + - newrelic.source + - kafka.cluster_name + - confluent.resourceType + - collector.version + - confluent.region + - confluent.resourceGroup + - confluent.resourceId + - confluent.resourceType + - http.scheme + - instrumentation.provider + - net.host.name + - net.host.port + - service.instance.id + - service.name +configuration: + entityExpirationTime: DAILY + alertable: true + +dashboardTemplates: + opentelemetry: + template: opentelemetry_dashboard.json + confluent: + template: confluent_dashboard.json + +synthesis: + rules: + # telemetry from opentelemetry provider + - compositeIdentifier: + separator: ":" + attributes: + - kafka_id + - topic + name: kafka.cluster_name || ":" || topic + encodeIdentifierInGUID: true + tags: + kafka_id: + kafka.cluster_name: + instrumentation.provider: + newrelic.source: + conditions: + - attribute: eventType + value: Metric + - attribute: metricName + prefix: confluent_kafka_server_ + - attribute: instrumentation.provider + value: opentelemetry + - attribute: kafka_id + present: true + - attribute: topic + present: true + + # telemetry from confluent-cloud provider + - compositeIdentifier: + separator: ":" + attributes: + - confluent.clusterId + - confluent.kafka.server.metric.topic + name: confluent.clusterName || ":" || confluent.kafka.server.metric.topic + encodeIdentifierInGUID: true + tags: + confluent.clusterId: + confluent.clusterName: + collector.name: + confluent.metricNamespace: + instrumentation.provider: + newrelic.source: + conditions: + - attribute: eventType + value: Metric + - attribute: collector.name + value: confluent-monitor + - attribute: metricName + prefix: confluent.kafka.server. + - attribute: instrumentation.provider + value: confluent + - attribute: confluent.resourceType + value: kafka.server + - attribute: confluent.clusterId + present: true + - attribute: confluent.kafka.server.metric.topic + present: true \ No newline at end of file diff --git a/entity-types/infra-confluentcloudkafkatopic/golden_metrics.yml b/entity-types/infra-confluentcloudkafkatopic/golden_metrics.yml new file mode 100644 index 000000000..d886102d5 --- /dev/null +++ b/entity-types/infra-confluentcloudkafkatopic/golden_metrics.yml @@ -0,0 +1,28 @@ +hotPartitionIngress: + title: Hot Partition Ingress + unit: COUNT + queries: + opentelemetry: + select: filter(uniqueCount(topic), WHERE metricName='confluent_kafka_server_hot_partition_ingress') + from: Metric + where: kafka_id is not null + eventName: kafka_id + confluent: + select: filter(uniqueCount(confluent.kafka.server.metric.topic), WHERE metricName='confluent.kafka.server.hot_partition_ingress') + from: Metric + where: confluent.clusterId is not null + eventName: confluent.clusterId +hotPartitionEgress: + title: Hot Partition Egress + unit: COUNT + queries: + opentelemetry: + select: filter(uniqueCount(topic), WHERE metricName='confluent_kafka_server_hot_partition_egress') + from: Metric + where: kafka_id is not null + eventName: kafka_id + confluent: + select: filter(uniqueCount(confluent.kafka.server.metric.topic), WHERE metricName='confluent.kafka.server.hot_partition_egress') + from: Metric + where: confluent.clusterId is not null + eventName: confluent.clusterId diff --git a/entity-types/infra-confluentcloudkafkatopic/opentelemetry_dashboard.json b/entity-types/infra-confluentcloudkafkatopic/opentelemetry_dashboard.json new file mode 100644 index 000000000..424c2f77a --- /dev/null +++ b/entity-types/infra-confluentcloudkafkatopic/opentelemetry_dashboard.json @@ -0,0 +1,338 @@ +{ + "name": "Confluent Cloud Topic", + "description": null, + "pages": [ + { + "name": "Confluent Cloud Topic", + "description": null, + "widgets": [ + { + "title": "Received throughput (bytes/seconds)", + "layout": { + "column": 1, + "row": 1, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "dataFormatters": [ + { + "name": "Last Update", + "type": "date" + } + ], + "facet": { + "showOtherSeries": false + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent_kafka_server_received_bytes), 1 second) AS 'Received throughtput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Sent throughput (bytes/seconds)", + "layout": { + "column": 7, + "row": 1, + "width": 6, + "height": 4 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": true + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent_kafka_server_sent_bytes), 1 second) AS 'Sent throughtput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + } + } + }, + { + "title": "Received records throughput (records/seconds)", + "layout": { + "column": 1, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent_kafka_server_received_records), 1 second) AS 'Received records throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Sent records throughput (records/seconds)", + "layout": { + "column": 5, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent_kafka_server_sent_records), 1 second) AS 'Sent records throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Retained throughput (bytes/seconds)", + "layout": { + "column": 9, + "row": 5, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent_kafka_server_retained_bytes), 1 second) AS 'Retained throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + }, + { + "title": "Consumer lag offsets", + "layout": { + "column": 1, + "row": 8, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent_kafka_server_consumer_lag_offsets) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Link mirror topics offset lag", + "layout": { + "column": 5, + "row": 8, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent_kafka_server_cluster_link_mirror_topic_offset_lag) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": false + } + } + }, + { + "title": "Link mirror topics throughput (bytes/seconds)", + "layout": { + "column": 9, + "row": 8, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select rate(sum(confluent_kafka_server_cluster_link_mirror_topic_bytes), 1 second) AS 'Link mirror topics throughput' from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Hot partition ingress", + "layout": { + "column": 1, + "row": 11, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent_kafka_server_hot_partition_ingress) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + } + } + }, + { + "title": "Hot partition egress", + "layout": { + "column": 5, + "row": 11, + "width": 4, + "height": 3 + }, + "visualization": { + "id": "viz.line" + }, + "rawConfiguration": { + "facet": { + "showOtherSeries": false + }, + "legend": { + "enabled": true + }, + "nrqlQueries": [ + { + "accountId": 0, + "query": "select latest(confluent_kafka_server_hot_partition_egress) from Metric TIMESERIES LIMIT MAX" + } + ], + "platformOptions": { + "ignoreTimeRange": false + }, + "yAxisLeft": { + "zero": true + }, + "yAxisRight": { + "zero": true + } + } + } + ] + } + ] +} diff --git a/entity-types/infra-confluentcloudkafkatopic/summary_metrics.yml b/entity-types/infra-confluentcloudkafkatopic/summary_metrics.yml new file mode 100644 index 000000000..bfd04e865 --- /dev/null +++ b/entity-types/infra-confluentcloudkafkatopic/summary_metrics.yml @@ -0,0 +1,13 @@ +providerName: + tag: + key: instrumentation.provider + title: Provider + unit: STRING +hotPartitionIngress: + goldenMetric: hotPartitionIngress + unit: COUNT + title: Hot Partition Ingress +hotPartitionEgress: + goldenMetric: hotPartitionEgress + unit: COUNT + title: Hot Partition Egress \ No newline at end of file diff --git a/entity-types/infra-confluentcloudkafkatopic/tests/Metric.json b/entity-types/infra-confluentcloudkafkatopic/tests/Metric.json new file mode 100644 index 000000000..457b27246 --- /dev/null +++ b/entity-types/infra-confluentcloudkafkatopic/tests/Metric.json @@ -0,0 +1,58 @@ +[ + { + "confluent_kafka_server_consumer_lag_offsets": { + "type": "gauge", + "count": 352, + "sum": 0, + "min": 0, + "max": 0, + "latest": 0 + }, + "consumer_group_id": "agent_actions_vortex_vortex-3_23456", + "description": "The lag between a group member's committed offset and the partition's high watermark.", + "endTimestamp": 1719554400000, + "http.scheme": "https", + "instrumentation.provider": "opentelemetry", + "kafka.cluster_name": "us-jurassic-dust", + "kafka_id": "lkc-knjjjv", + "metricName": "confluent_kafka_server_consumer_lag_offsets", + "net.host.name": "api.telemetry.confluent.cloud", + "net.host.port": "443", + "newrelic.source": "api.metrics.otlp", + "nr.dataPointCount": 352, + "otel.library.name": "", + "otel.library.version": "", + "service.instance.id": "api.telemetry.confluent.cloud:443", + "service.name": "confluent", + "timestamp": 1719532800000, + "topic": "agent_actions" + }, + { + "confluent_kafka_server_received_bytes": { + "type": "gauge", + "count": 312, + "sum": 293255, + "min": 0, + "max": 74103, + "latest": 2741 + }, + "description": "The delta count of bytes of the customer's data received from the network. Each sample is the number of bytes received since the previous data sample. The count is sampled every 60 seconds.", + "endTimestamp": 1719554400000, + "http.scheme": "https", + "instrumentation.provider": "opentelemetry", + "kafka.cluster_name": "stg-rat-hole", + "kafka_id": "lkc-gx5zg1", + "metricName": "confluent_kafka_server_received_bytes", + "net.host.name": "api.telemetry.confluent.cloud", + "net.host.port": "443", + "newrelic.source": "api.metrics.otlp", + "nr.dataPointCount": 312, + "otel.library.name": "", + "otel.library.version": "", + "service.instance.id": "api.telemetry.confluent.cloud:443", + "service.name": "confluent", + "timestamp": 1719532800000, + "topic": "connect_account_data_2", + "unit": "bytes" + } +]