Skip to content

Use DB connections provided via environment variables or use envs in configΒ #586

@MustDie95

Description

@MustDie95

Is your feature request related to a problem? Please describe.
Have tried to use multiple jobs with different databases, but unable to provide DSN in secure-way (from secrets)

Describe the solution you'd like
Use DB connections provided via environment variables or use envs in config

Describe alternatives you've considered
Use multiple instances of sql_exporter with different DSNs

Additional context

My test config:

env:
  PG_HOST:
    value: db-cluster
  PG_USER:
    from:
      kind: Secret
      name: db-cluster
      key: username
  PG_PASSWORD:
    from:
      kind: Secret
      name: db-cluster
      key: password
#
#  This works only for first job and target:
#  SQLEXPORTER_TARGET_DSN:
#    value: postgresql://${PG_USER}:${PG_PASSWORD}@${PG_HOST}:5432/test_db_1
#
  PG_DSN:
    value: "postgresql://${PG_USER}:${PG_PASSWORD}@${PG_HOST}:5432"

config:
  jobs:
    - job_name: test_job_1
      collectors: [test_col_1]
      enable_ping: true
      static_configs:
        - targets:
            test_db_1: "${PG_DSN}/test_db_1"
    - job_name: test_job_2
      collectors: [test_col_2]
      enable_ping: true
      static_configs:
        - targets:
            test_db_2: "${PG_DSN}/test_db_2"
  collectors:
    - collector_name: test_col_1
      metrics:
        - metric_name: m_1
...
    - collector_name: test_col_2
      metrics:
        - metric_name: m_2
...

Result is error like "invalid character '{' in DSN"

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions