From ceed3174a44541ee0dfaddabe4db000ff522a69c Mon Sep 17 00:00:00 2001 From: aprasad Date: Fri, 10 Jul 2026 13:24:57 +0530 Subject: [PATCH 1/2] feat: Add OCIDATABASE entity definition (staging) Add OCI Database entity definition with: - Entity definition with synthesis rules (prefix ocid1.dbsystem, namespace oci_database) - Golden metrics - Summary metrics - Test data - Using .stg.yml/.stg.json suffix (staging only) Co-Authored-By: Claude Opus 4.8 --- .../infra-ocidatabase/definition.stg.yml | 33 +++++++++++++++++++ .../infra-ocidatabase/golden_metrics.stg.yml | 24 ++++++++++++++ .../infra-ocidatabase/summary_metrics.stg.yml | 21 ++++++++++++ .../infra-ocidatabase/tests/Metric.stg.json | 18 ++++++++++ 4 files changed, 96 insertions(+) create mode 100644 entity-types/infra-ocidatabase/definition.stg.yml create mode 100644 entity-types/infra-ocidatabase/golden_metrics.stg.yml create mode 100644 entity-types/infra-ocidatabase/summary_metrics.stg.yml create mode 100644 entity-types/infra-ocidatabase/tests/Metric.stg.json diff --git a/entity-types/infra-ocidatabase/definition.stg.yml b/entity-types/infra-ocidatabase/definition.stg.yml new file mode 100644 index 000000000..845716eed --- /dev/null +++ b/entity-types/infra-ocidatabase/definition.stg.yml @@ -0,0 +1,33 @@ +domain: INFRA +type: OCIDATABASE +goldenTags: + - oci.availabilityDomain + - oci.compartmentId + - oci.displayName + - oci.lifecycleState + - oci.subscriptionId + - oci.dbVersion + - oci.shape +configuration: + entityExpirationTime: DAILY + alertable: true +synthesis: + tags: + newrelic.cloudIntegrations.providerAccountName: + entityTagNames: [newrelic.cloudIntegrations.providerAccountName, providerAccountName] + multiValue: false + rules: + - ruleName: infra_ocidatabase_oci_resourceId + identifier: oci.resourceId + name: oci.resourceName + legacyFeatures: + overrideGuidType: true + encodeIdentifierInGUID: true + conditions: + - attribute: oci.resourceId + prefix: "ocid1.dbsystem" + - attribute: oci.namespace + value: "oci_database" +ownership: + primaryOwner: + teamName: "Cloud Monitoring Platform" diff --git a/entity-types/infra-ocidatabase/golden_metrics.stg.yml b/entity-types/infra-ocidatabase/golden_metrics.stg.yml new file mode 100644 index 000000000..09f2e6d6e --- /dev/null +++ b/entity-types/infra-ocidatabase/golden_metrics.stg.yml @@ -0,0 +1,24 @@ +cpuUtilization: + title: CPU Utilization + unit: PERCENTAGE + queries: + oci: + select: average(oci.database.cpu.utilization) +storageUtilization: + title: Storage Utilization + unit: PERCENTAGE + queries: + oci: + select: average(oci.database.storage.utilization) +executeCount: + title: Execute Count + unit: COUNT + queries: + oci: + select: sum(oci.database.execute.count) +transactionCount: + title: Transaction Count + unit: COUNT + queries: + oci: + select: sum(oci.database.transaction.count) diff --git a/entity-types/infra-ocidatabase/summary_metrics.stg.yml b/entity-types/infra-ocidatabase/summary_metrics.stg.yml new file mode 100644 index 000000000..f25171030 --- /dev/null +++ b/entity-types/infra-ocidatabase/summary_metrics.stg.yml @@ -0,0 +1,21 @@ +providerAccountName: + tag: + key: providerAccountName + title: OCI account + unit: STRING +cpuUtilization: + goldenMetric: cpuUtilization + unit: PERCENTAGE + title: CPU Utilization +storageUtilization: + goldenMetric: storageUtilization + unit: PERCENTAGE + title: Storage Utilization +executeCount: + goldenMetric: executeCount + unit: COUNT + title: Execute Count +transactionCount: + goldenMetric: transactionCount + unit: COUNT + title: Transaction Count diff --git a/entity-types/infra-ocidatabase/tests/Metric.stg.json b/entity-types/infra-ocidatabase/tests/Metric.stg.json new file mode 100644 index 000000000..411e14f39 --- /dev/null +++ b/entity-types/infra-ocidatabase/tests/Metric.stg.json @@ -0,0 +1,18 @@ +[ + { + "oci.availabilityDomain": "AD-1", + "oci.compartmentId": "ocid1.compartment.oc1..exampleuniqueID", + "oci.displayName": "Test Database", + "oci.lifecycleState": "AVAILABLE", + "oci.subscriptionId": "ocid1.subscription.oc1..exampleuniqueSubID", + "oci.namespace": "oci_database", + "oci.region": "us-ashburn-1", + "oci.resourceId": "ocid1.dbsystem.oc1.us-ashburn-1.exampleuniqueID", + "oci.resourceName": "test-database", + "collector.name": "oci-monitor", + "instrumentation.provider": "oci", + "metricName": "oci.database.cpu.utilization", + "newrelic.cloudIntegrations.integrationName": "OCI Monitor metrics", + "newrelic.cloudIntegrations.providerAccountName": "oci-dev-all-metrics" + } +] From 279578e224eadac495fb1a664fe58297a0b967c4 Mon Sep 17 00:00:00 2001 From: aprasad Date: Wed, 15 Jul 2026 20:23:48 +0530 Subject: [PATCH 2/2] feat: Add Exadata/Exascale VM-cluster synthesis rules for OCIDATABASE (staging) oci_database is a shared namespace; resourceId differs by deployment: - Base Database -> ocid1.dbsystem (existing rule, unchanged) - Exadata (Cloud) -> ocid1.cloudvmcluster (new) - Exadata (C@C) -> ocid1.vmcluster (new) - Exascale (GDD) -> ocid1.exadbvmcluster (new) Adds 3 additional synthesis rules (multi-subtype) so Exadata Database Service and Globally Distributed Exadata on Exascale databases synthesize into OCIDATABASE. Existing ocid1.dbsystem rule is untouched (no GUID impact). Test data extended with one sample per new prefix. Co-Authored-By: Claude Opus 4.8 --- .../infra-ocidatabase/definition.stg.yml | 37 ++++++++++++++ .../infra-ocidatabase/tests/Metric.stg.json | 48 +++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/entity-types/infra-ocidatabase/definition.stg.yml b/entity-types/infra-ocidatabase/definition.stg.yml index 845716eed..2b99856e4 100644 --- a/entity-types/infra-ocidatabase/definition.stg.yml +++ b/entity-types/infra-ocidatabase/definition.stg.yml @@ -17,6 +17,7 @@ synthesis: entityTagNames: [newrelic.cloudIntegrations.providerAccountName, providerAccountName] multiValue: false rules: + # Base Database Service (VM/BM DB systems) — resourceId is the DB System OCID - ruleName: infra_ocidatabase_oci_resourceId identifier: oci.resourceId name: oci.resourceName @@ -28,6 +29,42 @@ synthesis: prefix: "ocid1.dbsystem" - attribute: oci.namespace value: "oci_database" + # Exadata Database Service (dedicated / Cloud) — resourceId is the Cloud VM Cluster OCID + - ruleName: infra_ocidatabase_oci_resourceId_2 + identifier: oci.resourceId + name: oci.resourceName + legacyFeatures: + overrideGuidType: true + encodeIdentifierInGUID: true + conditions: + - attribute: oci.resourceId + prefix: "ocid1.cloudvmcluster" + - attribute: oci.namespace + value: "oci_database" + # Exadata Database Service on Cloud@Customer — resourceId is the VM Cluster OCID + - ruleName: infra_ocidatabase_oci_resourceId_3 + identifier: oci.resourceId + name: oci.resourceName + legacyFeatures: + overrideGuidType: true + encodeIdentifierInGUID: true + conditions: + - attribute: oci.resourceId + prefix: "ocid1.vmcluster" + - attribute: oci.namespace + value: "oci_database" + # Globally Distributed Exadata Database on Exascale Infrastructure — resourceId is the Exadata DB VM Cluster OCID + - ruleName: infra_ocidatabase_oci_resourceId_4 + identifier: oci.resourceId + name: oci.resourceName + legacyFeatures: + overrideGuidType: true + encodeIdentifierInGUID: true + conditions: + - attribute: oci.resourceId + prefix: "ocid1.exadbvmcluster" + - attribute: oci.namespace + value: "oci_database" ownership: primaryOwner: teamName: "Cloud Monitoring Platform" diff --git a/entity-types/infra-ocidatabase/tests/Metric.stg.json b/entity-types/infra-ocidatabase/tests/Metric.stg.json index 411e14f39..7f9f54dba 100644 --- a/entity-types/infra-ocidatabase/tests/Metric.stg.json +++ b/entity-types/infra-ocidatabase/tests/Metric.stg.json @@ -14,5 +14,53 @@ "metricName": "oci.database.cpu.utilization", "newrelic.cloudIntegrations.integrationName": "OCI Monitor metrics", "newrelic.cloudIntegrations.providerAccountName": "oci-dev-all-metrics" + }, + { + "oci.availabilityDomain": "AD-1", + "oci.compartmentId": "ocid1.compartment.oc1..exampleuniqueID", + "oci.displayName": "Test Exadata VM Cluster", + "oci.lifecycleState": "AVAILABLE", + "oci.subscriptionId": "ocid1.subscription.oc1..exampleuniqueSubID", + "oci.namespace": "oci_database", + "oci.region": "us-ashburn-1", + "oci.resourceId": "ocid1.cloudvmcluster.oc1.us-ashburn-1.exampleuniqueID", + "oci.resourceName": "test-exadata-vmcluster", + "collector.name": "oci-monitor", + "instrumentation.provider": "oci", + "metricName": "oci.database.cpu.utilization", + "newrelic.cloudIntegrations.integrationName": "OCI Monitor metrics", + "newrelic.cloudIntegrations.providerAccountName": "oci-dev-all-metrics" + }, + { + "oci.availabilityDomain": "AD-1", + "oci.compartmentId": "ocid1.compartment.oc1..exampleuniqueID", + "oci.displayName": "Test ExaCC VM Cluster", + "oci.lifecycleState": "AVAILABLE", + "oci.subscriptionId": "ocid1.subscription.oc1..exampleuniqueSubID", + "oci.namespace": "oci_database", + "oci.region": "us-ashburn-1", + "oci.resourceId": "ocid1.vmcluster.oc1.us-ashburn-1.exampleuniqueID", + "oci.resourceName": "test-exacc-vmcluster", + "collector.name": "oci-monitor", + "instrumentation.provider": "oci", + "metricName": "oci.database.cpu.utilization", + "newrelic.cloudIntegrations.integrationName": "OCI Monitor metrics", + "newrelic.cloudIntegrations.providerAccountName": "oci-dev-all-metrics" + }, + { + "oci.availabilityDomain": "AD-1", + "oci.compartmentId": "ocid1.compartment.oc1..exampleuniqueID", + "oci.displayName": "Test Exascale DB VM Cluster", + "oci.lifecycleState": "AVAILABLE", + "oci.subscriptionId": "ocid1.subscription.oc1..exampleuniqueSubID", + "oci.namespace": "oci_database", + "oci.region": "us-ashburn-1", + "oci.resourceId": "ocid1.exadbvmcluster.oc1.us-ashburn-1.exampleuniqueID", + "oci.resourceName": "test-exascale-vmcluster", + "collector.name": "oci-monitor", + "instrumentation.provider": "oci", + "metricName": "oci.database.cpu.utilization", + "newrelic.cloudIntegrations.integrationName": "OCI Monitor metrics", + "newrelic.cloudIntegrations.providerAccountName": "oci-dev-all-metrics" } ]