Postgres Error running query on database: Could not detect default username

Hi I am trying to monitor postgres SQL with Prometheus. For this purpose I am using this exporter https://github.com/wrouesnel/postgres_exporter

I am starting the exporter in my docker-compose.yml like this:

  • ECS will not launch instance, “unable to place a task because the resources could not be found.”
  • Avoid hard coding the mysql container ip in my apache container script
  • docker, waiting for SSH to be availabe
  • fabric command in local context is failing grep command
  • docker php, nginx is super slow with wordpress
  • Cron is unable to run my command, even though it works for me (inside docker container)
  •   exporter-postgres:
        image: wrouesnel/postgres_exporter
        ports:
          - 9113:9113
        environment:
          - DATA_SOURCE_NAME="postgresql://user:pass@localhost:5432/?sslmode=disable" 
    

    When the exporter is trying to access the database errors like this are thrown:

    Error running query on database: pg_stat_database pg: Could not detect default username. Please provide one explicitly. file="postgres-exporter.go" line=490
    

    and

    Error scanning runtime variable: pg_stat_database pg: Could not detect default username. Please provide one explicitly. file="postgres-exporter.go" line=464
    

    I am not really sure what this message could mean. Also I am not really sure if the issues originates in my docker-compose file, or the exporter.

    The lines which throw the error in the postgres-exporter.go are:

    // Use SHOW to get the value
    row := db.QueryRow(fmt.Sprintf("SHOW %s;", columnName))
    
    var val interface{}
    err := row.Scan(&val)
    if err != nil {
        log.Errorln("Error scanning runtime variable:", columnName, err)
        continue
    }
    

    and

    query, er := queryOverrides[namespace]
    if er == false {
        query = fmt.Sprintf("SELECT * FROM %s;", namespace)
    }
    
    // Don't fail on a bad scrape of one metric
    rows, err := db.Query(query)
    if err != nil {
        log.Println("Error running query on database: ", namespace, err)
        e.error.Set(1)
        return
    }
    

    https://github.com/wrouesnel/postgres_exporter/blob/master/postgres_exporter.go

    I am thankful for any help!

    Edit:

    Here is the connection to the database:

    db, err := sql.Open("postgres", e.dsn)
    

    Whereas e.dsn is generated like this:

    dsn := os.Getenv("DATA_SOURCE_NAME")
    

    The connection doesn’t throw any error

  • Jenkins inside docker loses configuration when container is restarted
  • Simple docker command does not work: x509: cannot validate certificate
  • Some questions from a newbie on Docker and Docker Elasticsearch image
  • docker registry v2 upload fails for some images
  • Testing multiple docker images with RSpec
  • PDOException SQLSTATE[HY000] [2002] No such file or directory. Whilst running laravel via isolated docker containers
  • One Solution collect form web for “Postgres Error running query on database: Could not detect default username”

    Hey for anyone having a similiar issue in the future:

    The problem was this line in the docker-compose.yml

     - DATA_SOURCE_NAME="postgresql://user:pass@localhost:5432/?sslmode=disable" 
    

    Changing it to

     - DATA_SOURCE_NAME=postgresql://user:pass@localhost:5432/?sslmode=disable
    

    (Without the quotes) made everything work 🙂

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.