Skip to content

Commit 0af7736

Browse files
committed
fixed
Signed-off-by: vl4deee11 <[email protected]>
1 parent d4cb7b5 commit 0af7736

File tree

3 files changed

+22
-48
lines changed

3 files changed

+22
-48
lines changed

cmd/postgres_exporter/pg_breaking_changes.go renamed to cmd/postgres_exporter/pg_version.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,23 @@
1010
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1111
// See the License for the specific language governing permissions and
1212
// limitations under the License.
13-
1413
package main
1514

1615
import (
1716
"github.com/blang/semver"
1817
)
1918

20-
type BreakingChanges struct {
19+
type VersionQueries struct {
2120
Version string `yaml:"version"`
2221
ver semver.Version
23-
Columns map[string]string `yaml:"columns"`
22+
Query string `yaml:"query"`
2423
}
2524

26-
func (bc *BreakingChanges) parseVerTolerant() error {
27-
bcVer, err := semver.ParseTolerant(bc.Version)
25+
func (v *VersionQueries) parseVerTolerant() error {
26+
bcVer, err := semver.ParseTolerant(v.Version)
2827
if err != nil {
2928
return err
3029
}
31-
32-
bc.ver = bcVer
30+
v.ver = bcVer
3331
return nil
3432
}

cmd/postgres_exporter/postgres_exporter.go

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ type Mapping map[string]MappingOptions
119119

120120
// nolint: golint
121121
type UserQuery struct {
122-
Query string `yaml:"query"`
123-
Metrics []Mapping `yaml:"metrics"`
124-
BreakingChanges []BreakingChanges `yaml:"breakingChanges"`
125-
Master bool `yaml:"master"` // Querying only for master database
126-
CacheSeconds uint64 `yaml:"cache_seconds"` // Number of seconds to cache the namespace result metrics for.
127-
RunOnServer string `yaml:"runonserver"` // Querying to run on which server version
122+
Query string `yaml:"query"`
123+
Metrics []Mapping `yaml:"metrics"`
124+
VersionQueries []VersionQueries `yaml:"versionQueries"`
125+
Master bool `yaml:"master"` // Querying only for master database
126+
CacheSeconds uint64 `yaml:"cache_seconds"` // Number of seconds to cache the namespace result metrics for.
127+
RunOnServer string `yaml:"runonserver"` // Querying to run on which server version
128128
}
129129

130130
// nolint: golint
@@ -533,30 +533,18 @@ func parseUserQueries(content []byte, pgVersion semver.Version) (map[string]inte
533533
for metric, specs := range userQueries {
534534
level.Debug(logger).Log("msg", "New user metric namespace from YAML metric", "metric", metric, "cache_seconds", specs.CacheSeconds)
535535
newQueryOverrides[metric] = specs.Query
536-
columnT := make(map[string]string)
537-
for i := range specs.BreakingChanges {
538-
if err := specs.BreakingChanges[i].parseVerTolerant(); err != nil {
536+
if len(specs.VersionQueries) == 0 {
537+
continue
538+
}
539+
for i := range specs.VersionQueries {
540+
if err := specs.VersionQueries[i].parseVerTolerant(); err != nil {
539541
return nil, nil, err
540542
}
541-
542-
if pgVersion.GE(specs.BreakingChanges[i].ver) {
543-
for t := range specs.BreakingChanges[i].Columns {
544-
columnT[t] = specs.BreakingChanges[i].Columns[t]
545-
}
543+
if pgVersion.GE(specs.VersionQueries[i].ver) {
544+
newQueryOverrides[metric] = specs.VersionQueries[i].Query
546545
}
547546
}
548547

549-
// nolint: golint
550-
// 2 because old - new
551-
oldnew := make([]string, 0, 2*len(columnT))
552-
for t := range columnT {
553-
oldnew = append(oldnew, t, columnT[t])
554-
}
555-
556-
r := strings.NewReplacer(oldnew...)
557-
558-
newQueryOverrides[metric] = r.Replace(newQueryOverrides[metric])
559-
560548
metricMap, ok := metricMaps[metric]
561549
if !ok {
562550
// Namespace for metric not found - add it.

queries.yaml

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -159,24 +159,12 @@ pg_database:
159159
description: "Disk space used by the database"
160160

161161
pg_stat_statements:
162-
query: "SELECT t2.rolname, t3.datname, queryid, calls, total_time_T / 1000 as total_time_seconds, min_time_T / 1000 as min_time_seconds, max_time_T / 1000 as max_time_seconds, mean_time_T / 1000 as mean_time_seconds, stddev_time_T / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'"
163-
master: true
164-
breakingChanges:
162+
versionQueries:
165163
# should be in asc order by version
166-
- version: '9.4.0'
167-
columns:
168-
total_time_T: total_time
169-
min_time_T: min_time
170-
max_time_T: max_time
171-
mean_time_T: mean_time
172-
stddev_time_T: stddev_time
173164
- version: '13.0.0'
174-
columns:
175-
total_time_T: total_exec_time
176-
min_time_T: min_exec_time
177-
max_time_T: max_exec_time
178-
mean_time_T: mean_exec_time
179-
stddev_time_T: stddev_exec_time
165+
query: "SELECT t2.rolname, t3.datname, queryid, calls, total_exec_time / 1000 as total_time_seconds, min_exec_time / 1000 as min_time_seconds, max_exec_time / 1000 as max_time_seconds, mean_exec_time / 1000 as mean_time_seconds, stddev_exec_time / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'"
166+
query: "SELECT t2.rolname, t3.datname, queryid, calls, total_time_T / 1000 as total_time_seconds, min_time_T / 1000 as min_time_seconds, max_time_T / 1000 as max_time_seconds, mean_time_T / 1000 as mean_time_seconds, stddev_time_T / 1000 as stddev_time_seconds, rows, shared_blks_hit, shared_blks_read, shared_blks_dirtied, shared_blks_written, local_blks_hit, local_blks_read, local_blks_dirtied, local_blks_written, temp_blks_read, temp_blks_written, blk_read_time / 1000 as blk_read_time_seconds, blk_write_time / 1000 as blk_write_time_seconds FROM pg_stat_statements t1 JOIN pg_roles t2 ON (t1.userid=t2.oid) JOIN pg_database t3 ON (t1.dbid=t3.oid) WHERE t2.rolname != 'rdsadmin'"
167+
master: true
180168
metrics:
181169
- rolname:
182170
usage: "LABEL"

0 commit comments

Comments
 (0)