database_observability.postgres
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 toexperimental
.
Usage
database_observability.postgres "<LABEL>" {
data_source_name = <DATA_SOURCE_NAME>
forward_to = [<LOKI_RECEIVERS>]
}
Arguments
You can use the following arguments with database_observability.postgres
:
Name | Type | Description | Default | Required |
---|---|---|---|---|
data_source_name | secret | Data Source Name for the Postgres server to connect to. | yes | |
forward_to | list(LogsReceiver) | Where to forward log entries after processing. | yes | |
disable_collectors | list(string) | A list of collectors to disable from the default set. | no | |
enable_collectors | list(string) | A list of collectors to enable on top of the default set. | no |
The following collectors are configurable:
Name | Description | Enabled by default |
---|---|---|
query_details | Collect queries information. | no |
query_samples | Collect query samples and wait events information. | no |
schema_details | Collect schemas, tables, and columns from PostgreSQL system catalogs. | no |
Blocks
You can use the following blocks with database_observability.postgres
:
Block | Description | Required |
---|---|---|
query_details | Configure the queries collector. | no |
query_samples | Configure the query samples collector. | no |
schema_details | Configure the schema and table details collector. | no |
query_details
Name | Type | Description | Default | Required |
---|---|---|---|---|
collect_interval | duration | How frequently to collect information from database. | "1m" | no |
query_samples
Name | Type | Description | Default | Required |
---|---|---|---|---|
collect_interval | duration | How frequently to collect information from database. | "15s" | no |
disable_query_redaction | bool | Collect unredacted SQL query text including parameters. | false | no |
schema_details
This collector has no config options.
Example
database_observability.postgres "orders_db" {
data_source_name = "postgres://user:pass@localhost:5432/mydb"
forward_to = [loki.write.logs_service.receiver]
enable_collectors = ["query_details", "query_samples", "schema_details"]
}
prometheus.scrape "orders_db" {
targets = database_observability.postgres.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.postgres
can accept arguments from the following components:
- Components that export Loki
LogsReceiver
database_observability.postgres
has exports that can be consumed by the following components:
- Components that consume Targets
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.