Skip to content

Commit 5d5f588

Browse files
TenStMichaelMraka
authored andcommitted
RHINENG-21445: metrics updates
1 parent 0b97f7b commit 5d5f588

8 files changed

Lines changed: 107 additions & 117 deletions

dashboards/app-sre/grafana-dashboard-insights-patchman-engine-general.configmap.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5694,7 +5694,7 @@ data:
56945694
"datasource": {
56955695
"uid": "$datasource"
56965696
},
5697-
"expr": "avg(sum(patchman_engine_vmaas_sync_systems{last_upload=~\"last.*|all\"}) by (last_upload, pod)) by (last_upload) - avg(sum(label_replace(patchman_engine_vmaas_sync_cyndi_systems{type=~\"last.*|all\"}, \"last_upload\", \"$1\", \"type\", \"(.*)\")) by (last_upload, pod)) by (last_upload)",
5697+
"expr": "avg(sum(patchman_engine_vmaas_sync_systems{last_upload=~\"last.*|all\"}) by (last_upload, pod)) by (last_upload) - avg(sum(label_replace(patchman_engine_vmaas_sync_systems_count_by_type{type=~\"last.*|all\"}, \"last_upload\", \"$1\", \"type\", \"(.*)\")) by (last_upload, pod)) by (last_upload)",
56985698
"format": "time_series",
56995699
"hide": false,
57005700
"intervalFactor": 1,
@@ -6064,14 +6064,14 @@ data:
60646064
"datasource": {
60656065
"uid": "$datasource"
60666066
},
6067-
"expr": "avg(sum(patchman_engine_vmaas_sync_cyndi_tags_count) by (type, pod)) by (type)",
6067+
"expr": "avg(sum(patchman_engine_vmaas_sync_tags_count_by_type) by (type, pod)) by (type)",
60686068
"format": "time_series",
60696069
"intervalFactor": 1,
60706070
"legendFormat": "{{type}}",
60716071
"refId": "A"
60726072
}
60736073
],
6074-
"title": "Database items - Cyndi data",
6074+
"title": "Database items - System inventory data",
60756075
"type": "timeseries"
60766076
},
60776077
{

tasks/config.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ var (
1414
DeleteUnusedDataLimit = utils.PodConfig.GetInt("delete_unused_data_limit", 1000)
1515
// Remove only LIMIT systems in a run, useful to avoid complete wipe in case of error
1616
DeleteCulledSystemsLimit = utils.PodConfig.GetInt("delete_culled_systems_limit", 1000)
17-
// Toggle cyndi metrics reporting
18-
EnableCyndiMetrics = utils.PodConfig.GetBool("enable_cyndi_metrics", true)
19-
UseTraceLevel = log.IsLevelEnabled(log.TraceLevel)
17+
UseTraceLevel = log.IsLevelEnabled(log.TraceLevel)
2018
// Toggle system reevaluation base on changed repos
2119
EnabledRepoBasedReeval = utils.PodConfig.GetBool("repo_based_re_evaluation", true)
2220
// Send recalc messages for systems with modified repos

tasks/vmaas_sync/metrics.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func Metrics() *push.Pusher {
103103
registry := prometheus.NewRegistry()
104104
registry.MustRegister(vmaasCallCnt, storeAdvisoriesCnt, storePackagesCnt,
105105
systemsCnt, advisoriesCnt, systemAdvisoriesStats, syncDuration, messageSendDuration, packageCnt, packageNameCnt,
106-
databaseSizeBytesGaugeVec, databaseProcessesGaugeVec, cyndiSystemsCnt, cyndiTagsCnt,
106+
databaseSizeBytesGaugeVec, databaseProcessesGaugeVec, systemsCntByType, tagsCntByType,
107107
advisoriesCountMismatch)
108108

109109
// update advanced metrics
@@ -118,10 +118,7 @@ func update() {
118118
updatePackageMetrics()
119119
updateSystemAdvisoriesStats()
120120
updateDBMetrics()
121-
122-
if tasks.EnableCyndiMetrics {
123-
updateCyndiData()
124-
}
121+
updateSystemInventoryData()
125122
}
126123

127124
func updateSystemMetrics() {

tasks/vmaas_sync/metrics_cyndi.go

Lines changed: 0 additions & 79 deletions
This file was deleted.

tasks/vmaas_sync/metrics_cyndi_test.go

Lines changed: 0 additions & 24 deletions
This file was deleted.

tasks/vmaas_sync/metrics_db_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@ func TestTableSizes(t *testing.T) {
1717
for _, item := range tableSizes {
1818
uniqueTables[item.Key] = true
1919
}
20-
assert.Equal(t, 231, len(tableSizes))
21-
assert.Equal(t, 231, len(uniqueTables))
20+
assert.Equal(t, 230, len(tableSizes))
21+
assert.Equal(t, 230, len(uniqueTables))
2222
assert.True(t, uniqueTables["public.system_inventory"]) // check whether table names were loaded
2323
assert.True(t, uniqueTables["public.system_patch"]) // check whether table names were loaded
2424
assert.True(t, uniqueTables["public.package"])
2525
assert.True(t, uniqueTables["public.repo"])
26-
assert.True(t, uniqueTables["inventory.hosts_v1_0"])
2726
}
2827

2928
func TestDatabaseSize(t *testing.T) {
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package vmaas_sync
2+
3+
import (
4+
"app/base/database"
5+
"app/base/utils"
6+
"app/tasks"
7+
8+
"github.com/prometheus/client_golang/prometheus"
9+
)
10+
11+
const (
12+
allSystemCount = "allSystem"
13+
systemsSapSystemCount = "systemsSapSystem"
14+
systemsWithTagsCount = "systemsWithTag"
15+
)
16+
17+
var (
18+
systemsCntByType = prometheus.NewGaugeVec(prometheus.GaugeOpts{
19+
Help: "How many systems are stored and how up-to-date they are",
20+
Namespace: "patchman_engine",
21+
Subsystem: "vmaas_sync",
22+
Name: "systems_count_by_type",
23+
}, []string{"type"})
24+
25+
tagsCntByType = prometheus.NewGaugeVec(prometheus.GaugeOpts{
26+
Help: "How many inventory hosts and which tags are there",
27+
Namespace: "patchman_engine",
28+
Subsystem: "vmaas_sync",
29+
Name: "tags_count_by_type",
30+
}, []string{"type"})
31+
)
32+
33+
// nolint: lll
34+
type systemInventoryMetricColumns struct {
35+
AllSystems int64 `query:"count(*)" gorm:"column:all_systems"`
36+
SapSystems int64 `query:"count(*) filter (where sap_workload = 'true')" gorm:"column:sap_systems"`
37+
TaggedSystems int64 `query:"count(*) filter (where jsonb_array_length(tags) > 0)" gorm:"column:tagged_systems"`
38+
Updated1D int64 `query:"count(*) filter (where last_updated > (now() - interval '1 day'))" gorm:"column:updated1d"`
39+
Updated7D int64 `query:"count(*) filter (where last_updated > (now() - interval '7 day'))" gorm:"column:updated7d"`
40+
Updated30D int64 `query:"count(*) filter (where last_updated > (now() - interval '30 day'))" gorm:"column:updated30d"`
41+
}
42+
43+
var querySystemInventoryMetricColumns = database.MustGetSelect(&systemInventoryMetricColumns{})
44+
45+
func updateSystemInventoryData() {
46+
tagStats, systemStats, err := getSystemInventoryData()
47+
if err != nil {
48+
utils.LogError("err", err.Error(), "unable to update system inventory metrics")
49+
}
50+
51+
for label, count := range tagStats {
52+
tagsCntByType.WithLabelValues(label).Set(float64(count))
53+
}
54+
for label, count := range systemStats {
55+
systemsCntByType.WithLabelValues(label).Set(float64(count))
56+
}
57+
}
58+
59+
func getSystemInventoryData() (tagStats map[string]int64, systemStats map[string]int64, err error) {
60+
var row systemInventoryMetricColumns
61+
err = tasks.CancelableDB().Table("system_inventory").
62+
Select(querySystemInventoryMetricColumns).Take(&row).Error
63+
if err != nil {
64+
return tagStats, systemStats, err
65+
}
66+
tagStats = map[string]int64{
67+
allSystemCount: row.AllSystems,
68+
systemsSapSystemCount: row.SapSystems,
69+
systemsWithTagsCount: row.TaggedSystems,
70+
}
71+
systemStats = map[string]int64{
72+
lastUploadLast1D: row.Updated1D,
73+
lastUploadLast7D: row.Updated7D,
74+
lastUploadLast30D: row.Updated30D,
75+
lastUploadAll: row.AllSystems,
76+
}
77+
return tagStats, systemStats, nil
78+
}

tasks/vmaas_sync/metrics_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,27 @@ func TestSystemsCounts(t *testing.T) {
3737
assert.Nil(t, shiftSystemsLastUpload(-timeshift))
3838
}
3939

40+
func TestGetSystemInventoryData(t *testing.T) {
41+
utils.SkipWithoutDB(t)
42+
core.SetupTestEnvironment()
43+
44+
tagStats, systemStats, err := getSystemInventoryData()
45+
assert.Nil(t, err)
46+
assert.NotNil(t, tagStats)
47+
assert.NotNil(t, systemStats)
48+
49+
// Tag stats: all systems, SAP systems, systems with tags (from test data: 18 total, 15 SAP, 16 with tags)
50+
assert.Equal(t, int64(18), tagStats[allSystemCount])
51+
assert.Equal(t, int64(15), tagStats[systemsSapSystemCount])
52+
assert.Equal(t, int64(16), tagStats[systemsWithTagsCount])
53+
54+
// System stats: updated in last 1D/7D/30D and total
55+
assert.GreaterOrEqual(t, systemStats[lastUploadLast1D], int64(0))
56+
assert.GreaterOrEqual(t, systemStats[lastUploadLast7D], int64(0))
57+
assert.GreaterOrEqual(t, systemStats[lastUploadLast30D], int64(0))
58+
assert.Equal(t, int64(18), systemStats[lastUploadAll])
59+
}
60+
4061
func TestAdvisoryCounts(t *testing.T) {
4162
utils.SkipWithoutDB(t)
4263
core.SetupTestEnvironment()

0 commit comments

Comments
 (0)