# Publishes metrics to a postgresql database [[outputs.postgresql]] ## Specify connection address via the standard libpq connection string: ## host=... user=... password=... sslmode=... dbname=... ## Or a URL: ## postgres://[user[:password]]@localhost[/dbname]?sslmode=[disable|verify-ca|verify-full] ## See https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING ## ## All connection parameters are optional. Environment vars are also supported. ## e.g. PGPASSWORD, PGHOST, PGUSER, PGDATABASE ## All supported vars can be found here: ## https://www.postgresql.org/docs/current/libpq-envars.html ## ## Non-standard parameters: ## pool_max_conns (default: 1) - Maximum size of connection pool for parallel (per-batch per-table) inserts. ## pool_min_conns (default: 0) - Minimum size of connection pool. ## pool_max_conn_lifetime (default: 0s) - Maximum connection age before closing. ## pool_max_conn_idle_time (default: 0s) - Maximum idle time of a connection before closing. ## pool_health_check_period (default: 0s) - Duration between health checks on idle connections. # connection = "" ## Postgres schema to use. # schema = "public" ## Store tags as foreign keys in the metrics table. Default is false. # tags_as_foreign_keys = false ## Suffix to append to table name (measurement name) for the foreign tag table. # tag_table_suffix = "_tag" ## Deny inserting metrics if the foreign tag can't be inserted. # foreign_tag_constraint = false ## Store all tags as a JSONB object in a single 'tags' column. # tags_as_jsonb = false ## Store all fields as a JSONB object in a single 'fields' column. # fields_as_jsonb = false ## Name of the timestamp column ## NOTE: Some tools (e.g. Grafana) require the default name so be careful! # timestamp_column_name = "time" ## Type of the timestamp column ## Currently, "timestamp without time zone" and "timestamp with time zone" ## are supported # timestamp_column_type = "timestamp without time zone" ## Templated statements to execute when creating a new table. # create_templates = [ # '''CREATE TABLE {{ .table }} ({{ .columns }})''', # ] ## Templated statements to execute when adding columns to a table. ## Set to an empty list to disable. Points containing tags for which there is ## no column will be skipped. Points containing fields for which there is no ## column will have the field omitted. # add_column_templates = [ # '''ALTER TABLE {{ .table }} ADD COLUMN IF NOT EXISTS {{ .columns|join ", ADD COLUMN IF NOT EXISTS " }}''', # ] ## Templated statements to execute when creating a new tag table. # tag_table_create_templates = [ # '''CREATE TABLE {{ .table }} ({{ .columns }}, PRIMARY KEY (tag_id))''', # ] ## Templated statements to execute when adding columns to a tag table. ## Set to an empty list to disable. Points containing tags for which there is ## no column will be skipped. # tag_table_add_column_templates = [ # '''ALTER TABLE {{ .table }} ADD COLUMN IF NOT EXISTS {{ .columns|join ", ADD COLUMN IF NOT EXISTS " }}''', # ] ## The postgres data type to use for storing unsigned 64-bit integer values ## (Postgres does not have a native unsigned 64-bit integer type). ## The value can be one of: ## numeric - Uses the PostgreSQL "numeric" data type. ## uint8 - Requires pguint extension (https://github.com/petere/pguint) # uint64_type = "numeric" ## When using pool_max_conns > 1, and a temporary error occurs, the query is ## retried with an incremental backoff. This controls the maximum duration. # retry_max_backoff = "15s" ## Approximate number of tag IDs to store in in-memory cache (when using ## tags_as_foreign_keys). This is an optimization to skip inserting known ## tag IDs. Each entry consumes approximately 34 bytes of memory. # tag_cache_size = 100000 ## Cut column names at the given length to not exceed PostgreSQL's ## 'identifier length' limit (default: no limit) ## (see https://www.postgresql.org/docs/current/limits.html) ## Be careful to not create duplicate column names! # column_name_length_limit = 0 ## Enable & set the log level for the Postgres driver. # log_level = "warn" # trace, debug, info, warn, error, none