Postgres错误在数据库上运行查询:无法检测到默认的用户名

您好,我正在尝试与普罗米修斯监测Postgres的SQL。 为此,我使用这个导出器https://github.com/wrouesnel/postgres_exporter

我开始在我docker-compose.yml这样的出口商:

  exporter-postgres: image: wrouesnel/postgres_exporter ports: - 9113:9113 environment: - DATA_SOURCE_NAME="postgresql://user:pass@localhost:5432/?sslmode=disable" 

当出口商试图访问这样的数据库错误时:

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

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

我不确定这个消息可能意味着什么。 另外我不确定是否问题来自我的docker撰写文件,或出口商。

抛出postgres-exporter.go错误的行是:

 // 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 } 

 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

我很感激任何帮助!

编辑:

这是到数据库的连接:

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

e.dsn是这样产生的:

 dsn := os.Getenv("DATA_SOURCE_NAME") 

连接不会引发任何错误

嗨,对于将来有类似问题的人:

问题是docker-compose.yml中的这一行

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

将其更改为

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

(没有引号)使一切工作:)