Menu
Experimental Open source

database_observability.mysql

EXPERIMENTAL: This is an experimental component. Experimental components are subject to frequent breaking changes, and may be removed with no equivalent replacement. To enable and use an experimental component, you must set the stability.level flag to experimental.

Usage

alloy
database_observability.mysql "<LABEL>" {
  data_source_name = <DATA_SOURCE_NAME>
  forward_to       = [<LOKI_RECEIVERS>]
}

Arguments

You can use the following arguments with database_observability.mysql:

NameTypeDescriptionDefaultRequired
data_source_namesecretData Source Name for the MySQL server to connect to.yes
forward_tolist(LogsReceiver)Where to forward log entries after processing.yes
disable_collectorslist(string)A list of collectors to disable from the default set.no
enable_collectorslist(string)A list of collectors to enable on top of the default set.no
allow_update_performance_schema_settingsbooleanWhether to allow updates to performance_schema settings in any collector.falseno

The following collectors are configurable:

NameDescriptionEnabled by default
query_detailsCollect queries information.yes
schema_detailsCollect schemas and tables from information_schema.yes
query_samplesCollect query samples.yes
setup_consumersCollect enabled performance_schema.setup_consumers.yes
locksCollect queries that are waiting/blocking other queries.no
explain_plansCollect explain plans information.no

Blocks

You can use the following blocks with database_observability.mysql:

BlockDescriptionRequired
cloud_providerProvide Cloud Provider information.no
cloud_provider > awsProvide AWS database host information.no
setup_consumersConfigure the setup_consumers collector.no
query_detailsConfigure the queries collector.no
schema_detailsConfigure the schema and table details collector.no
explain_plansConfigure the explain plans collector.no
locksConfigure the locks collector.no
query_samplesConfigure the query samples collector.no

The > symbol indicates deeper levels of nesting. For example, cloud_provider > aws refers to a aws block defined inside an cloud_provider block.

cloud_provider

The cloud_provider block has no attributes. It contains zero or more aws blocks. You use the cloud_provider block to provide information related to the cloud provider that hosts the database under observation. This information is appended as labels to the collected metrics. The labels make it easier for you to filter and group your metrics.

aws

The aws block supplies the ARN identifier for the database being monitored.

NameTypeDescriptionDefaultRequired
arnstringThe ARN associated with the database under observation.yes

setup_consumers

NameTypeDescriptionDefaultRequired
collect_intervaldurationHow frequently to collect performance_schema.setup_consumers information from the database."1h"no

query_details

NameTypeDescriptionDefaultRequired
collect_intervaldurationHow frequently to collect information from database."1m"no

schema_details

NameTypeDescriptionDefaultRequired
collect_intervaldurationHow frequently to collect information from database."1m"no
cache_enabledbooleanWhether to enable caching of table definitions.trueno
cache_sizeintegerCache size.256no
cache_ttldurationCache TTL."10m"no

explain_plans

NameTypeDescriptionDefaultRequired
collect_intervaldurationHow frequently to collect information from database."1m"no
explain_plan_exclude_schemaslist(string)List of schemas to exclude from explain plan collection.no
initial_lookbackdurationHow far back to look for explain plan queries on the first collection interval."24h"no
per_collect_ratiofloatRatio of explain plan queries to collect per collect interval.1.0no

locks

NameTypeDescriptionDefaultRequired
collect_intervaldurationHow frequently to collect information from database."1m"no
thresholddurationThreshold for locks to be considered slow. Locks that exceed this duration are logged."1s"no

query_samples

NameTypeDescriptionDefaultRequired
collect_intervaldurationHow frequently to collect information from database."1m"no
disable_query_redactionboolCollect unredacted SQL query text including parameters.falseno
auto_enable_setup_consumersbooleanWhether to enable some specific performance_schema.setup_consumers settings.falseno
setup_consumers_check_intervaldurationHow frequently to check if setup_consumers are correctly enabled."1h"no

Example

alloy
database_observability.mysql "orders_db" {
  data_source_name = "user:pass@tcp(mysql:3306)/"
  forward_to       = [loki.write.logs_service.receiver]
  cloud_provider   = {
    aws = {
      arn = "your-db-arn"
    }
  }
}

prometheus.scrape "orders_db" {
  targets = database_observability.mysql.orders_db.targets
  honor_labels = true // required to keep job and instance labels
  forward_to = [prometheus.remote_write.metrics_service.receiver]
}

prometheus.remote_write "metrics_service" {
  endpoint {
    url = sys.env("<GRAFANA_CLOUD_HOSTED_METRICS_URL>")
    basic_auth {
      username = sys.env("<GRAFANA_CLOUD_HOSTED_METRICS_ID>")
      password = sys.env("<GRAFANA_CLOUD_RW_API_KEY>")
    }
  }
}

loki.write "logs_service" {
  endpoint {
    url = sys.env("<GRAFANA_CLOUD_HOSTED_LOGS_URL>")
    basic_auth {
      username = sys.env("<GRAFANA_CLOUD_HOSTED_LOGS_ID>")
      password = sys.env("<GRAFANA_CLOUD_RW_API_KEY>")
    }
  }
}

Replace the following:

  • <GRAFANA_CLOUD_HOSTED_METRICS_URL>: The URL for your Grafana Cloud hosted metrics.
  • <GRAFANA_CLOUD_HOSTED_METRICS_ID>: The user ID for your Grafana Cloud hosted metrics.
  • <GRAFANA_CLOUD_RW_API_KEY>: Your Grafana Cloud API key.
  • <GRAFANA_CLOUD_HOSTED_LOGS_URL>: The URL for your Grafana Cloud hosted logs.
  • <GRAFANA_CLOUD_HOSTED_LOGS_ID>: The user ID for your Grafana Cloud hosted logs.

Compatible components

database_observability.mysql can accept arguments from the following components:

database_observability.mysql has exports that can be consumed by the following components:

Note

Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.