Observability

Self-hosted

The self-hosted version of the application supports OpenTelemetry for observability to ship signals to an observability platform, such as Prometheus, Elastic, Datadog, and others.

The following signals are supported:

  • Logs
  • Metrics
  • Traces

You can enable and configure OpenTelemetry by setting environment variables:

Environment VariableValueDescription
OTEL_JAVAAGENT_ENABLEDtrueEnable OpenTelemetry
OTEL_EXPORTER_OTLP_ENDPOINThttps://ENDPOINT_URLThe endpoint URL for the OTLP exporter
OTEL_EXPORTER_OTLP_HEADERSAuthorization=Bearer BEARER_TOKENHeaders for the OTLP exporter, including authorization
OTEL_RESOURCE_ATTRIBUTESservice.name=datacontract-manager,deployment.environment=prodAttributes for the resource, such as service name, version, and deployment environment
OTEL_SERVICE_NAMEdatacontract-managerThe name of the service
OTEL_JAVAAGENT_LOGGINGapplicationThe Java agent logging mode.
OTEL_EXPORTER_OTLP_PROTOCOLhttp/protobufProtocol used by the OTLP exporter
OTEL_LOGS_EXPORTERotlpotlp to enable (default) or none to disable logs exporter
OTEL_METRICS_EXPORTERotlpotlp to enable (default) or none to disable metrics exporter
OTEL_TRACES_EXPORTERotlpotlp to enable (default) or none to disable traces exporter
OTEL_INSTRUMENTATION_MICROMETER_ENABLEDtrueEnable this to export application metrics.

You can use the official OpenTelemetry documentation to learn more about the configuration options: https://opentelemetry.io/docs/languages/sdk-configuration/otlp-exporter/

Custom Metrics

This document provides information about the custom metrics exposed by the Data Mesh Manager application. All custom metrics are prefixed with dmm..

Resource Metrics

Metric NameTypeDescriptionLabels
dmm.organizations.totalGaugeTotal number of organizationsNone
dmm.organizations.plan.totalGaugeTotal number of organizations by planplan (free, evaluation, enterprise, starter)
dmm.azure.subscriptions.totalGaugeTotal number of Azure subscriptionsNone
dmm.azure.organizations.totalGaugeTotal number of organizations with Azure subscriptionsNone
dmm.organizationapikeys.totalGaugeTotal number of API keysNone
dmm.users.totalGaugeTotal number of usersNone
dmm.teams.totalGaugeTotal number of teamsNone
dmm.sourcesystems.totalGaugeTotal number of source systemsNone
dmm.dataproducts.totalGaugeTotal number of data productsNone
dmm.datausageagreements.totalGaugeTotal number of data usage agreementsNone
dmm.datacontracts.totalGaugeTotal number of data contractsNone
dmm.definitions.totalGaugeTotal number of definitionsNone
dmm.policies.totalGaugeTotal number of policiesNone
dmm.policychecks.pendingGaugeNumber of pending policy checksNone

User-related Metrics

Metric NameTypeDescriptionLabels
dmm.user.createdCounterNumber of users createdNone
dmm.user.password-resetCounterNumber of successful password resetsNone
dmm.user.password-forgottenCounterNumber of "forgot password" requestsNone
dmm.user.resend-verification-linkCounterNumber of verification link resend requestsNone

Authentication Metrics

Metric NameTypeDescriptionLabels
dmm.loginCounterNumber of login attemptstype (password, api), userid (for password logins), apikey, organizationId, organization (for API logins)

Organization Metrics

Metric NameTypeDescriptionLabels
dmm.organizations.user-joinedCounterNumber of users that joined organizationsorganization (vanity URL)

Email Metrics

Metric NameTypeDescriptionLabels
dmm.mailsCounterNumber of emails sentstatus (success, error), type (email type: email-verification, password-reset, invitation, test, access-requested, access-approved, access-auto-approved, access-rejected, checks-failed, checks-keep-failing, checks-recovered, etc.)

Search and AI Metrics

Metric NameTypeDescriptionLabels
dmm.search.queryCounterNumber of search queriesuserintention (search intention type), results (number of results)
dmm.ai.embeddings.pendingGaugeNumber of resources pending embeddings generationNone
dmm.ai.embeddings.ingestedCounterNumber of embeddings ingestedresource (resource type), organizationId (organization ID)

Notes

  • Gauges represent current values and are updated periodically (typically every minute)
  • Counters represent accumulated totals and are incremented each time an event occurs
  • Labels allow metrics to be further segmented for more detailed analysis