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:

  • Docker. Show stopped containers
  • ERROR - Docker-compose/docker Windows
  • Intranet name resolution in docker container
  • Docker for windows10 run django fail: Can't open file 'manage.py': [Errno 2] No such file or directory
  • Code from different git branches in one Python test
  • unable to login in private docker registry
  •   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

  • docker bad mount driver
  • Dockerize wordpress
  • Windows Containers, Console host WCF
  • udp client server program communication to ibm bluemix containers
  • Install Firefox on Tinycore (Docker)
  • Service Fabric Cluster with Docker Containers with windowsservercore and iis server
  • 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.