Skip to content

Commit

Permalink
PMM-11999 Expose check family (#2007)
Browse files Browse the repository at this point in the history
* PMM-11999 Expose check family

* PMM-11999 Fix tests

* PMM-11999 go mod tidy

* Update managed/services/checks/checks.go

Co-authored-by: Alex Tymchuk <[email protected]>

* Update managed/services/checks/checks.go

* PMM-11999 Update

* PMM-11999 Fix linter warning

* PMM-11999 Update saas dependency

* PMM-11999 Update saas dependency

---------

Co-authored-by: Alex Tymchuk <[email protected]>
  • Loading branch information
artemgavrilov and Alex Tymchuk committed Jul 13, 2023
1 parent 925fc67 commit 8348a59
Show file tree
Hide file tree
Showing 16 changed files with 660 additions and 454 deletions.
655 changes: 366 additions & 289 deletions api/managementpb/checks.pb.go

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions api/managementpb/checks.pb.validate.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions api/managementpb/checks.proto
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@ enum SecurityCheckInterval {
RARE = 3;
}

enum AdvisorCheckFamily {
ADVISOR_CHECK_FAMILY_INVALID = 0;
ADVISOR_CHECK_FAMILY_MYSQL = 1;
ADVISOR_CHECK_FAMILY_POSTGRESQL = 2;
ADVISOR_CHECK_FAMILY_MONGODB = 3;
}

// SecurityCheckResult represents the check result returned from pmm-managed after running the check.
message SecurityCheckResult {
string summary = 1;
Expand Down Expand Up @@ -83,6 +90,8 @@ message SecurityCheck {
string summary = 4;
// Check execution interval.
SecurityCheckInterval interval = 5;
// DB family.
AdvisorCheckFamily family = 6;
}

message Advisor {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions api/managementpb/json/managementpb.json
Original file line number Diff line number Diff line change
Expand Up @@ -1434,6 +1434,17 @@
"type": "boolean",
"x-order": 1
},
"family": {
"type": "string",
"default": "ADVISOR_CHECK_FAMILY_INVALID",
"enum": [
"ADVISOR_CHECK_FAMILY_INVALID",
"ADVISOR_CHECK_FAMILY_MYSQL",
"ADVISOR_CHECK_FAMILY_POSTGRESQL",
"ADVISOR_CHECK_FAMILY_MONGODB"
],
"x-order": 5
},
"interval": {
"description": "SecurityCheckInterval represents possible execution interval values for checks.",
"type": "string",
Expand Down Expand Up @@ -6494,6 +6505,17 @@
"type": "boolean",
"x-order": 1
},
"family": {
"type": "string",
"default": "ADVISOR_CHECK_FAMILY_INVALID",
"enum": [
"ADVISOR_CHECK_FAMILY_INVALID",
"ADVISOR_CHECK_FAMILY_MYSQL",
"ADVISOR_CHECK_FAMILY_POSTGRESQL",
"ADVISOR_CHECK_FAMILY_MONGODB"
],
"x-order": 5
},
"interval": {
"description": "SecurityCheckInterval represents possible execution interval values for checks.",
"type": "string",
Expand Down
22 changes: 22 additions & 0 deletions api/swagger/swagger-dev.json
Original file line number Diff line number Diff line change
Expand Up @@ -18325,6 +18325,17 @@
"RARE"
],
"x-order": 4
},
"family": {
"type": "string",
"default": "ADVISOR_CHECK_FAMILY_INVALID",
"enum": [
"ADVISOR_CHECK_FAMILY_INVALID",
"ADVISOR_CHECK_FAMILY_MYSQL",
"ADVISOR_CHECK_FAMILY_POSTGRESQL",
"ADVISOR_CHECK_FAMILY_MONGODB"
],
"x-order": 5
}
}
},
Expand Down Expand Up @@ -29894,6 +29905,17 @@
"RARE"
],
"x-order": 4
},
"family": {
"type": "string",
"default": "ADVISOR_CHECK_FAMILY_INVALID",
"enum": [
"ADVISOR_CHECK_FAMILY_INVALID",
"ADVISOR_CHECK_FAMILY_MYSQL",
"ADVISOR_CHECK_FAMILY_POSTGRESQL",
"ADVISOR_CHECK_FAMILY_MONGODB"
],
"x-order": 5
}
}
},
Expand Down
22 changes: 22 additions & 0 deletions api/swagger/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -15558,6 +15558,17 @@
"RARE"
],
"x-order": 4
},
"family": {
"type": "string",
"default": "ADVISOR_CHECK_FAMILY_INVALID",
"enum": [
"ADVISOR_CHECK_FAMILY_INVALID",
"ADVISOR_CHECK_FAMILY_MYSQL",
"ADVISOR_CHECK_FAMILY_POSTGRESQL",
"ADVISOR_CHECK_FAMILY_MONGODB"
],
"x-order": 5
}
}
},
Expand Down Expand Up @@ -20598,6 +20609,17 @@
"RARE"
],
"x-order": 4
},
"family": {
"type": "string",
"default": "ADVISOR_CHECK_FAMILY_INVALID",
"enum": [
"ADVISOR_CHECK_FAMILY_INVALID",
"ADVISOR_CHECK_FAMILY_MYSQL",
"ADVISOR_CHECK_FAMILY_POSTGRESQL",
"ADVISOR_CHECK_FAMILY_MONGODB"
],
"x-order": 5
}
}
},
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ require (
github.com/operator-framework/api v0.17.6
github.com/operator-framework/operator-lifecycle-manager v0.24.0
github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c
github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342
github.com/percona-platform/saas v0.0.0-20230713134421-bb403194c5f7
github.com/percona/dbaas-operator v0.1.6
github.com/percona/exporter_shared v0.7.4
github.com/percona/go-mysql v0.0.0-20210427141028-73d29c6da78c
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -645,8 +645,8 @@ github.com/percona-lab/crypto v0.0.0-20220811043533-d164de3c7f08 h1:NprWeXddFZJS
github.com/percona-lab/crypto v0.0.0-20220811043533-d164de3c7f08/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c h1:1JySfwdjVfc9ahl0466OX7nSQ7Z4SjQkLe3ZdLkMOJI=
github.com/percona-platform/dbaas-api v0.0.0-20230103182808-d79c449a9f4c/go.mod h1:/jgle33awfHq1va/T6NnNS5wWAETSnl6wUZ1bew+CJ0=
github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342 h1:ilguq4u7k08QxS3UDYINt8x6+AOgB0wZApd1o4IK8rQ=
github.com/percona-platform/saas v0.0.0-20230306173543-c223f9a47342/go.mod h1:gFUwaFp6Ugu5qsBwiOVJYbDlzgZ77tmXdXGO7tG5xVI=
github.com/percona-platform/saas v0.0.0-20230713134421-bb403194c5f7 h1:9XwfsWsQjWLWZpm9ouuAMZGZ3g4bT4pt0E/fr0Tc/Vo=
github.com/percona-platform/saas v0.0.0-20230713134421-bb403194c5f7/go.mod h1:lZuFcqj0EoQWx28SYkTcdhJOCQEbRcAyahYPfRMY7tc=
github.com/percona/dbaas-operator v0.1.6 h1:NsZXDKcPXk38kET+X6r8Es+3Supyu5XJZMS0gqPejKs=
github.com/percona/dbaas-operator v0.1.6/go.mod h1:52B/kh+Jmtfv0JiZgDcc34qgbwwEi9U4A3311JBxIZg=
github.com/percona/exporter_shared v0.7.4 h1:S+xnfK/CySiYqr4XqLiLAfO3rxgEOUFK+m6lCBi3mgc=
Expand Down
25 changes: 23 additions & 2 deletions managed/services/checks/checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@ func (s *Service) executeChecks(ctx context.Context, intervalGroup check.Interva
if err != nil {
return errors.WithStack(err)
}
mySQLChecks, postgreSQLChecks, mongoDBChecks := services.GroupChecksByDB(s.l, checks)
mySQLChecks, postgreSQLChecks, mongoDBChecks := groupChecksByDB(s.l, checks)

mySQLChecks = s.filterChecks(mySQLChecks, intervalGroup, disabledChecks, checkNames)
mySQLCheckResults := s.executeChecksForTargetType(ctx, models.MySQLServiceType, mySQLChecks)
Expand Down Expand Up @@ -1689,7 +1689,7 @@ func (s *Service) refreshChecksInMemoryMetric() {
return
}
s.mChecksAvailable.Reset()
mySQLChecks, postgreSQLChecks, mongoDBChecks := services.GroupChecksByDB(s.l, checks)
mySQLChecks, postgreSQLChecks, mongoDBChecks := groupChecksByDB(s.l, checks)
s.incChecksInMemoryMetric(models.MySQLServiceType, mySQLChecks)
s.incChecksInMemoryMetric(models.PostgreSQLServiceType, postgreSQLChecks)
s.incChecksInMemoryMetric(models.MongoDBServiceType, mongoDBChecks)
Expand All @@ -1701,6 +1701,27 @@ func (s *Service) incChecksInMemoryMetric(serviceType models.ServiceType, checks
}
}

// groupChecksByDB splits provided checks by database and returns three slices: for MySQL, for PostgreSQL and for MongoDB.
func groupChecksByDB(l *logrus.Entry, checks map[string]check.Check) (mySQLChecks, postgreSQLChecks, mongoDBChecks map[string]check.Check) { //nolint:nonamedreturns
mySQLChecks = make(map[string]check.Check)
postgreSQLChecks = make(map[string]check.Check)
mongoDBChecks = make(map[string]check.Check)
for _, c := range checks {
switch c.GetFamily() {
case check.MySQL:
mySQLChecks[c.Name] = c
case check.PostgreSQL:
postgreSQLChecks[c.Name] = c
case check.MongoDB:
mongoDBChecks[c.Name] = c
default:
l.Warnf("Unknown check family %s, will be skipped.", c.Family)
}
}

return
}

// check interfaces.
var (
_ prom.Collector = (*Service)(nil)
Expand Down
Loading

0 comments on commit 8348a59

Please sign in to comment.