diff --git a/.gitignore b/.gitignore index 516397d59..890453648 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ shared-assets/bastion-py-script/.oci/ shared-assets/bastion-py-script/temp/ temp/ app-dev/app-integration-and-automation/oracle-integration-cloud/01-oic-connectivity-agent/README_tmp.html +.DS_Store diff --git a/manageability-and-operations/observability-and-manageability/database-management/README.md b/manageability-and-operations/observability-and-manageability/database-management/README.md index 86909a6f7..14fd80bb5 100644 --- a/manageability-and-operations/observability-and-manageability/database-management/README.md +++ b/manageability-and-operations/observability-and-manageability/database-management/README.md @@ -14,6 +14,7 @@ Reviewed: 27.09.2024 - [Database Management Demo](https://www.youtube.com/watch?v=3k9jrkOlBkc) - [OCI Database Management PDB Support](https://learnoci.cloud/oci-database-management-new-features-announced-f9991cba2cc2) - [How to enable OCI Observability for OCI native database deploy](https://medium.com/@erikasciunzi/enable-observability-for-oci-native-database-deploy-235484953e46) +- [Creating Metric Extensions for Oracle Database using OCI Database Management Service](./custom-metrics/README.md) # Useful Links diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/README.md b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/README.md new file mode 100644 index 000000000..876bdc0a0 --- /dev/null +++ b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/README.md @@ -0,0 +1,30 @@ +# Creating Metric Extensions for Oracle Database using OCI Database Management Service + +Metric extensions are useful when the metric you are looking for does not exist out of the box. In such cases, you can create your own custom metric and use it for monitoring your database. + +This guide explains how to create metric extensions step by step. + +## What Are Metric Extensions? + +**Metric extensions** are custom, user-defined, SQL-based metrics collected by OCI Database Management. They supplement standard metrics, providing additional insights (for example, error counts, job statuses, or resource KPIs not tracked by default). + +## Note +[Metric extensions](https://docs.oracle.com/en-us/iaas/database-management/doc/work-metric-extensions.html#DBMGM-GUID-6D5E80AA-ABA5-4FBA-A63F-106CEE39C3F7) are currently available **only for External Databases**. Therefore, if your database is an OCI database (as in this case, Oracle Base Database), it must be registered in Database Management as an External Database. + +## Prerequisites + +- OCI tenancy with Database Management enabled. +- Target Oracle Database registered in Database Management as an [External Database](https://docs.oracle.com/en-us/iaas/database-management/doc/external-database-related-prerequisite-tasks.html#DBMGM-GUID-84B74F18-F672-4DDC-8505-ACF249293D64). +- Required [policies](https://docs.oracle.com/en-us/iaas/database-management/doc/perform-general-oracle-cloud-infrastructure-prerequisite-tasks.html#DBMGM-GUID-DCC3067D-5123-468E-A938-D310CC685674) in place. + +## Step-by-Step Guide + +See [Implementation Steps](./create_metric_extension.md) for details. + +## License + +Copyright (c) 2025 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](https://github.com/oracle-devrel/technology-engineering/blob/main/LICENSE) for more details. \ No newline at end of file diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/create_metric_extension.md b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/create_metric_extension.md new file mode 100644 index 000000000..18edcba90 --- /dev/null +++ b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/create_metric_extension.md @@ -0,0 +1,212 @@ +# Implementation Steps + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StepsDescriptionNotes
1 +Navigate to Database Management
+
    +
  • Go to OCI Console > Observability & Management > Database Management.
  • +
  • Click on Administration > Metric Extensions.
  • +
  • Choose the target database for which you want to create the metric extension.
  • +
+ +
+Ensure that Database Management is already enabled for your target database before proceeding with metric extension creation. +
2 +Create a Metric Extension at the CDB Level
+
    +
  • Click on Create Metric Extension.
  • +
  • Fill in the metric extension details as shown below:
  • +
+ +Example: Current Number of Active Sessions
+ +
SELECT COUNT(*) AS active_sessions 
+FROM V$SESSION 
+WHERE STATUS = 'ACTIVE';
+

Use this when the target level is CDB.

+ +

+
+
+The SQL must return only one value to represent the metric point on the graph. It must be a numeric value.

+The unit field must be a valid unit: percent, count, seconds, MB, etc. +
3 +Test the Metric Extension
+
    +
  • Enter the details as shown in the example above and click on Create and test.
  • +
  • In the next window, select the database to test with and click on Test as shown below.
  • +
+
+

It may take a few seconds to a couple of minutes to complete the test and return the results. Once you see “Success,” the results will be displayed.

+
+

Note the Test ID here.

+
+The metric extension will fail if:
+- The SQL is invalid.
+- Required privileges are missing.
+- Output columns or data types are incorrect.
+
+It is recommended to log in to the database and test your SQL query beforehand to ensure it is valid and returns the expected data. +
4 +Verify Metric in Monitoring Service
+
    +
  • Leave the previous page as is, and open a new tab (or duplicate the tab) to follow these steps:
  • +
  • From the main menu, go to OCI Console > Observability & Management > Monitoring > Metrics Explorer.
  • +
  • Select the following options as shown. Note that the metric namespace will end with appmgmt_test. Click on Update Chart.
  • +
+
+
+

You will be able to view the metric in the chart above.

+
+During the testing phase, use the namespace ending with appmgmt_test to verify that the metric is working as expected before publishing. +
5 +Publish the Metric
+
    +
  • Once you have confirmed the metric is working, return to the metric extension page and click on Publish. Then confirm the publish operation.
  • +
+
+

The metric extension will now be listed on the main page of Metric Extensions as shown:

+
+
+Publishing makes the metric extension available for enabling on target databases in production. +
6 +Enable the Metric Extension
+
    +
  • Click on the three-dots menu and select Enable > Select resources.
  • +
  • Select the database from the list and click Enable on selected resources.
  • +
  • Confirm the enable action when prompted.
  • +
+

+

+
+

This may take some time to execute. After you see success, check back after at least 5–6 minutes to see at least two metric points on the Metrics Explorer graph, as shown below.

+
+Allow sufficient time for metric collection to start. Initial data points may take 5–6 minutes to appear in the monitoring system. +
7 +View Metrics in Monitoring Service
+
    +
  • After publishing the metric extension, make sure to select the namespace appmgmt (not the test one used earlier).
  • +
+
+

Click on Update Chart and review the graph:

+
+

Click on Show Data Table to see the metric values clearly:

+
+
+After publishing, use the appmgmt namespace (not the test namespace) to view production metrics data. +
8 +Create a Metric Extension at the PDB Level — % Storage Used in SYSTEM Tablespace in PDB
+
+
SELECT
+    ROUND((1 - (b.BYTES_FREE / a.BYTES_ALLOC)) * 100, 2) AS pct_used
+FROM
+    (SELECT SUM(BYTES) AS BYTES_ALLOC
+     FROM DBA_DATA_FILES
+     WHERE TABLESPACE_NAME = 'SYSTEM') a,
+    (SELECT SUM(BYTES) AS BYTES_FREE
+     FROM DBA_FREE_SPACE
+     WHERE TABLESPACE_NAME = 'SYSTEM') b;
+

Use this when the target level is PDB.

+
    +
  • Follow the same steps as for the CDB-level query above. Note the following changes:
  • +
+
+

Select Pluggable DB for PDB-level queries. Test, publish, and enable as before.

+
+
+For PDB-level metrics, ensure you select "Pluggable DB" as the target level and that the SQL query is appropriate for the PDB context. +
9 +View PDB Metrics
+
    +
  • Go to Monitoring > Metrics Explorer and select the appropriate options.
  • +
+
+

Click Update to view the captured metrics.

+
+
+PDB-level metrics will appear under the same monitoring namespace but will be specific to the pluggable database context. +
+ +## Important Notes + +- The SQL must return only one value to represent the metric point on the graph. It must be a numeric value. +- The unit field must be a valid unit: percent, count, seconds, MB, etc. +- The metric extension will fail if: + - The SQL is invalid. + - Required privileges are missing. + - Output columns or types are incorrect. + +Here is an example of an error that would occur with an incorrect SQL query during the test phase:
+
+It is recommended to log in to the database and test the SQL first to ensure the queries are valid and return the expected data. + +--- + +# License + +Copyright (c) 2025 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](/LICENSE) for more details. \ No newline at end of file diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME1.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME1.png new file mode 100644 index 000000000..c2952dfdd Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME1.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME10.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME10.png new file mode 100644 index 000000000..22262e37a Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME10.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME11.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME11.png new file mode 100644 index 000000000..f596a2a7b Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME11.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME12.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME12.png new file mode 100644 index 000000000..b9af80d4f Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME12.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME13.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME13.png new file mode 100644 index 000000000..0e824b64c Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME13.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME14.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME14.png new file mode 100644 index 000000000..5a97037da Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME14.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME15.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME15.png new file mode 100644 index 000000000..6b2b5883a Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME15.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME16.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME16.png new file mode 100644 index 000000000..4f4d2ca33 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME16.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME17.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME17.png new file mode 100644 index 000000000..43e5ed6eb Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME17.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME18.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME18.png new file mode 100644 index 000000000..625db5347 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME18.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME19.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME19.png new file mode 100644 index 000000000..3badeb264 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME19.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME2.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME2.png new file mode 100644 index 000000000..206cbaaad Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME2.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME20.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME20.png new file mode 100644 index 000000000..005c490fd Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME20.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME3.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME3.png new file mode 100644 index 000000000..1755bc62d Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME3.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME4.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME4.png new file mode 100644 index 000000000..651ecd994 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME4.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME5.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME5.png new file mode 100644 index 000000000..6a9a3bd94 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME5.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME6.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME6.png new file mode 100644 index 000000000..c6f54f98b Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME6.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME7.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME7.png new file mode 100644 index 000000000..cdb5686d4 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME7.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME8.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME8.png new file mode 100644 index 000000000..80b9492f7 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME8.png differ diff --git a/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME9.png b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME9.png new file mode 100644 index 000000000..411188ab9 Binary files /dev/null and b/manageability-and-operations/observability-and-manageability/database-management/custom-metrics/images/ME9.png differ