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
(没有引号)使一切工作:)