apiVersion: coredb.io/v1alpha1
kind: CoreDB
metadata:
name: sample-message-queue
spec:
image: "quay.io/tembo/standard-cnpg:15-389a437"
stop: false
stack:
name: MessageQueue
postgres_config:
- name: shared_preload_libraries
value: pg_stat_statements,pg_partman_bgw
- name: pg_partman_bgw.dbname
value: postgres
- name: pg_partman_bgw.interval
value: "60"
- name: pg_partman_bgw.role
value: postgres
- name: random_page_cost
value: "1.1"
- name: autovacuum_naptime
value: "20s"
- name: autovacuum_vacuum_cost_limit
value: "10000"
- name: autovacuum_vacuum_scale_factor
value: "0.05"
- name: autovacuum_vacuum_insert_scale_factor
value: "0.05"
- name: autovacuum_analyze_scale_factor
value: "0.05"
- name: track_io_timing
value: "on"
- name: checkpoint_timeout
value: "10min"
- name: pg_stat_statements.track
value: all
trunk_installs:
- name: pgmq
version: 1.1.0
- name: pg_partman
version: 4.7.3
extensions:
- name: pgmq
locations:
- database: postgres
enabled: true
version: 0.32.1
- name: pg_partman
locations:
- database: postgres
enabled: true
version: 4.7.3
metrics:
enabled: true
image: quay.io/prometheuscommunity/postgres-exporter:v0.12.0
queries:
pgmq:
query: select queue_name, queue_length, oldest_msg_age_sec, newest_msg_age_sec, total_messages from pgmq.metrics_all()
master: true
metrics:
- queue_name:
description: Name of the queue
usage: LABEL
- queue_length:
description: Number of messages in the queue
usage: GAUGE
- oldest_msg_age_sec:
description: Age of the oldest message in the queue, in seconds.
usage: GAUGE
- newest_msg_age_sec:
description: Age of the newest message in the queue, in seconds.
usage: GAUGE
- total_messages:
description: Total number of messages that have passed into the queue.
usage: GAUGE
target_databases:
- "postgres"
runtime_config:
- name: shared_buffers
value: "256MB"
- name: max_connections
value: "431"
- name: work_mem
value: "5MB"
- name: bgwriter_delay
value: "200ms"
- name: effective_cache_size
value: "267MB"
- name: maintenance_work_mem
value: "204MB"
- name: max_wal_size
value: "2GB"
appServices:
- name: postgrest
image: postgrest/postgrest:latest
routing:
- port: 3000
ingressPath: /pgmq/v1
middlewares:
- map-pgmq
- strip-prefix
- headers
middlewares:
- customRequestHeaders:
name: headers
config:
Authorization: ""
Content-Profile: pgmq
Accept-Profile: pgmq
- stripPrefix:
name: strip-prefix
config:
- /rest/v1
- replacePathRegex:
name: map-pgmq
config:
regex: \/pgmq\/v1\/?
replacement: /rpc/
env:
- name: PGRST_DB_URI
valueFromPlatform: ReadWriteConnection
- name: PGRST_DB_SCHEMA
value: "public, pgmq"
- name: PGRST_DB_ANON_ROLE
value: postgres
- name: PGRST_LOG_LEVEL
value: info