From 274b71145c5923cacd3b012e9bb976bbe11735a0 Mon Sep 17 00:00:00 2001 From: Tibor Korocz Date: Tue, 16 Jun 2026 09:11:08 +0000 Subject: [PATCH 01/19] feat(rta): extend Real-Time Analytics to MySQL Adds MySQL support to Real-Time Analytics (RTA) alongside the existing MongoDB implementation. Running queries are sourced from the sys schema processlist (sys.x$processlist), mirroring the MongoDB currentOp flow. API: - query.proto: new QueryMySQLData payload added to QueryData oneof - realtimeanalytics.proto: ListServicesResponse now returns mysql services - inventory agents.proto: new AGENT_TYPE_RTA_MYSQL_AGENT (20) and RTAMySQLAgent message; wired into List/Get agent responses Agent: - new agent/agents/mysql/realtimeanalytics collector that periodically reads currently running statements from sys.x$processlist and streams them to the server - supervisor wiring for AGENT_TYPE_RTA_MYSQL_AGENT Managed: - RTAMySQLAgentType model + DSN/Files/compatibility/agent-type wiring - realtimeanalytics service: ListServices/StartSession support MySQL, getRTAAgentTypeForServiceType maps MySQL service -> RTA MySQL agent - rtaMySQLAgentConfig built-in agent state; converters + inventory grpc server handle the new agent type UI: - rta types: QueryMySQLData payload, mysql in available services - QueryAndDetails renders MySQL-specific metrics (command, state, program name, rows examined/sent, full scan) and uses SQL highlighting - overview query cell + syntax highlighter gain SQL language support - selection requests MySQL services; disclaimer mentions MySQL --- .../mysql/realtimeanalytics/connection.go | 66 + agent/agents/mysql/realtimeanalytics/mysql.go | 316 ++++ agent/agents/supervisor/supervisor.go | 13 + api/inventory/v1/agents.go | 1 + api/inventory/v1/agents.pb.go | 1385 ++++++++++------- api/inventory/v1/agents.pb.validate.go | 463 ++++-- api/inventory/v1/agents.proto | 29 + .../agents_service/get_agent_responses.go | 433 ++++++ .../agents_service/list_agents_responses.go | 482 ++++++ api/inventory/v1/json/v1.json | 192 ++- api/inventory/v1/types/agent_types.go | 2 + .../list_services_responses.go | 158 ++ .../search_queries_responses.go | 139 ++ api/realtimeanalytics/v1/json/v1.json | 131 ++ api/realtimeanalytics/v1/query.pb.go | 208 ++- api/realtimeanalytics/v1/query.pb.validate.go | 165 +- api/realtimeanalytics/v1/query.proto | 25 + .../v1/realtimeanalytics.pb.go | 112 +- .../v1/realtimeanalytics.pb.validate.go | 67 +- .../v1/realtimeanalytics.proto | 1 + api/swagger/swagger-dev.json | 323 +++- api/swagger/swagger.json | 323 +++- managed/models/agent_helpers.go | 8 +- managed/models/agent_model.go | 6 +- managed/models/dsn_helpers.go | 1 + managed/services/agents/mysql.go | 25 + managed/services/agents/state.go | 4 +- managed/services/converters.go | 15 + .../services/inventory/grpc/agents_server.go | 5 + managed/services/management/agent.go | 2 +- managed/services/realtimeanalytics/service.go | 14 + .../services/victoriametrics/prometheus.go | 2 +- .../syntax-highlighter/SyntaxHighlighter.tsx | 3 + ui/apps/pmm/src/hooks/api/useRealtime.ts | 7 +- ui/apps/pmm/src/pages/rta/messages.ts | 2 +- .../details-pane/QueryAndDetails.messages.ts | 16 + .../details-pane/QueryAndDetails.test.tsx | 34 +- .../overview/details-pane/QueryAndDetails.tsx | 254 ++- .../table/OverviewTable.constants.tsx | 8 +- .../rta/overview/table/OverviewTable.utils.ts | 8 +- .../overview/table/query-cell/QueryCell.tsx | 6 +- .../pages/rta/selection/RealtimeSelection.tsx | 5 +- ui/apps/pmm/src/types/rta.types.ts | 19 +- ui/apps/pmm/src/types/util.types.ts | 2 +- ui/apps/pmm/src/utils/testStubs.ts | 22 + 45 files changed, 4549 insertions(+), 953 deletions(-) create mode 100644 agent/agents/mysql/realtimeanalytics/connection.go create mode 100644 agent/agents/mysql/realtimeanalytics/mysql.go diff --git a/agent/agents/mysql/realtimeanalytics/connection.go b/agent/agents/mysql/realtimeanalytics/connection.go new file mode 100644 index 00000000000..833b7278bc1 --- /dev/null +++ b/agent/agents/mysql/realtimeanalytics/connection.go @@ -0,0 +1,66 @@ +// Copyright (C) 2023 Percona LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package realtimeanalytics + +import ( + "context" + "database/sql" + "time" + + "github.com/go-sql-driver/mysql" + + "github.com/percona/pmm/agent/tlshelpers" +) + +const ( + // Timeout for MySQL queries and connection. + mysqlQueryTimeout = 5 * time.Second +) + +// createConnection opens a connection to MySQL and verifies it with a ping. +// It returns the *sql.DB, the instance address(host:port) parsed from the DSN +// and an error if connection can't be established. +func createConnection(ctx context.Context, dsn string, files map[string]string, tlsSkipVerify bool) (*sql.DB, string, error) { + if files != nil { + if err := tlshelpers.RegisterMySQLCerts(files, tlsSkipVerify); err != nil { + return nil, "", err + } + } + + cfg, err := mysql.ParseDSN(dsn) + if err != nil { + return nil, "", err + } + + db, err := sql.Open("mysql", dsn) + if err != nil { + return nil, "", err + } + + // RTA agent needs only a single short-lived connection at a time. + db.SetMaxIdleConns(1) + db.SetMaxOpenConns(1) + db.SetConnMaxLifetime(0) + + pingCtx, cancel := context.WithTimeout(ctx, mysqlQueryTimeout) + defer cancel() + + if err = db.PingContext(pingCtx); err != nil { + _ = db.Close() + return nil, "", err + } + + return db, cfg.Addr, nil +} diff --git a/agent/agents/mysql/realtimeanalytics/mysql.go b/agent/agents/mysql/realtimeanalytics/mysql.go new file mode 100644 index 00000000000..51981cc2e76 --- /dev/null +++ b/agent/agents/mysql/realtimeanalytics/mysql.go @@ -0,0 +1,316 @@ +// Copyright (C) 2023 Percona LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package realtimeanalytics runs built-in Real-Time Analytics Agent for MySQL. +package realtimeanalytics + +import ( + "context" + "database/sql" + "encoding/json" + "fmt" + "strconv" + "strings" + "time" + + "github.com/prometheus/client_golang/prometheus" + "github.com/sirupsen/logrus" + "google.golang.org/protobuf/types/known/durationpb" + "google.golang.org/protobuf/types/known/timestamppb" + + "github.com/percona/pmm/agent/agents" + agentv1 "github.com/percona/pmm/api/agent/v1" + inventoryv1 "github.com/percona/pmm/api/inventory/v1" + rtav1 "github.com/percona/pmm/api/realtimeanalytics/v1" +) + +const ( + changesBufferSize = 10 + // picosecondsPerNanosecond is used to convert MySQL picosecond latencies into Go durations. + picosecondsPerNanosecond = 1000 +) + +// currentQueriesSQL fetches currently running queries from the sys schema. +// sys.x$processlist is the machine-readable (raw) version of sys.processlist +// (https://dev.mysql.com/doc/refman/8.4/en/sys-processlist.html); it exposes +// the same columns but with unformatted numeric latencies. +// We exclude background threads, idle ("Sleep") connections, the RTA agent's +// own connection and rows without a current statement. +const currentQueriesSQL = ` +SELECT + conn_id, + COALESCE(user, ''), + COALESCE(db, ''), + COALESCE(command, ''), + COALESCE(state, ''), + COALESCE(statement_latency, 0), + COALESCE(current_statement, ''), + COALESCE(rows_examined, 0), + COALESCE(rows_sent, 0), + COALESCE(full_scan, ''), + COALESCE(program_name, '') +FROM sys.x$processlist +WHERE conn_id IS NOT NULL + AND conn_id <> CONNECTION_ID() + AND current_statement IS NOT NULL + AND command NOT IN ('Sleep', 'Daemon')` + +// MySQLRTA extracts Real-Time Analytics data (currently running DB queries) from MySQL. +type MySQLRTA struct { + agentID string + serviceID string + serviceName string + l *logrus.Entry + + // Channel to obtain data from this agent. + changes chan agents.Change + + // dsn to connect to MySQL. + dsn string + // files holds TLS certificates to register for the MySQL connection. + files map[string]string + // tlsSkipVerify controls TLS certificate validation. + tlsSkipVerify bool + // collectInterval is how often to collect data from MySQL. + collectInterval time.Duration + + // db is the open connection to MySQL, kept between collection cycles. + db *sql.DB + // dbInstanceAddress is the monitored instance address parsed from the DSN. + dbInstanceAddress string +} + +// Params represent Agent parameters. +type Params struct { + AgentID string + DSN string // DSN to connect to MySQL. + ServiceID string // ServiceID shall be set in RTA queries to link them to the service. + ServiceName string // ServiceName shall be set in RTA queries to link them to the service. + CollectInterval time.Duration // CollectInterval is how often to collect data from MySQL. + TextFiles *agentv1.TextFiles // TLS certificate files (optional). + TLSSkipVerify bool // Skip TLS certificate validation. +} + +// New creates new MySQLRTA service. +// The DSN is expected to be already rendered by the caller (the supervisor renders +// TLS file templates before constructing the agent). +func New(params *Params, l *logrus.Entry) (*MySQLRTA, error) { + var files map[string]string + if params.TextFiles != nil { + files = params.TextFiles.Files + } + + return &MySQLRTA{ + agentID: params.AgentID, + serviceID: params.ServiceID, + serviceName: params.ServiceName, + dsn: params.DSN, + files: files, + tlsSkipVerify: params.TLSSkipVerify, + collectInterval: params.CollectInterval, + l: l, + changes: make(chan agents.Change, changesBufferSize), + }, nil +} + +// Run extracts currently running DB queries from MySQL +// and sends it to the channel until ctx is canceled. +func (m *MySQLRTA) Run(ctx context.Context) { + m.l.Info("Starting MySQL RTA agent") + + m.changes <- agents.Change{Status: inventoryv1.AgentStatus_AGENT_STATUS_STARTING} + + defer func() { + m.changes <- agents.Change{Status: inventoryv1.AgentStatus_AGENT_STATUS_DONE} + + close(m.changes) + }() + + db, addr, err := createConnection(ctx, m.dsn, m.files, m.tlsSkipVerify) + if err != nil { + m.l.Errorf("Can't run Real-Time Analytics agent, reason: %v", err) + + m.changes <- agents.Change{Status: inventoryv1.AgentStatus_AGENT_STATUS_STOPPING} + + return + } + + defer func() { + _ = db.Close() + }() + + m.db = db + m.dbInstanceAddress = addr + + m.changes <- agents.Change{Status: inventoryv1.AgentStatus_AGENT_STATUS_RUNNING} + + ticker := time.NewTicker(m.collectInterval) + defer ticker.Stop() + + for { + select { + case <-ctx.Done(): + m.l.Info("Stopping MySQL RTA agent") + + m.changes <- agents.Change{Status: inventoryv1.AgentStatus_AGENT_STATUS_STOPPING} + // m.changes channel will be closed in defer, so we don't need to close it here, just exit the function. + return + case <-ticker.C: + // Run collection in a separate goroutine to avoid blocking the main loop + // and allow timely execution of next ticks in case collection takes longer + // than the collect interval. + go func(curCtx context.Context) { + rtaQueryBucket, err := m.collectProcessList(curCtx) + if err != nil { + m.l.Warnf("processlist collection failed: %v", err) + return + } + + select { + case <-curCtx.Done(): + return + default: + if len(rtaQueryBucket) != 0 { + m.changes <- agents.Change{RTAQueriesBucket: rtaQueryBucket} + } + } + }(ctx) + } + } +} + +// collectProcessList queries sys.x$processlist and parses the result into a slice of *QueryData. +func (m *MySQLRTA) collectProcessList(ctx context.Context) ([]*rtav1.QueryData, error) { + queryCtx, cancel := context.WithTimeout(ctx, mysqlQueryTimeout) + defer cancel() + + rows, err := m.db.QueryContext(queryCtx, currentQueriesSQL) + if err != nil { + return nil, fmt.Errorf("sys.x$processlist not available or permission denied: %w", err) + } + defer func() { + _ = rows.Close() + }() + + collectTime := timestamppb.New(time.Now()) + + var results []*rtav1.QueryData + for rows.Next() { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + } + + var r processlistRow + if err := rows.Scan(&r.connID, &r.user, &r.db, &r.command, &r.state, &r.latencyPicos, + &r.currentStmt, &r.rowsExamined, &r.rowsSent, &r.fullScan, &r.programName); err != nil { + m.l.Warnf("Failed to scan processlist row: %v", err) + continue + } + + queryData := m.buildQueryData(&r) + queryData.QueryCollectTime = collectTime + + results = append(results, queryData) + } + + if err := rows.Err(); err != nil { + m.l.Warnf("Failed to iterate processlist rows: %v", err) + return nil, err + } + + return results, nil +} + +// processlistRow holds a single row scanned from sys.x$processlist. +type processlistRow struct { + connID uint64 + user string + db string + command string + state string + latencyPicos float64 + currentStmt string + rowsExamined int64 + rowsSent int64 + fullScan string + programName string +} + +// buildQueryData converts a single sys.x$processlist row into a *QueryData. +func (m *MySQLRTA) buildQueryData(r *processlistRow) *rtav1.QueryData { + execDuration := durationpb.New(time.Duration(r.latencyPicos/picosecondsPerNanosecond) * time.Nanosecond) + + mysqlPayload := &rtav1.QueryMySQLData{ + DbInstanceAddress: m.dbInstanceAddress, + ProgramName: r.programName, + DatabaseName: r.db, + Command: r.command, + State: r.state, + Username: r.user, + RowsExamined: r.rowsExamined, + RowsSent: r.rowsSent, + FullScan: strings.EqualFold(r.fullScan, "YES"), + } + + rawJSON, err := json.Marshal(map[string]any{ + "conn_id": r.connID, + "user": r.user, + "db": r.db, + "command": r.command, + "state": r.state, + "statement_latency": r.latencyPicos, + "current_statement": r.currentStmt, + "rows_examined": r.rowsExamined, + "rows_sent": r.rowsSent, + "full_scan": r.fullScan, + "program_name": r.programName, + }) + if err != nil { + m.l.Warnf("Failed to marshal raw query data: %v", err) + } + + return &rtav1.QueryData{ + ServiceId: m.serviceID, + ServiceName: m.serviceName, + QueryId: strconv.FormatUint(r.connID, 10), + QueryText: r.currentStmt, + QueryRawJson: string(rawJSON), + QueryExecutionDuration: execDuration, + Payload: &rtav1.QueryData_MySqlPayload{ + MySqlPayload: mysqlPayload, + }, + } +} + +// Changes returns channel that should be read until it is closed. +func (m *MySQLRTA) Changes() <-chan agents.Change { + return m.changes +} + +// Describe implements prometheus.Collector. +func (m *MySQLRTA) Describe(_ chan<- *prometheus.Desc) { + // This method is needed to satisfy interface. +} + +// Collect implement prometheus.Collector. +func (m *MySQLRTA) Collect(_ chan<- prometheus.Metric) { + // This method is needed to satisfy interface. +} + +// check interfaces. +var ( + _ prometheus.Collector = (*MySQLRTA)(nil) +) diff --git a/agent/agents/supervisor/supervisor.go b/agent/agents/supervisor/supervisor.go index edf86839a1c..ccda3bcdd9a 100644 --- a/agent/agents/supervisor/supervisor.go +++ b/agent/agents/supervisor/supervisor.go @@ -37,6 +37,7 @@ import ( mongoprofiler "github.com/percona/pmm/agent/agents/mongodb/profiler" mongorta "github.com/percona/pmm/agent/agents/mongodb/realtimeanalytics" "github.com/percona/pmm/agent/agents/mysql/perfschema" + mysqlrta "github.com/percona/pmm/agent/agents/mysql/realtimeanalytics" "github.com/percona/pmm/agent/agents/mysql/slowlog" "github.com/percona/pmm/agent/agents/noop" "github.com/percona/pmm/agent/agents/postgres/pgstatmonitor" @@ -673,6 +674,18 @@ func (s *Supervisor) startBuiltin(agentID string, builtinAgent *agentv1.SetState } agent, err = mongorta.New(params, l) + case inventoryv1.AgentType_AGENT_TYPE_RTA_MYSQL_AGENT: + params := &mysqlrta.Params{ + DSN: dsn, + AgentID: agentID, + ServiceID: builtinAgent.ServiceId, + ServiceName: builtinAgent.ServiceName, + CollectInterval: builtinAgent.RtaOptions.GetCollectInterval().AsDuration(), + TextFiles: builtinAgent.GetTextFiles(), + TLSSkipVerify: builtinAgent.TlsSkipVerify, + } + agent, err = mysqlrta.New(params, l) + case type_TEST_NOOP: agent = noop.New() diff --git a/api/inventory/v1/agents.go b/api/inventory/v1/agents.go index d601b1784c7..d3e5fabee6d 100644 --- a/api/inventory/v1/agents.go +++ b/api/inventory/v1/agents.go @@ -44,3 +44,4 @@ func (*ExternalExporter) sealedAgent() {} func (*AzureDatabaseExporter) sealedAgent() {} func (*ValkeyExporter) sealedAgent() {} func (*RTAMongoDBAgent) sealedAgent() {} +func (*RTAMySQLAgent) sealedAgent() {} diff --git a/api/inventory/v1/agents.pb.go b/api/inventory/v1/agents.pb.go index 3784fc8b7fc..9e73e370508 100644 --- a/api/inventory/v1/agents.pb.go +++ b/api/inventory/v1/agents.pb.go @@ -7,19 +7,17 @@ package inventoryv1 import ( - reflect "reflect" - sync "sync" - unsafe "unsafe" - _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" + common "github.com/percona/pmm/api/common" + _ "github.com/percona/pmm/api/extensions/v1" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" - - common "github.com/percona/pmm/api/common" - _ "github.com/percona/pmm/api/extensions/v1" + reflect "reflect" + sync "sync" + unsafe "unsafe" ) const ( @@ -53,6 +51,7 @@ const ( AgentType_AGENT_TYPE_AZURE_DATABASE_EXPORTER AgentType = 15 AgentType_AGENT_TYPE_NOMAD_AGENT AgentType = 16 AgentType_AGENT_TYPE_RTA_MONGODB_AGENT AgentType = 19 + AgentType_AGENT_TYPE_RTA_MYSQL_AGENT AgentType = 20 ) // Enum value maps for AgentType. @@ -78,6 +77,7 @@ var ( 15: "AGENT_TYPE_AZURE_DATABASE_EXPORTER", 16: "AGENT_TYPE_NOMAD_AGENT", 19: "AGENT_TYPE_RTA_MONGODB_AGENT", + 20: "AGENT_TYPE_RTA_MYSQL_AGENT", } AgentType_value = map[string]int32{ "AGENT_TYPE_UNSPECIFIED": 0, @@ -100,6 +100,7 @@ var ( "AGENT_TYPE_AZURE_DATABASE_EXPORTER": 15, "AGENT_TYPE_NOMAD_AGENT": 16, "AGENT_TYPE_RTA_MONGODB_AGENT": 19, + "AGENT_TYPE_RTA_MYSQL_AGENT": 20, } ) @@ -2471,6 +2472,142 @@ func (x *RTAMongoDBAgent) GetLogLevel() LogLevel { return LogLevel_LOG_LEVEL_UNSPECIFIED } +// RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server. +type RTAMySQLAgent struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Unique agent identifier. + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` + // The pmm-agent identifier which runs this instance. + PmmAgentId string `protobuf:"bytes,2,opt,name=pmm_agent_id,json=pmmAgentId,proto3" json:"pmm_agent_id,omitempty"` + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `protobuf:"varint,3,opt,name=disabled,proto3" json:"disabled,omitempty"` + // Service identifier. + ServiceId string `protobuf:"bytes,4,opt,name=service_id,json=serviceId,proto3" json:"service_id,omitempty"` + // MySQL username for getting the currently running queries. + Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"` + // Use TLS for database connections. + Tls bool `protobuf:"varint,6,opt,name=tls,proto3" json:"tls,omitempty"` + // Skip TLS certificate and hostname validation. + TlsSkipVerify bool `protobuf:"varint,7,opt,name=tls_skip_verify,json=tlsSkipVerify,proto3" json:"tls_skip_verify,omitempty"` + // Custom user-assigned labels. + CustomLabels map[string]string `protobuf:"bytes,8,rep,name=custom_labels,json=customLabels,proto3" json:"custom_labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Real-Time Analytics options. + RtaOptions *RTAOptions `protobuf:"bytes,9,opt,name=rta_options,json=rtaOptions,proto3" json:"rta_options,omitempty"` + // Actual Agent status. + Status AgentStatus `protobuf:"varint,10,opt,name=status,proto3,enum=inventory.v1.AgentStatus" json:"status,omitempty"` + // Log level for exporter. + LogLevel LogLevel `protobuf:"varint,11,opt,name=log_level,json=logLevel,proto3,enum=inventory.v1.LogLevel" json:"log_level,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RTAMySQLAgent) Reset() { + *x = RTAMySQLAgent{} + mi := &file_inventory_v1_agents_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RTAMySQLAgent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RTAMySQLAgent) ProtoMessage() {} + +func (x *RTAMySQLAgent) ProtoReflect() protoreflect.Message { + mi := &file_inventory_v1_agents_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RTAMySQLAgent.ProtoReflect.Descriptor instead. +func (*RTAMySQLAgent) Descriptor() ([]byte, []int) { + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{15} +} + +func (x *RTAMySQLAgent) GetAgentId() string { + if x != nil { + return x.AgentId + } + return "" +} + +func (x *RTAMySQLAgent) GetPmmAgentId() string { + if x != nil { + return x.PmmAgentId + } + return "" +} + +func (x *RTAMySQLAgent) GetDisabled() bool { + if x != nil { + return x.Disabled + } + return false +} + +func (x *RTAMySQLAgent) GetServiceId() string { + if x != nil { + return x.ServiceId + } + return "" +} + +func (x *RTAMySQLAgent) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *RTAMySQLAgent) GetTls() bool { + if x != nil { + return x.Tls + } + return false +} + +func (x *RTAMySQLAgent) GetTlsSkipVerify() bool { + if x != nil { + return x.TlsSkipVerify + } + return false +} + +func (x *RTAMySQLAgent) GetCustomLabels() map[string]string { + if x != nil { + return x.CustomLabels + } + return nil +} + +func (x *RTAMySQLAgent) GetRtaOptions() *RTAOptions { + if x != nil { + return x.RtaOptions + } + return nil +} + +func (x *RTAMySQLAgent) GetStatus() AgentStatus { + if x != nil { + return x.Status + } + return AgentStatus_AGENT_STATUS_UNSPECIFIED +} + +func (x *RTAMySQLAgent) GetLogLevel() LogLevel { + if x != nil { + return x.LogLevel + } + return LogLevel_LOG_LEVEL_UNSPECIFIED +} + // QANPostgreSQLPgStatementsAgent runs within pmm-agent and sends PostgreSQL Query Analytics data to the PMM Server. type QANPostgreSQLPgStatementsAgent struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2506,7 +2643,7 @@ type QANPostgreSQLPgStatementsAgent struct { func (x *QANPostgreSQLPgStatementsAgent) Reset() { *x = QANPostgreSQLPgStatementsAgent{} - mi := &file_inventory_v1_agents_proto_msgTypes[15] + mi := &file_inventory_v1_agents_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2518,7 +2655,7 @@ func (x *QANPostgreSQLPgStatementsAgent) String() string { func (*QANPostgreSQLPgStatementsAgent) ProtoMessage() {} func (x *QANPostgreSQLPgStatementsAgent) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[15] + mi := &file_inventory_v1_agents_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2531,7 +2668,7 @@ func (x *QANPostgreSQLPgStatementsAgent) ProtoReflect() protoreflect.Message { // Deprecated: Use QANPostgreSQLPgStatementsAgent.ProtoReflect.Descriptor instead. func (*QANPostgreSQLPgStatementsAgent) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{15} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{16} } func (x *QANPostgreSQLPgStatementsAgent) GetAgentId() string { @@ -2662,7 +2799,7 @@ type QANPostgreSQLPgStatMonitorAgent struct { func (x *QANPostgreSQLPgStatMonitorAgent) Reset() { *x = QANPostgreSQLPgStatMonitorAgent{} - mi := &file_inventory_v1_agents_proto_msgTypes[16] + mi := &file_inventory_v1_agents_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2674,7 +2811,7 @@ func (x *QANPostgreSQLPgStatMonitorAgent) String() string { func (*QANPostgreSQLPgStatMonitorAgent) ProtoMessage() {} func (x *QANPostgreSQLPgStatMonitorAgent) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[16] + mi := &file_inventory_v1_agents_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2687,7 +2824,7 @@ func (x *QANPostgreSQLPgStatMonitorAgent) ProtoReflect() protoreflect.Message { // Deprecated: Use QANPostgreSQLPgStatMonitorAgent.ProtoReflect.Descriptor instead. func (*QANPostgreSQLPgStatMonitorAgent) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{16} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{17} } func (x *QANPostgreSQLPgStatMonitorAgent) GetAgentId() string { @@ -2827,7 +2964,7 @@ type RDSExporter struct { func (x *RDSExporter) Reset() { *x = RDSExporter{} - mi := &file_inventory_v1_agents_proto_msgTypes[17] + mi := &file_inventory_v1_agents_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2839,7 +2976,7 @@ func (x *RDSExporter) String() string { func (*RDSExporter) ProtoMessage() {} func (x *RDSExporter) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[17] + mi := &file_inventory_v1_agents_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2852,7 +2989,7 @@ func (x *RDSExporter) ProtoReflect() protoreflect.Message { // Deprecated: Use RDSExporter.ProtoReflect.Descriptor instead. func (*RDSExporter) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{17} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{18} } func (x *RDSExporter) GetAgentId() string { @@ -2997,7 +3134,7 @@ type ExternalExporter struct { func (x *ExternalExporter) Reset() { *x = ExternalExporter{} - mi := &file_inventory_v1_agents_proto_msgTypes[18] + mi := &file_inventory_v1_agents_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3009,7 +3146,7 @@ func (x *ExternalExporter) String() string { func (*ExternalExporter) ProtoMessage() {} func (x *ExternalExporter) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[18] + mi := &file_inventory_v1_agents_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3022,7 +3159,7 @@ func (x *ExternalExporter) ProtoReflect() protoreflect.Message { // Deprecated: Use ExternalExporter.ProtoReflect.Descriptor instead. func (*ExternalExporter) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{18} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{19} } func (x *ExternalExporter) GetAgentId() string { @@ -3158,7 +3295,7 @@ type AzureDatabaseExporter struct { func (x *AzureDatabaseExporter) Reset() { *x = AzureDatabaseExporter{} - mi := &file_inventory_v1_agents_proto_msgTypes[19] + mi := &file_inventory_v1_agents_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3170,7 +3307,7 @@ func (x *AzureDatabaseExporter) String() string { func (*AzureDatabaseExporter) ProtoMessage() {} func (x *AzureDatabaseExporter) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[19] + mi := &file_inventory_v1_agents_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3183,7 +3320,7 @@ func (x *AzureDatabaseExporter) ProtoReflect() protoreflect.Message { // Deprecated: Use AzureDatabaseExporter.ProtoReflect.Descriptor instead. func (*AzureDatabaseExporter) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{19} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{20} } func (x *AzureDatabaseExporter) GetAgentId() string { @@ -3294,7 +3431,7 @@ type ChangeCommonAgentParams struct { func (x *ChangeCommonAgentParams) Reset() { *x = ChangeCommonAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[20] + mi := &file_inventory_v1_agents_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3306,7 +3443,7 @@ func (x *ChangeCommonAgentParams) String() string { func (*ChangeCommonAgentParams) ProtoMessage() {} func (x *ChangeCommonAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[20] + mi := &file_inventory_v1_agents_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3319,7 +3456,7 @@ func (x *ChangeCommonAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeCommonAgentParams.ProtoReflect.Descriptor instead. func (*ChangeCommonAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{20} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{21} } func (x *ChangeCommonAgentParams) GetEnable() bool { @@ -3369,7 +3506,7 @@ type ListAgentsRequest struct { func (x *ListAgentsRequest) Reset() { *x = ListAgentsRequest{} - mi := &file_inventory_v1_agents_proto_msgTypes[21] + mi := &file_inventory_v1_agents_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3381,7 +3518,7 @@ func (x *ListAgentsRequest) String() string { func (*ListAgentsRequest) ProtoMessage() {} func (x *ListAgentsRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[21] + mi := &file_inventory_v1_agents_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3394,7 +3531,7 @@ func (x *ListAgentsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAgentsRequest.ProtoReflect.Descriptor instead. func (*ListAgentsRequest) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{21} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{22} } func (x *ListAgentsRequest) GetPmmAgentId() string { @@ -3446,13 +3583,14 @@ type ListAgentsResponse struct { NomadAgent []*NomadAgent `protobuf:"bytes,16,rep,name=nomad_agent,json=nomadAgent,proto3" json:"nomad_agent,omitempty"` ValkeyExporter []*ValkeyExporter `protobuf:"bytes,17,rep,name=valkey_exporter,json=valkeyExporter,proto3" json:"valkey_exporter,omitempty"` RtaMongodbAgent []*RTAMongoDBAgent `protobuf:"bytes,19,rep,name=rta_mongodb_agent,json=rtaMongodbAgent,proto3" json:"rta_mongodb_agent,omitempty"` + RtaMysqlAgent []*RTAMySQLAgent `protobuf:"bytes,20,rep,name=rta_mysql_agent,json=rtaMysqlAgent,proto3" json:"rta_mysql_agent,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *ListAgentsResponse) Reset() { *x = ListAgentsResponse{} - mi := &file_inventory_v1_agents_proto_msgTypes[22] + mi := &file_inventory_v1_agents_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3464,7 +3602,7 @@ func (x *ListAgentsResponse) String() string { func (*ListAgentsResponse) ProtoMessage() {} func (x *ListAgentsResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[22] + mi := &file_inventory_v1_agents_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3477,7 +3615,7 @@ func (x *ListAgentsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAgentsResponse.ProtoReflect.Descriptor instead. func (*ListAgentsResponse) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{22} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{23} } func (x *ListAgentsResponse) GetPmmAgent() []*PMMAgent { @@ -3613,6 +3751,13 @@ func (x *ListAgentsResponse) GetRtaMongodbAgent() []*RTAMongoDBAgent { return nil } +func (x *ListAgentsResponse) GetRtaMysqlAgent() []*RTAMySQLAgent { + if x != nil { + return x.RtaMysqlAgent + } + return nil +} + type GetAgentRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Unique randomly generated instance identifier. @@ -3623,7 +3768,7 @@ type GetAgentRequest struct { func (x *GetAgentRequest) Reset() { *x = GetAgentRequest{} - mi := &file_inventory_v1_agents_proto_msgTypes[23] + mi := &file_inventory_v1_agents_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3635,7 +3780,7 @@ func (x *GetAgentRequest) String() string { func (*GetAgentRequest) ProtoMessage() {} func (x *GetAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[23] + mi := &file_inventory_v1_agents_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3648,7 +3793,7 @@ func (x *GetAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentRequest.ProtoReflect.Descriptor instead. func (*GetAgentRequest) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{23} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{24} } func (x *GetAgentRequest) GetAgentId() string { @@ -3681,6 +3826,7 @@ type GetAgentResponse struct { // *GetAgentResponse_NomadAgent // *GetAgentResponse_ValkeyExporter // *GetAgentResponse_RtaMongodbAgent + // *GetAgentResponse_RtaMysqlAgent Agent isGetAgentResponse_Agent `protobuf_oneof:"agent"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -3688,7 +3834,7 @@ type GetAgentResponse struct { func (x *GetAgentResponse) Reset() { *x = GetAgentResponse{} - mi := &file_inventory_v1_agents_proto_msgTypes[24] + mi := &file_inventory_v1_agents_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3700,7 +3846,7 @@ func (x *GetAgentResponse) String() string { func (*GetAgentResponse) ProtoMessage() {} func (x *GetAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[24] + mi := &file_inventory_v1_agents_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3713,7 +3859,7 @@ func (x *GetAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentResponse.ProtoReflect.Descriptor instead. func (*GetAgentResponse) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{24} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{25} } func (x *GetAgentResponse) GetAgent() isGetAgentResponse_Agent { @@ -3894,6 +4040,15 @@ func (x *GetAgentResponse) GetRtaMongodbAgent() *RTAMongoDBAgent { return nil } +func (x *GetAgentResponse) GetRtaMysqlAgent() *RTAMySQLAgent { + if x != nil { + if x, ok := x.Agent.(*GetAgentResponse_RtaMysqlAgent); ok { + return x.RtaMysqlAgent + } + } + return nil +} + type isGetAgentResponse_Agent interface { isGetAgentResponse_Agent() } @@ -3974,6 +4129,10 @@ type GetAgentResponse_RtaMongodbAgent struct { RtaMongodbAgent *RTAMongoDBAgent `protobuf:"bytes,19,opt,name=rta_mongodb_agent,json=rtaMongodbAgent,proto3,oneof"` } +type GetAgentResponse_RtaMysqlAgent struct { + RtaMysqlAgent *RTAMySQLAgent `protobuf:"bytes,20,opt,name=rta_mysql_agent,json=rtaMysqlAgent,proto3,oneof"` +} + func (*GetAgentResponse_PmmAgent) isGetAgentResponse_Agent() {} func (*GetAgentResponse_Vmagent) isGetAgentResponse_Agent() {} @@ -4012,6 +4171,8 @@ func (*GetAgentResponse_ValkeyExporter) isGetAgentResponse_Agent() {} func (*GetAgentResponse_RtaMongodbAgent) isGetAgentResponse_Agent() {} +func (*GetAgentResponse_RtaMysqlAgent) isGetAgentResponse_Agent() {} + type GetAgentLogsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Unique randomly generated instance identifier. @@ -4024,7 +4185,7 @@ type GetAgentLogsRequest struct { func (x *GetAgentLogsRequest) Reset() { *x = GetAgentLogsRequest{} - mi := &file_inventory_v1_agents_proto_msgTypes[25] + mi := &file_inventory_v1_agents_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4036,7 +4197,7 @@ func (x *GetAgentLogsRequest) String() string { func (*GetAgentLogsRequest) ProtoMessage() {} func (x *GetAgentLogsRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[25] + mi := &file_inventory_v1_agents_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4049,7 +4210,7 @@ func (x *GetAgentLogsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentLogsRequest.ProtoReflect.Descriptor instead. func (*GetAgentLogsRequest) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{25} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{26} } func (x *GetAgentLogsRequest) GetAgentId() string { @@ -4076,7 +4237,7 @@ type GetAgentLogsResponse struct { func (x *GetAgentLogsResponse) Reset() { *x = GetAgentLogsResponse{} - mi := &file_inventory_v1_agents_proto_msgTypes[26] + mi := &file_inventory_v1_agents_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4088,7 +4249,7 @@ func (x *GetAgentLogsResponse) String() string { func (*GetAgentLogsResponse) ProtoMessage() {} func (x *GetAgentLogsResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[26] + mi := &file_inventory_v1_agents_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4101,7 +4262,7 @@ func (x *GetAgentLogsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAgentLogsResponse.ProtoReflect.Descriptor instead. func (*GetAgentLogsResponse) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{26} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{27} } func (x *GetAgentLogsResponse) GetLogs() []string { @@ -4146,7 +4307,7 @@ type AddAgentRequest struct { func (x *AddAgentRequest) Reset() { *x = AddAgentRequest{} - mi := &file_inventory_v1_agents_proto_msgTypes[27] + mi := &file_inventory_v1_agents_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4158,7 +4319,7 @@ func (x *AddAgentRequest) String() string { func (*AddAgentRequest) ProtoMessage() {} func (x *AddAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[27] + mi := &file_inventory_v1_agents_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4171,7 +4332,7 @@ func (x *AddAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddAgentRequest.ProtoReflect.Descriptor instead. func (*AddAgentRequest) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{27} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{28} } func (x *AddAgentRequest) GetAgent() isAddAgentRequest_Agent { @@ -4468,7 +4629,7 @@ type AddAgentResponse struct { func (x *AddAgentResponse) Reset() { *x = AddAgentResponse{} - mi := &file_inventory_v1_agents_proto_msgTypes[28] + mi := &file_inventory_v1_agents_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4480,7 +4641,7 @@ func (x *AddAgentResponse) String() string { func (*AddAgentResponse) ProtoMessage() {} func (x *AddAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[28] + mi := &file_inventory_v1_agents_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4493,7 +4654,7 @@ func (x *AddAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddAgentResponse.ProtoReflect.Descriptor instead. func (*AddAgentResponse) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{28} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{29} } func (x *AddAgentResponse) GetAgent() isAddAgentResponse_Agent { @@ -4791,7 +4952,7 @@ type ChangeAgentRequest struct { func (x *ChangeAgentRequest) Reset() { *x = ChangeAgentRequest{} - mi := &file_inventory_v1_agents_proto_msgTypes[29] + mi := &file_inventory_v1_agents_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4803,7 +4964,7 @@ func (x *ChangeAgentRequest) String() string { func (*ChangeAgentRequest) ProtoMessage() {} func (x *ChangeAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[29] + mi := &file_inventory_v1_agents_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4816,7 +4977,7 @@ func (x *ChangeAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeAgentRequest.ProtoReflect.Descriptor instead. func (*ChangeAgentRequest) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{29} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{30} } func (x *ChangeAgentRequest) GetAgentId() string { @@ -5120,7 +5281,7 @@ type ChangeAgentResponse struct { func (x *ChangeAgentResponse) Reset() { *x = ChangeAgentResponse{} - mi := &file_inventory_v1_agents_proto_msgTypes[30] + mi := &file_inventory_v1_agents_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5132,7 +5293,7 @@ func (x *ChangeAgentResponse) String() string { func (*ChangeAgentResponse) ProtoMessage() {} func (x *ChangeAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[30] + mi := &file_inventory_v1_agents_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5145,7 +5306,7 @@ func (x *ChangeAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeAgentResponse.ProtoReflect.Descriptor instead. func (*ChangeAgentResponse) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{30} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{31} } func (x *ChangeAgentResponse) GetAgent() isChangeAgentResponse_Agent { @@ -5426,7 +5587,7 @@ type AddPMMAgentParams struct { func (x *AddPMMAgentParams) Reset() { *x = AddPMMAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[31] + mi := &file_inventory_v1_agents_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5438,7 +5599,7 @@ func (x *AddPMMAgentParams) String() string { func (*AddPMMAgentParams) ProtoMessage() {} func (x *AddPMMAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[31] + mi := &file_inventory_v1_agents_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5451,7 +5612,7 @@ func (x *AddPMMAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPMMAgentParams.ProtoReflect.Descriptor instead. func (*AddPMMAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{31} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{32} } func (x *AddPMMAgentParams) GetRunsOnNodeId() string { @@ -5488,7 +5649,7 @@ type AddNodeExporterParams struct { func (x *AddNodeExporterParams) Reset() { *x = AddNodeExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[32] + mi := &file_inventory_v1_agents_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5500,7 +5661,7 @@ func (x *AddNodeExporterParams) String() string { func (*AddNodeExporterParams) ProtoMessage() {} func (x *AddNodeExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[32] + mi := &file_inventory_v1_agents_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5513,7 +5674,7 @@ func (x *AddNodeExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddNodeExporterParams.ProtoReflect.Descriptor instead. func (*AddNodeExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{32} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{33} } func (x *AddNodeExporterParams) GetPmmAgentId() string { @@ -5580,7 +5741,7 @@ type ChangeNodeExporterParams struct { func (x *ChangeNodeExporterParams) Reset() { *x = ChangeNodeExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[33] + mi := &file_inventory_v1_agents_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5592,7 +5753,7 @@ func (x *ChangeNodeExporterParams) String() string { func (*ChangeNodeExporterParams) ProtoMessage() {} func (x *ChangeNodeExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[33] + mi := &file_inventory_v1_agents_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5605,7 +5766,7 @@ func (x *ChangeNodeExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeNodeExporterParams.ProtoReflect.Descriptor instead. func (*ChangeNodeExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{33} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{34} } func (x *ChangeNodeExporterParams) GetEnable() bool { @@ -5705,7 +5866,7 @@ type AddMySQLdExporterParams struct { func (x *AddMySQLdExporterParams) Reset() { *x = AddMySQLdExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[34] + mi := &file_inventory_v1_agents_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5717,7 +5878,7 @@ func (x *AddMySQLdExporterParams) String() string { func (*AddMySQLdExporterParams) ProtoMessage() {} func (x *AddMySQLdExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[34] + mi := &file_inventory_v1_agents_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5730,7 +5891,7 @@ func (x *AddMySQLdExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddMySQLdExporterParams.ProtoReflect.Descriptor instead. func (*AddMySQLdExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{34} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{35} } func (x *AddMySQLdExporterParams) GetPmmAgentId() string { @@ -5910,7 +6071,7 @@ type ChangeMySQLdExporterParams struct { func (x *ChangeMySQLdExporterParams) Reset() { *x = ChangeMySQLdExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[35] + mi := &file_inventory_v1_agents_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5922,7 +6083,7 @@ func (x *ChangeMySQLdExporterParams) String() string { func (*ChangeMySQLdExporterParams) ProtoMessage() {} func (x *ChangeMySQLdExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[35] + mi := &file_inventory_v1_agents_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5935,7 +6096,7 @@ func (x *ChangeMySQLdExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeMySQLdExporterParams.ProtoReflect.Descriptor instead. func (*ChangeMySQLdExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{35} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{36} } func (x *ChangeMySQLdExporterParams) GetEnable() bool { @@ -6122,7 +6283,7 @@ type AddMongoDBExporterParams struct { func (x *AddMongoDBExporterParams) Reset() { *x = AddMongoDBExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[36] + mi := &file_inventory_v1_agents_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6134,7 +6295,7 @@ func (x *AddMongoDBExporterParams) String() string { func (*AddMongoDBExporterParams) ProtoMessage() {} func (x *AddMongoDBExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[36] + mi := &file_inventory_v1_agents_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6147,7 +6308,7 @@ func (x *AddMongoDBExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddMongoDBExporterParams.ProtoReflect.Descriptor instead. func (*AddMongoDBExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{36} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{37} } func (x *AddMongoDBExporterParams) GetPmmAgentId() string { @@ -6363,7 +6524,7 @@ type ChangeMongoDBExporterParams struct { func (x *ChangeMongoDBExporterParams) Reset() { *x = ChangeMongoDBExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[37] + mi := &file_inventory_v1_agents_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6375,7 +6536,7 @@ func (x *ChangeMongoDBExporterParams) String() string { func (*ChangeMongoDBExporterParams) ProtoMessage() {} func (x *ChangeMongoDBExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[37] + mi := &file_inventory_v1_agents_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6388,7 +6549,7 @@ func (x *ChangeMongoDBExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeMongoDBExporterParams.ProtoReflect.Descriptor instead. func (*ChangeMongoDBExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{37} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{38} } func (x *ChangeMongoDBExporterParams) GetEnable() bool { @@ -6591,7 +6752,7 @@ type AddPostgresExporterParams struct { func (x *AddPostgresExporterParams) Reset() { *x = AddPostgresExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[38] + mi := &file_inventory_v1_agents_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6603,7 +6764,7 @@ func (x *AddPostgresExporterParams) String() string { func (*AddPostgresExporterParams) ProtoMessage() {} func (x *AddPostgresExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[38] + mi := &file_inventory_v1_agents_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6616,7 +6777,7 @@ func (x *AddPostgresExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPostgresExporterParams.ProtoReflect.Descriptor instead. func (*AddPostgresExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{38} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{39} } func (x *AddPostgresExporterParams) GetPmmAgentId() string { @@ -6798,7 +6959,7 @@ type ChangePostgresExporterParams struct { func (x *ChangePostgresExporterParams) Reset() { *x = ChangePostgresExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[39] + mi := &file_inventory_v1_agents_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6810,7 +6971,7 @@ func (x *ChangePostgresExporterParams) String() string { func (*ChangePostgresExporterParams) ProtoMessage() {} func (x *ChangePostgresExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[39] + mi := &file_inventory_v1_agents_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6823,7 +6984,7 @@ func (x *ChangePostgresExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangePostgresExporterParams.ProtoReflect.Descriptor instead. func (*ChangePostgresExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{39} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{40} } func (x *ChangePostgresExporterParams) GetEnable() bool { @@ -6995,7 +7156,7 @@ type AddProxySQLExporterParams struct { func (x *AddProxySQLExporterParams) Reset() { *x = AddProxySQLExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[40] + mi := &file_inventory_v1_agents_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7007,7 +7168,7 @@ func (x *AddProxySQLExporterParams) String() string { func (*AddProxySQLExporterParams) ProtoMessage() {} func (x *AddProxySQLExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[40] + mi := &file_inventory_v1_agents_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7020,7 +7181,7 @@ func (x *AddProxySQLExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddProxySQLExporterParams.ProtoReflect.Descriptor instead. func (*AddProxySQLExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{40} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{41} } func (x *AddProxySQLExporterParams) GetPmmAgentId() string { @@ -7155,7 +7316,7 @@ type ChangeProxySQLExporterParams struct { func (x *ChangeProxySQLExporterParams) Reset() { *x = ChangeProxySQLExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[41] + mi := &file_inventory_v1_agents_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7167,7 +7328,7 @@ func (x *ChangeProxySQLExporterParams) String() string { func (*ChangeProxySQLExporterParams) ProtoMessage() {} func (x *ChangeProxySQLExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[41] + mi := &file_inventory_v1_agents_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7180,7 +7341,7 @@ func (x *ChangeProxySQLExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeProxySQLExporterParams.ProtoReflect.Descriptor instead. func (*ChangeProxySQLExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{41} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{42} } func (x *ChangeProxySQLExporterParams) GetEnable() bool { @@ -7314,7 +7475,7 @@ type AddQANMySQLPerfSchemaAgentParams struct { func (x *AddQANMySQLPerfSchemaAgentParams) Reset() { *x = AddQANMySQLPerfSchemaAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[42] + mi := &file_inventory_v1_agents_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7326,7 +7487,7 @@ func (x *AddQANMySQLPerfSchemaAgentParams) String() string { func (*AddQANMySQLPerfSchemaAgentParams) ProtoMessage() {} func (x *AddQANMySQLPerfSchemaAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[42] + mi := &file_inventory_v1_agents_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7339,7 +7500,7 @@ func (x *AddQANMySQLPerfSchemaAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddQANMySQLPerfSchemaAgentParams.ProtoReflect.Descriptor instead. func (*AddQANMySQLPerfSchemaAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{42} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{43} } func (x *AddQANMySQLPerfSchemaAgentParams) GetPmmAgentId() string { @@ -7494,7 +7655,7 @@ type ChangeQANMySQLPerfSchemaAgentParams struct { func (x *ChangeQANMySQLPerfSchemaAgentParams) Reset() { *x = ChangeQANMySQLPerfSchemaAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[43] + mi := &file_inventory_v1_agents_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7506,7 +7667,7 @@ func (x *ChangeQANMySQLPerfSchemaAgentParams) String() string { func (*ChangeQANMySQLPerfSchemaAgentParams) ProtoMessage() {} func (x *ChangeQANMySQLPerfSchemaAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[43] + mi := &file_inventory_v1_agents_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7519,7 +7680,7 @@ func (x *ChangeQANMySQLPerfSchemaAgentParams) ProtoReflect() protoreflect.Messag // Deprecated: Use ChangeQANMySQLPerfSchemaAgentParams.ProtoReflect.Descriptor instead. func (*ChangeQANMySQLPerfSchemaAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{43} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{44} } func (x *ChangeQANMySQLPerfSchemaAgentParams) GetEnable() bool { @@ -7677,7 +7838,7 @@ type AddQANMySQLSlowlogAgentParams struct { func (x *AddQANMySQLSlowlogAgentParams) Reset() { *x = AddQANMySQLSlowlogAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[44] + mi := &file_inventory_v1_agents_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7689,7 +7850,7 @@ func (x *AddQANMySQLSlowlogAgentParams) String() string { func (*AddQANMySQLSlowlogAgentParams) ProtoMessage() {} func (x *AddQANMySQLSlowlogAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[44] + mi := &file_inventory_v1_agents_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7702,7 +7863,7 @@ func (x *AddQANMySQLSlowlogAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddQANMySQLSlowlogAgentParams.ProtoReflect.Descriptor instead. func (*AddQANMySQLSlowlogAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{44} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{45} } func (x *AddQANMySQLSlowlogAgentParams) GetPmmAgentId() string { @@ -7866,7 +8027,7 @@ type ChangeQANMySQLSlowlogAgentParams struct { func (x *ChangeQANMySQLSlowlogAgentParams) Reset() { *x = ChangeQANMySQLSlowlogAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[45] + mi := &file_inventory_v1_agents_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7878,7 +8039,7 @@ func (x *ChangeQANMySQLSlowlogAgentParams) String() string { func (*ChangeQANMySQLSlowlogAgentParams) ProtoMessage() {} func (x *ChangeQANMySQLSlowlogAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[45] + mi := &file_inventory_v1_agents_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7891,7 +8052,7 @@ func (x *ChangeQANMySQLSlowlogAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeQANMySQLSlowlogAgentParams.ProtoReflect.Descriptor instead. func (*ChangeQANMySQLSlowlogAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{45} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{46} } func (x *ChangeQANMySQLSlowlogAgentParams) GetEnable() bool { @@ -8053,7 +8214,7 @@ type AddQANMongoDBProfilerAgentParams struct { func (x *AddQANMongoDBProfilerAgentParams) Reset() { *x = AddQANMongoDBProfilerAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[46] + mi := &file_inventory_v1_agents_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8065,7 +8226,7 @@ func (x *AddQANMongoDBProfilerAgentParams) String() string { func (*AddQANMongoDBProfilerAgentParams) ProtoMessage() {} func (x *AddQANMongoDBProfilerAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[46] + mi := &file_inventory_v1_agents_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8078,7 +8239,7 @@ func (x *AddQANMongoDBProfilerAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddQANMongoDBProfilerAgentParams.ProtoReflect.Descriptor instead. func (*AddQANMongoDBProfilerAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{46} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{47} } func (x *AddQANMongoDBProfilerAgentParams) GetPmmAgentId() string { @@ -8224,7 +8385,7 @@ type ChangeQANMongoDBProfilerAgentParams struct { func (x *ChangeQANMongoDBProfilerAgentParams) Reset() { *x = ChangeQANMongoDBProfilerAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[47] + mi := &file_inventory_v1_agents_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8236,7 +8397,7 @@ func (x *ChangeQANMongoDBProfilerAgentParams) String() string { func (*ChangeQANMongoDBProfilerAgentParams) ProtoMessage() {} func (x *ChangeQANMongoDBProfilerAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[47] + mi := &file_inventory_v1_agents_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8249,7 +8410,7 @@ func (x *ChangeQANMongoDBProfilerAgentParams) ProtoReflect() protoreflect.Messag // Deprecated: Use ChangeQANMongoDBProfilerAgentParams.ProtoReflect.Descriptor instead. func (*ChangeQANMongoDBProfilerAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{47} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{48} } func (x *ChangeQANMongoDBProfilerAgentParams) GetEnable() bool { @@ -8397,7 +8558,7 @@ type AddQANMongoDBMongologAgentParams struct { func (x *AddQANMongoDBMongologAgentParams) Reset() { *x = AddQANMongoDBMongologAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[48] + mi := &file_inventory_v1_agents_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8409,7 +8570,7 @@ func (x *AddQANMongoDBMongologAgentParams) String() string { func (*AddQANMongoDBMongologAgentParams) ProtoMessage() {} func (x *AddQANMongoDBMongologAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[48] + mi := &file_inventory_v1_agents_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8422,7 +8583,7 @@ func (x *AddQANMongoDBMongologAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddQANMongoDBMongologAgentParams.ProtoReflect.Descriptor instead. func (*AddQANMongoDBMongologAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{48} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{49} } func (x *AddQANMongoDBMongologAgentParams) GetPmmAgentId() string { @@ -8568,7 +8729,7 @@ type ChangeQANMongoDBMongologAgentParams struct { func (x *ChangeQANMongoDBMongologAgentParams) Reset() { *x = ChangeQANMongoDBMongologAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[49] + mi := &file_inventory_v1_agents_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8580,7 +8741,7 @@ func (x *ChangeQANMongoDBMongologAgentParams) String() string { func (*ChangeQANMongoDBMongologAgentParams) ProtoMessage() {} func (x *ChangeQANMongoDBMongologAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[49] + mi := &file_inventory_v1_agents_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8593,7 +8754,7 @@ func (x *ChangeQANMongoDBMongologAgentParams) ProtoReflect() protoreflect.Messag // Deprecated: Use ChangeQANMongoDBMongologAgentParams.ProtoReflect.Descriptor instead. func (*ChangeQANMongoDBMongologAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{49} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{50} } func (x *ChangeQANMongoDBMongologAgentParams) GetEnable() bool { @@ -8737,7 +8898,7 @@ type AddQANPostgreSQLPgStatementsAgentParams struct { func (x *AddQANPostgreSQLPgStatementsAgentParams) Reset() { *x = AddQANPostgreSQLPgStatementsAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[50] + mi := &file_inventory_v1_agents_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8749,7 +8910,7 @@ func (x *AddQANPostgreSQLPgStatementsAgentParams) String() string { func (*AddQANPostgreSQLPgStatementsAgentParams) ProtoMessage() {} func (x *AddQANPostgreSQLPgStatementsAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[50] + mi := &file_inventory_v1_agents_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8762,7 +8923,7 @@ func (x *AddQANPostgreSQLPgStatementsAgentParams) ProtoReflect() protoreflect.Me // Deprecated: Use AddQANPostgreSQLPgStatementsAgentParams.ProtoReflect.Descriptor instead. func (*AddQANPostgreSQLPgStatementsAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{50} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{51} } func (x *AddQANPostgreSQLPgStatementsAgentParams) GetPmmAgentId() string { @@ -8899,7 +9060,7 @@ type ChangeQANPostgreSQLPgStatementsAgentParams struct { func (x *ChangeQANPostgreSQLPgStatementsAgentParams) Reset() { *x = ChangeQANPostgreSQLPgStatementsAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[51] + mi := &file_inventory_v1_agents_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8911,7 +9072,7 @@ func (x *ChangeQANPostgreSQLPgStatementsAgentParams) String() string { func (*ChangeQANPostgreSQLPgStatementsAgentParams) ProtoMessage() {} func (x *ChangeQANPostgreSQLPgStatementsAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[51] + mi := &file_inventory_v1_agents_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8924,7 +9085,7 @@ func (x *ChangeQANPostgreSQLPgStatementsAgentParams) ProtoReflect() protoreflect // Deprecated: Use ChangeQANPostgreSQLPgStatementsAgentParams.ProtoReflect.Descriptor instead. func (*ChangeQANPostgreSQLPgStatementsAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{51} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{52} } func (x *ChangeQANPostgreSQLPgStatementsAgentParams) GetEnable() bool { @@ -9063,7 +9224,7 @@ type AddQANPostgreSQLPgStatMonitorAgentParams struct { func (x *AddQANPostgreSQLPgStatMonitorAgentParams) Reset() { *x = AddQANPostgreSQLPgStatMonitorAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[52] + mi := &file_inventory_v1_agents_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9075,7 +9236,7 @@ func (x *AddQANPostgreSQLPgStatMonitorAgentParams) String() string { func (*AddQANPostgreSQLPgStatMonitorAgentParams) ProtoMessage() {} func (x *AddQANPostgreSQLPgStatMonitorAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[52] + mi := &file_inventory_v1_agents_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9088,7 +9249,7 @@ func (x *AddQANPostgreSQLPgStatMonitorAgentParams) ProtoReflect() protoreflect.M // Deprecated: Use AddQANPostgreSQLPgStatMonitorAgentParams.ProtoReflect.Descriptor instead. func (*AddQANPostgreSQLPgStatMonitorAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{52} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{53} } func (x *AddQANPostgreSQLPgStatMonitorAgentParams) GetPmmAgentId() string { @@ -9234,7 +9395,7 @@ type ChangeQANPostgreSQLPgStatMonitorAgentParams struct { func (x *ChangeQANPostgreSQLPgStatMonitorAgentParams) Reset() { *x = ChangeQANPostgreSQLPgStatMonitorAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[53] + mi := &file_inventory_v1_agents_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9246,7 +9407,7 @@ func (x *ChangeQANPostgreSQLPgStatMonitorAgentParams) String() string { func (*ChangeQANPostgreSQLPgStatMonitorAgentParams) ProtoMessage() {} func (x *ChangeQANPostgreSQLPgStatMonitorAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[53] + mi := &file_inventory_v1_agents_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9259,7 +9420,7 @@ func (x *ChangeQANPostgreSQLPgStatMonitorAgentParams) ProtoReflect() protoreflec // Deprecated: Use ChangeQANPostgreSQLPgStatMonitorAgentParams.ProtoReflect.Descriptor instead. func (*ChangeQANPostgreSQLPgStatMonitorAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{53} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{54} } func (x *ChangeQANPostgreSQLPgStatMonitorAgentParams) GetEnable() bool { @@ -9395,7 +9556,7 @@ type AddRDSExporterParams struct { func (x *AddRDSExporterParams) Reset() { *x = AddRDSExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[54] + mi := &file_inventory_v1_agents_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9407,7 +9568,7 @@ func (x *AddRDSExporterParams) String() string { func (*AddRDSExporterParams) ProtoMessage() {} func (x *AddRDSExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[54] + mi := &file_inventory_v1_agents_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9420,7 +9581,7 @@ func (x *AddRDSExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRDSExporterParams.ProtoReflect.Descriptor instead. func (*AddRDSExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{54} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{55} } func (x *AddRDSExporterParams) GetPmmAgentId() string { @@ -9519,7 +9680,7 @@ type ChangeRDSExporterParams struct { func (x *ChangeRDSExporterParams) Reset() { *x = ChangeRDSExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[55] + mi := &file_inventory_v1_agents_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9531,7 +9692,7 @@ func (x *ChangeRDSExporterParams) String() string { func (*ChangeRDSExporterParams) ProtoMessage() {} func (x *ChangeRDSExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[55] + mi := &file_inventory_v1_agents_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9544,7 +9705,7 @@ func (x *ChangeRDSExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeRDSExporterParams.ProtoReflect.Descriptor instead. func (*ChangeRDSExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{55} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{56} } func (x *ChangeRDSExporterParams) GetEnable() bool { @@ -9638,7 +9799,7 @@ type AddExternalExporterParams struct { func (x *AddExternalExporterParams) Reset() { *x = AddExternalExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[56] + mi := &file_inventory_v1_agents_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9650,7 +9811,7 @@ func (x *AddExternalExporterParams) String() string { func (*AddExternalExporterParams) ProtoMessage() {} func (x *AddExternalExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[56] + mi := &file_inventory_v1_agents_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9663,7 +9824,7 @@ func (x *AddExternalExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddExternalExporterParams.ProtoReflect.Descriptor instead. func (*AddExternalExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{56} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{57} } func (x *AddExternalExporterParams) GetRunsOnNodeId() string { @@ -9760,7 +9921,7 @@ type ChangeExternalExporterParams struct { func (x *ChangeExternalExporterParams) Reset() { *x = ChangeExternalExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[57] + mi := &file_inventory_v1_agents_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9772,7 +9933,7 @@ func (x *ChangeExternalExporterParams) String() string { func (*ChangeExternalExporterParams) ProtoMessage() {} func (x *ChangeExternalExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[57] + mi := &file_inventory_v1_agents_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9785,7 +9946,7 @@ func (x *ChangeExternalExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeExternalExporterParams.ProtoReflect.Descriptor instead. func (*ChangeExternalExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{57} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{58} } func (x *ChangeExternalExporterParams) GetEnable() bool { @@ -9876,7 +10037,7 @@ type AddAzureDatabaseExporterParams struct { func (x *AddAzureDatabaseExporterParams) Reset() { *x = AddAzureDatabaseExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[58] + mi := &file_inventory_v1_agents_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -9888,7 +10049,7 @@ func (x *AddAzureDatabaseExporterParams) String() string { func (*AddAzureDatabaseExporterParams) ProtoMessage() {} func (x *AddAzureDatabaseExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[58] + mi := &file_inventory_v1_agents_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -9901,7 +10062,7 @@ func (x *AddAzureDatabaseExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddAzureDatabaseExporterParams.ProtoReflect.Descriptor instead. func (*AddAzureDatabaseExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{58} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{59} } func (x *AddAzureDatabaseExporterParams) GetPmmAgentId() string { @@ -10016,7 +10177,7 @@ type ChangeAzureDatabaseExporterParams struct { func (x *ChangeAzureDatabaseExporterParams) Reset() { *x = ChangeAzureDatabaseExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[59] + mi := &file_inventory_v1_agents_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10028,7 +10189,7 @@ func (x *ChangeAzureDatabaseExporterParams) String() string { func (*ChangeAzureDatabaseExporterParams) ProtoMessage() {} func (x *ChangeAzureDatabaseExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[59] + mi := &file_inventory_v1_agents_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10041,7 +10202,7 @@ func (x *ChangeAzureDatabaseExporterParams) ProtoReflect() protoreflect.Message // Deprecated: Use ChangeAzureDatabaseExporterParams.ProtoReflect.Descriptor instead. func (*ChangeAzureDatabaseExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{59} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{60} } func (x *ChangeAzureDatabaseExporterParams) GetEnable() bool { @@ -10124,7 +10285,7 @@ type ChangeNomadAgentParams struct { func (x *ChangeNomadAgentParams) Reset() { *x = ChangeNomadAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[60] + mi := &file_inventory_v1_agents_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10136,7 +10297,7 @@ func (x *ChangeNomadAgentParams) String() string { func (*ChangeNomadAgentParams) ProtoMessage() {} func (x *ChangeNomadAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[60] + mi := &file_inventory_v1_agents_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10149,7 +10310,7 @@ func (x *ChangeNomadAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeNomadAgentParams.ProtoReflect.Descriptor instead. func (*ChangeNomadAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{60} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{61} } func (x *ChangeNomadAgentParams) GetEnable() bool { @@ -10201,7 +10362,7 @@ type AddValkeyExporterParams struct { func (x *AddValkeyExporterParams) Reset() { *x = AddValkeyExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[61] + mi := &file_inventory_v1_agents_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10213,7 +10374,7 @@ func (x *AddValkeyExporterParams) String() string { func (*AddValkeyExporterParams) ProtoMessage() {} func (x *AddValkeyExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[61] + mi := &file_inventory_v1_agents_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10226,7 +10387,7 @@ func (x *AddValkeyExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddValkeyExporterParams.ProtoReflect.Descriptor instead. func (*AddValkeyExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{61} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{62} } func (x *AddValkeyExporterParams) GetPmmAgentId() string { @@ -10388,7 +10549,7 @@ type ChangeValkeyExporterParams struct { func (x *ChangeValkeyExporterParams) Reset() { *x = ChangeValkeyExporterParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[62] + mi := &file_inventory_v1_agents_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10400,7 +10561,7 @@ func (x *ChangeValkeyExporterParams) String() string { func (*ChangeValkeyExporterParams) ProtoMessage() {} func (x *ChangeValkeyExporterParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[62] + mi := &file_inventory_v1_agents_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10413,7 +10574,7 @@ func (x *ChangeValkeyExporterParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeValkeyExporterParams.ProtoReflect.Descriptor instead. func (*ChangeValkeyExporterParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{62} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{63} } func (x *ChangeValkeyExporterParams) GetEnable() bool { @@ -10567,7 +10728,7 @@ type AddRTAMongoDBAgentParams struct { func (x *AddRTAMongoDBAgentParams) Reset() { *x = AddRTAMongoDBAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[63] + mi := &file_inventory_v1_agents_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10579,7 +10740,7 @@ func (x *AddRTAMongoDBAgentParams) String() string { func (*AddRTAMongoDBAgentParams) ProtoMessage() {} func (x *AddRTAMongoDBAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[63] + mi := &file_inventory_v1_agents_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10592,7 +10753,7 @@ func (x *AddRTAMongoDBAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use AddRTAMongoDBAgentParams.ProtoReflect.Descriptor instead. func (*AddRTAMongoDBAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{63} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{64} } func (x *AddRTAMongoDBAgentParams) GetPmmAgentId() string { @@ -10725,7 +10886,7 @@ type ChangeRTAMongoDBAgentParams struct { func (x *ChangeRTAMongoDBAgentParams) Reset() { *x = ChangeRTAMongoDBAgentParams{} - mi := &file_inventory_v1_agents_proto_msgTypes[64] + mi := &file_inventory_v1_agents_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10737,7 +10898,7 @@ func (x *ChangeRTAMongoDBAgentParams) String() string { func (*ChangeRTAMongoDBAgentParams) ProtoMessage() {} func (x *ChangeRTAMongoDBAgentParams) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[64] + mi := &file_inventory_v1_agents_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10750,7 +10911,7 @@ func (x *ChangeRTAMongoDBAgentParams) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeRTAMongoDBAgentParams.ProtoReflect.Descriptor instead. func (*ChangeRTAMongoDBAgentParams) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{64} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{65} } func (x *ChangeRTAMongoDBAgentParams) GetEnable() bool { @@ -10848,7 +11009,7 @@ type RemoveAgentRequest struct { func (x *RemoveAgentRequest) Reset() { *x = RemoveAgentRequest{} - mi := &file_inventory_v1_agents_proto_msgTypes[65] + mi := &file_inventory_v1_agents_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10860,7 +11021,7 @@ func (x *RemoveAgentRequest) String() string { func (*RemoveAgentRequest) ProtoMessage() {} func (x *RemoveAgentRequest) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[65] + mi := &file_inventory_v1_agents_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10873,7 +11034,7 @@ func (x *RemoveAgentRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAgentRequest.ProtoReflect.Descriptor instead. func (*RemoveAgentRequest) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{65} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{66} } func (x *RemoveAgentRequest) GetAgentId() string { @@ -10898,7 +11059,7 @@ type RemoveAgentResponse struct { func (x *RemoveAgentResponse) Reset() { *x = RemoveAgentResponse{} - mi := &file_inventory_v1_agents_proto_msgTypes[66] + mi := &file_inventory_v1_agents_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -10910,7 +11071,7 @@ func (x *RemoveAgentResponse) String() string { func (*RemoveAgentResponse) ProtoMessage() {} func (x *RemoveAgentResponse) ProtoReflect() protoreflect.Message { - mi := &file_inventory_v1_agents_proto_msgTypes[66] + mi := &file_inventory_v1_agents_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -10923,7 +11084,7 @@ func (x *RemoveAgentResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveAgentResponse.ProtoReflect.Descriptor instead. func (*RemoveAgentResponse) Descriptor() ([]byte, []int) { - return file_inventory_v1_agents_proto_rawDescGZIP(), []int{66} + return file_inventory_v1_agents_proto_rawDescGZIP(), []int{67} } var File_inventory_v1_agents_proto protoreflect.FileDescriptor @@ -11238,6 +11399,25 @@ const file_inventory_v1_agents_proto_rawDesc = "" + "\tlog_level\x18\v \x01(\x0e2\x16.inventory.v1.LogLevelR\blogLevel\x1a?\n" + "\x11CustomLabelsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x9b\x04\n" + + "\rRTAMySQLAgent\x12\x19\n" + + "\bagent_id\x18\x01 \x01(\tR\aagentId\x12 \n" + + "\fpmm_agent_id\x18\x02 \x01(\tR\n" + + "pmmAgentId\x12\x1a\n" + + "\bdisabled\x18\x03 \x01(\bR\bdisabled\x12\x1d\n" + + "\n" + + "service_id\x18\x04 \x01(\tR\tserviceId\x12 \n" + + "\busername\x18\x05 \x01(\tB\x04\x88\xb5\x18\x01R\busername\x12\x10\n" + + "\x03tls\x18\x06 \x01(\bR\x03tls\x12&\n" + + "\x0ftls_skip_verify\x18\a \x01(\bR\rtlsSkipVerify\x12R\n" + + "\rcustom_labels\x18\b \x03(\v2-.inventory.v1.RTAMySQLAgent.CustomLabelsEntryR\fcustomLabels\x129\n" + + "\vrta_options\x18\t \x01(\v2\x18.inventory.v1.RTAOptionsR\n" + + "rtaOptions\x121\n" + + "\x06status\x18\n" + + " \x01(\x0e2\x19.inventory.v1.AgentStatusR\x06status\x123\n" + + "\tlog_level\x18\v \x01(\x0e2\x16.inventory.v1.LogLevelR\blogLevel\x1a?\n" + + "\x11CustomLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x92\x05\n" + "\x1eQANPostgreSQLPgStatementsAgent\x12\x19\n" + "\bagent_id\x18\x01 \x01(\tR\aagentId\x12 \n" + @@ -11358,7 +11538,7 @@ const file_inventory_v1_agents_proto_rawDesc = "" + "\n" + "service_id\x18\x03 \x01(\tR\tserviceId\x126\n" + "\n" + - "agent_type\x18\x04 \x01(\x0e2\x17.inventory.v1.AgentTypeR\tagentType\"\x98\f\n" + + "agent_type\x18\x04 \x01(\x0e2\x17.inventory.v1.AgentTypeR\tagentType\"\xdd\f\n" + "\x12ListAgentsResponse\x123\n" + "\tpmm_agent\x18\x01 \x03(\v2\x16.inventory.v1.PMMAgentR\bpmmAgent\x120\n" + "\bvm_agent\x18\x02 \x03(\v2\x15.inventory.v1.VMAgentR\avmAgent\x12?\n" + @@ -11380,9 +11560,10 @@ const file_inventory_v1_agents_proto_rawDesc = "" + "\vnomad_agent\x18\x10 \x03(\v2\x18.inventory.v1.NomadAgentR\n" + "nomadAgent\x12E\n" + "\x0fvalkey_exporter\x18\x11 \x03(\v2\x1c.inventory.v1.ValkeyExporterR\x0evalkeyExporter\x12I\n" + - "\x11rta_mongodb_agent\x18\x13 \x03(\v2\x1d.inventory.v1.RTAMongoDBAgentR\x0frtaMongodbAgent\"5\n" + + "\x11rta_mongodb_agent\x18\x13 \x03(\v2\x1d.inventory.v1.RTAMongoDBAgentR\x0frtaMongodbAgent\x12C\n" + + "\x0frta_mysql_agent\x18\x14 \x03(\v2\x1b.inventory.v1.RTAMySQLAgentR\rrtaMysqlAgent\"5\n" + "\x0fGetAgentRequest\x12\"\n" + - "\bagent_id\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10$R\aagentId\"\xc4\f\n" + + "\bagent_id\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10$R\aagentId\"\x8b\r\n" + "\x10GetAgentResponse\x125\n" + "\tpmm_agent\x18\x01 \x01(\v2\x16.inventory.v1.PMMAgentH\x00R\bpmmAgent\x121\n" + "\avmagent\x18\x02 \x01(\v2\x15.inventory.v1.VMAgentH\x00R\avmagent\x12A\n" + @@ -11404,7 +11585,8 @@ const file_inventory_v1_agents_proto_rawDesc = "" + "\vnomad_agent\x18\x10 \x01(\v2\x18.inventory.v1.NomadAgentH\x00R\n" + "nomadAgent\x12G\n" + "\x0fvalkey_exporter\x18\x11 \x01(\v2\x1c.inventory.v1.ValkeyExporterH\x00R\x0evalkeyExporter\x12K\n" + - "\x11rta_mongodb_agent\x18\x13 \x01(\v2\x1d.inventory.v1.RTAMongoDBAgentH\x00R\x0frtaMongodbAgentB\a\n" + + "\x11rta_mongodb_agent\x18\x13 \x01(\v2\x1d.inventory.v1.RTAMongoDBAgentH\x00R\x0frtaMongodbAgent\x12E\n" + + "\x0frta_mysql_agent\x18\x14 \x01(\v2\x1b.inventory.v1.RTAMySQLAgentH\x00R\rrtaMysqlAgentB\a\n" + "\x05agent\"O\n" + "\x13GetAgentLogsRequest\x12\"\n" + "\bagent_id\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10$R\aagentId\x12\x14\n" + @@ -12349,7 +12531,7 @@ const file_inventory_v1_agents_proto_rawDesc = "" + "\x12RemoveAgentRequest\x12\"\n" + "\bagent_id\x18\x01 \x01(\tB\a\xfaB\x04r\x02\x10\x01R\aagentId\x12\x14\n" + "\x05force\x18\x02 \x01(\bR\x05force\"\x15\n" + - "\x13RemoveAgentResponse*\xd0\x05\n" + + "\x13RemoveAgentResponse*\xf0\x05\n" + "\tAgentType\x12\x1a\n" + "\x16AGENT_TYPE_UNSPECIFIED\x10\x00\x12\x18\n" + "\x14AGENT_TYPE_PMM_AGENT\x10\x01\x12\x17\n" + @@ -12371,7 +12553,8 @@ const file_inventory_v1_agents_proto_rawDesc = "" + "\x17AGENT_TYPE_RDS_EXPORTER\x10\v\x12&\n" + "\"AGENT_TYPE_AZURE_DATABASE_EXPORTER\x10\x0f\x12\x1a\n" + "\x16AGENT_TYPE_NOMAD_AGENT\x10\x10\x12 \n" + - "\x1cAGENT_TYPE_RTA_MONGODB_AGENT\x10\x132\x83\t\n" + + "\x1cAGENT_TYPE_RTA_MONGODB_AGENT\x10\x13\x12\x1e\n" + + "\x1aAGENT_TYPE_RTA_MYSQL_AGENT\x10\x142\x83\t\n" + "\rAgentsService\x12\x9c\x01\n" + "\n" + "ListAgents\x12\x1f.inventory.v1.ListAgentsRequest\x1a .inventory.v1.ListAgentsResponse\"K\x92A,\x12\vList Agents\x1a\x1dReturns a list of all Agents.\x82\xd3\xe4\x93\x02\x16\x12\x14/v1/inventory/agents\x12\x9f\x01\n" + @@ -12394,414 +12577,419 @@ func file_inventory_v1_agents_proto_rawDescGZIP() []byte { return file_inventory_v1_agents_proto_rawDescData } -var ( - file_inventory_v1_agents_proto_enumTypes = make([]protoimpl.EnumInfo, 1) - file_inventory_v1_agents_proto_msgTypes = make([]protoimpl.MessageInfo, 107) - file_inventory_v1_agents_proto_goTypes = []any{ - AgentType(0), // 0: inventory.v1.AgentType - (*PMMAgent)(nil), // 1: inventory.v1.PMMAgent - (*VMAgent)(nil), // 2: inventory.v1.VMAgent - (*NomadAgent)(nil), // 3: inventory.v1.NomadAgent - (*NodeExporter)(nil), // 4: inventory.v1.NodeExporter - (*MySQLdExporter)(nil), // 5: inventory.v1.MySQLdExporter - (*MongoDBExporter)(nil), // 6: inventory.v1.MongoDBExporter - (*PostgresExporter)(nil), // 7: inventory.v1.PostgresExporter - (*ProxySQLExporter)(nil), // 8: inventory.v1.ProxySQLExporter - (*ValkeyExporter)(nil), // 9: inventory.v1.ValkeyExporter - (*QANMySQLPerfSchemaAgent)(nil), // 10: inventory.v1.QANMySQLPerfSchemaAgent - (*QANMySQLSlowlogAgent)(nil), // 11: inventory.v1.QANMySQLSlowlogAgent - (*QANMongoDBProfilerAgent)(nil), // 12: inventory.v1.QANMongoDBProfilerAgent - (*QANMongoDBMongologAgent)(nil), // 13: inventory.v1.QANMongoDBMongologAgent - (*RTAOptions)(nil), // 14: inventory.v1.RTAOptions - (*RTAMongoDBAgent)(nil), // 15: inventory.v1.RTAMongoDBAgent - (*QANPostgreSQLPgStatementsAgent)(nil), // 16: inventory.v1.QANPostgreSQLPgStatementsAgent - (*QANPostgreSQLPgStatMonitorAgent)(nil), // 17: inventory.v1.QANPostgreSQLPgStatMonitorAgent - (*RDSExporter)(nil), // 18: inventory.v1.RDSExporter - (*ExternalExporter)(nil), // 19: inventory.v1.ExternalExporter - (*AzureDatabaseExporter)(nil), // 20: inventory.v1.AzureDatabaseExporter - (*ChangeCommonAgentParams)(nil), // 21: inventory.v1.ChangeCommonAgentParams - (*ListAgentsRequest)(nil), // 22: inventory.v1.ListAgentsRequest - (*ListAgentsResponse)(nil), // 23: inventory.v1.ListAgentsResponse - (*GetAgentRequest)(nil), // 24: inventory.v1.GetAgentRequest - (*GetAgentResponse)(nil), // 25: inventory.v1.GetAgentResponse - (*GetAgentLogsRequest)(nil), // 26: inventory.v1.GetAgentLogsRequest - (*GetAgentLogsResponse)(nil), // 27: inventory.v1.GetAgentLogsResponse - (*AddAgentRequest)(nil), // 28: inventory.v1.AddAgentRequest - (*AddAgentResponse)(nil), // 29: inventory.v1.AddAgentResponse - (*ChangeAgentRequest)(nil), // 30: inventory.v1.ChangeAgentRequest - (*ChangeAgentResponse)(nil), // 31: inventory.v1.ChangeAgentResponse - (*AddPMMAgentParams)(nil), // 32: inventory.v1.AddPMMAgentParams - (*AddNodeExporterParams)(nil), // 33: inventory.v1.AddNodeExporterParams - (*ChangeNodeExporterParams)(nil), // 34: inventory.v1.ChangeNodeExporterParams - (*AddMySQLdExporterParams)(nil), // 35: inventory.v1.AddMySQLdExporterParams - (*ChangeMySQLdExporterParams)(nil), // 36: inventory.v1.ChangeMySQLdExporterParams - (*AddMongoDBExporterParams)(nil), // 37: inventory.v1.AddMongoDBExporterParams - (*ChangeMongoDBExporterParams)(nil), // 38: inventory.v1.ChangeMongoDBExporterParams - (*AddPostgresExporterParams)(nil), // 39: inventory.v1.AddPostgresExporterParams - (*ChangePostgresExporterParams)(nil), // 40: inventory.v1.ChangePostgresExporterParams - (*AddProxySQLExporterParams)(nil), // 41: inventory.v1.AddProxySQLExporterParams - (*ChangeProxySQLExporterParams)(nil), // 42: inventory.v1.ChangeProxySQLExporterParams - (*AddQANMySQLPerfSchemaAgentParams)(nil), // 43: inventory.v1.AddQANMySQLPerfSchemaAgentParams - (*ChangeQANMySQLPerfSchemaAgentParams)(nil), // 44: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams - (*AddQANMySQLSlowlogAgentParams)(nil), // 45: inventory.v1.AddQANMySQLSlowlogAgentParams - (*ChangeQANMySQLSlowlogAgentParams)(nil), // 46: inventory.v1.ChangeQANMySQLSlowlogAgentParams - (*AddQANMongoDBProfilerAgentParams)(nil), // 47: inventory.v1.AddQANMongoDBProfilerAgentParams - (*ChangeQANMongoDBProfilerAgentParams)(nil), // 48: inventory.v1.ChangeQANMongoDBProfilerAgentParams - (*AddQANMongoDBMongologAgentParams)(nil), // 49: inventory.v1.AddQANMongoDBMongologAgentParams - (*ChangeQANMongoDBMongologAgentParams)(nil), // 50: inventory.v1.ChangeQANMongoDBMongologAgentParams - (*AddQANPostgreSQLPgStatementsAgentParams)(nil), // 51: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams - (*ChangeQANPostgreSQLPgStatementsAgentParams)(nil), // 52: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams - (*AddQANPostgreSQLPgStatMonitorAgentParams)(nil), // 53: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams - (*ChangeQANPostgreSQLPgStatMonitorAgentParams)(nil), // 54: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams - (*AddRDSExporterParams)(nil), // 55: inventory.v1.AddRDSExporterParams - (*ChangeRDSExporterParams)(nil), // 56: inventory.v1.ChangeRDSExporterParams - (*AddExternalExporterParams)(nil), // 57: inventory.v1.AddExternalExporterParams - (*ChangeExternalExporterParams)(nil), // 58: inventory.v1.ChangeExternalExporterParams - (*AddAzureDatabaseExporterParams)(nil), // 59: inventory.v1.AddAzureDatabaseExporterParams - (*ChangeAzureDatabaseExporterParams)(nil), // 60: inventory.v1.ChangeAzureDatabaseExporterParams - (*ChangeNomadAgentParams)(nil), // 61: inventory.v1.ChangeNomadAgentParams - (*AddValkeyExporterParams)(nil), // 62: inventory.v1.AddValkeyExporterParams - (*ChangeValkeyExporterParams)(nil), // 63: inventory.v1.ChangeValkeyExporterParams - (*AddRTAMongoDBAgentParams)(nil), // 64: inventory.v1.AddRTAMongoDBAgentParams - (*ChangeRTAMongoDBAgentParams)(nil), // 65: inventory.v1.ChangeRTAMongoDBAgentParams - (*RemoveAgentRequest)(nil), // 66: inventory.v1.RemoveAgentRequest - (*RemoveAgentResponse)(nil), // 67: inventory.v1.RemoveAgentResponse - nil, // 68: inventory.v1.PMMAgent.CustomLabelsEntry - nil, // 69: inventory.v1.NodeExporter.CustomLabelsEntry - nil, // 70: inventory.v1.MySQLdExporter.CustomLabelsEntry - nil, // 71: inventory.v1.MySQLdExporter.ExtraDsnParamsEntry - nil, // 72: inventory.v1.MongoDBExporter.CustomLabelsEntry - nil, // 73: inventory.v1.PostgresExporter.CustomLabelsEntry - nil, // 74: inventory.v1.ProxySQLExporter.CustomLabelsEntry - nil, // 75: inventory.v1.ValkeyExporter.CustomLabelsEntry - nil, // 76: inventory.v1.QANMySQLPerfSchemaAgent.CustomLabelsEntry - nil, // 77: inventory.v1.QANMySQLPerfSchemaAgent.ExtraDsnParamsEntry - nil, // 78: inventory.v1.QANMySQLSlowlogAgent.CustomLabelsEntry - nil, // 79: inventory.v1.QANMySQLSlowlogAgent.ExtraDsnParamsEntry - nil, // 80: inventory.v1.QANMongoDBProfilerAgent.CustomLabelsEntry - nil, // 81: inventory.v1.QANMongoDBMongologAgent.CustomLabelsEntry - nil, // 82: inventory.v1.RTAMongoDBAgent.CustomLabelsEntry - nil, // 83: inventory.v1.QANPostgreSQLPgStatementsAgent.CustomLabelsEntry - nil, // 84: inventory.v1.QANPostgreSQLPgStatMonitorAgent.CustomLabelsEntry - nil, // 85: inventory.v1.RDSExporter.CustomLabelsEntry - nil, // 86: inventory.v1.ExternalExporter.CustomLabelsEntry - nil, // 87: inventory.v1.AzureDatabaseExporter.CustomLabelsEntry - nil, // 88: inventory.v1.AddPMMAgentParams.CustomLabelsEntry - nil, // 89: inventory.v1.AddNodeExporterParams.CustomLabelsEntry - nil, // 90: inventory.v1.AddMySQLdExporterParams.CustomLabelsEntry - nil, // 91: inventory.v1.AddMySQLdExporterParams.ExtraDsnParamsEntry - nil, // 92: inventory.v1.AddMongoDBExporterParams.CustomLabelsEntry - nil, // 93: inventory.v1.AddPostgresExporterParams.CustomLabelsEntry - nil, // 94: inventory.v1.AddProxySQLExporterParams.CustomLabelsEntry - nil, // 95: inventory.v1.AddQANMySQLPerfSchemaAgentParams.CustomLabelsEntry - nil, // 96: inventory.v1.AddQANMySQLPerfSchemaAgentParams.ExtraDsnParamsEntry - nil, // 97: inventory.v1.AddQANMySQLSlowlogAgentParams.CustomLabelsEntry - nil, // 98: inventory.v1.AddQANMySQLSlowlogAgentParams.ExtraDsnParamsEntry - nil, // 99: inventory.v1.AddQANMongoDBProfilerAgentParams.CustomLabelsEntry - nil, // 100: inventory.v1.AddQANMongoDBMongologAgentParams.CustomLabelsEntry - nil, // 101: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.CustomLabelsEntry - nil, // 102: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.CustomLabelsEntry - nil, // 103: inventory.v1.AddRDSExporterParams.CustomLabelsEntry - nil, // 104: inventory.v1.AddExternalExporterParams.CustomLabelsEntry - nil, // 105: inventory.v1.AddAzureDatabaseExporterParams.CustomLabelsEntry - nil, // 106: inventory.v1.AddValkeyExporterParams.CustomLabelsEntry - nil, // 107: inventory.v1.AddRTAMongoDBAgentParams.CustomLabelsEntry - AgentStatus(0), // 108: inventory.v1.AgentStatus - LogLevel(0), // 109: inventory.v1.LogLevel - (*common.MetricsResolutions)(nil), // 110: common.MetricsResolutions - (*durationpb.Duration)(nil), // 111: google.protobuf.Duration - (*common.StringMap)(nil), // 112: common.StringMap - } -) - +var file_inventory_v1_agents_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_inventory_v1_agents_proto_msgTypes = make([]protoimpl.MessageInfo, 109) +var file_inventory_v1_agents_proto_goTypes = []any{ + (AgentType)(0), // 0: inventory.v1.AgentType + (*PMMAgent)(nil), // 1: inventory.v1.PMMAgent + (*VMAgent)(nil), // 2: inventory.v1.VMAgent + (*NomadAgent)(nil), // 3: inventory.v1.NomadAgent + (*NodeExporter)(nil), // 4: inventory.v1.NodeExporter + (*MySQLdExporter)(nil), // 5: inventory.v1.MySQLdExporter + (*MongoDBExporter)(nil), // 6: inventory.v1.MongoDBExporter + (*PostgresExporter)(nil), // 7: inventory.v1.PostgresExporter + (*ProxySQLExporter)(nil), // 8: inventory.v1.ProxySQLExporter + (*ValkeyExporter)(nil), // 9: inventory.v1.ValkeyExporter + (*QANMySQLPerfSchemaAgent)(nil), // 10: inventory.v1.QANMySQLPerfSchemaAgent + (*QANMySQLSlowlogAgent)(nil), // 11: inventory.v1.QANMySQLSlowlogAgent + (*QANMongoDBProfilerAgent)(nil), // 12: inventory.v1.QANMongoDBProfilerAgent + (*QANMongoDBMongologAgent)(nil), // 13: inventory.v1.QANMongoDBMongologAgent + (*RTAOptions)(nil), // 14: inventory.v1.RTAOptions + (*RTAMongoDBAgent)(nil), // 15: inventory.v1.RTAMongoDBAgent + (*RTAMySQLAgent)(nil), // 16: inventory.v1.RTAMySQLAgent + (*QANPostgreSQLPgStatementsAgent)(nil), // 17: inventory.v1.QANPostgreSQLPgStatementsAgent + (*QANPostgreSQLPgStatMonitorAgent)(nil), // 18: inventory.v1.QANPostgreSQLPgStatMonitorAgent + (*RDSExporter)(nil), // 19: inventory.v1.RDSExporter + (*ExternalExporter)(nil), // 20: inventory.v1.ExternalExporter + (*AzureDatabaseExporter)(nil), // 21: inventory.v1.AzureDatabaseExporter + (*ChangeCommonAgentParams)(nil), // 22: inventory.v1.ChangeCommonAgentParams + (*ListAgentsRequest)(nil), // 23: inventory.v1.ListAgentsRequest + (*ListAgentsResponse)(nil), // 24: inventory.v1.ListAgentsResponse + (*GetAgentRequest)(nil), // 25: inventory.v1.GetAgentRequest + (*GetAgentResponse)(nil), // 26: inventory.v1.GetAgentResponse + (*GetAgentLogsRequest)(nil), // 27: inventory.v1.GetAgentLogsRequest + (*GetAgentLogsResponse)(nil), // 28: inventory.v1.GetAgentLogsResponse + (*AddAgentRequest)(nil), // 29: inventory.v1.AddAgentRequest + (*AddAgentResponse)(nil), // 30: inventory.v1.AddAgentResponse + (*ChangeAgentRequest)(nil), // 31: inventory.v1.ChangeAgentRequest + (*ChangeAgentResponse)(nil), // 32: inventory.v1.ChangeAgentResponse + (*AddPMMAgentParams)(nil), // 33: inventory.v1.AddPMMAgentParams + (*AddNodeExporterParams)(nil), // 34: inventory.v1.AddNodeExporterParams + (*ChangeNodeExporterParams)(nil), // 35: inventory.v1.ChangeNodeExporterParams + (*AddMySQLdExporterParams)(nil), // 36: inventory.v1.AddMySQLdExporterParams + (*ChangeMySQLdExporterParams)(nil), // 37: inventory.v1.ChangeMySQLdExporterParams + (*AddMongoDBExporterParams)(nil), // 38: inventory.v1.AddMongoDBExporterParams + (*ChangeMongoDBExporterParams)(nil), // 39: inventory.v1.ChangeMongoDBExporterParams + (*AddPostgresExporterParams)(nil), // 40: inventory.v1.AddPostgresExporterParams + (*ChangePostgresExporterParams)(nil), // 41: inventory.v1.ChangePostgresExporterParams + (*AddProxySQLExporterParams)(nil), // 42: inventory.v1.AddProxySQLExporterParams + (*ChangeProxySQLExporterParams)(nil), // 43: inventory.v1.ChangeProxySQLExporterParams + (*AddQANMySQLPerfSchemaAgentParams)(nil), // 44: inventory.v1.AddQANMySQLPerfSchemaAgentParams + (*ChangeQANMySQLPerfSchemaAgentParams)(nil), // 45: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams + (*AddQANMySQLSlowlogAgentParams)(nil), // 46: inventory.v1.AddQANMySQLSlowlogAgentParams + (*ChangeQANMySQLSlowlogAgentParams)(nil), // 47: inventory.v1.ChangeQANMySQLSlowlogAgentParams + (*AddQANMongoDBProfilerAgentParams)(nil), // 48: inventory.v1.AddQANMongoDBProfilerAgentParams + (*ChangeQANMongoDBProfilerAgentParams)(nil), // 49: inventory.v1.ChangeQANMongoDBProfilerAgentParams + (*AddQANMongoDBMongologAgentParams)(nil), // 50: inventory.v1.AddQANMongoDBMongologAgentParams + (*ChangeQANMongoDBMongologAgentParams)(nil), // 51: inventory.v1.ChangeQANMongoDBMongologAgentParams + (*AddQANPostgreSQLPgStatementsAgentParams)(nil), // 52: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams + (*ChangeQANPostgreSQLPgStatementsAgentParams)(nil), // 53: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams + (*AddQANPostgreSQLPgStatMonitorAgentParams)(nil), // 54: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams + (*ChangeQANPostgreSQLPgStatMonitorAgentParams)(nil), // 55: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams + (*AddRDSExporterParams)(nil), // 56: inventory.v1.AddRDSExporterParams + (*ChangeRDSExporterParams)(nil), // 57: inventory.v1.ChangeRDSExporterParams + (*AddExternalExporterParams)(nil), // 58: inventory.v1.AddExternalExporterParams + (*ChangeExternalExporterParams)(nil), // 59: inventory.v1.ChangeExternalExporterParams + (*AddAzureDatabaseExporterParams)(nil), // 60: inventory.v1.AddAzureDatabaseExporterParams + (*ChangeAzureDatabaseExporterParams)(nil), // 61: inventory.v1.ChangeAzureDatabaseExporterParams + (*ChangeNomadAgentParams)(nil), // 62: inventory.v1.ChangeNomadAgentParams + (*AddValkeyExporterParams)(nil), // 63: inventory.v1.AddValkeyExporterParams + (*ChangeValkeyExporterParams)(nil), // 64: inventory.v1.ChangeValkeyExporterParams + (*AddRTAMongoDBAgentParams)(nil), // 65: inventory.v1.AddRTAMongoDBAgentParams + (*ChangeRTAMongoDBAgentParams)(nil), // 66: inventory.v1.ChangeRTAMongoDBAgentParams + (*RemoveAgentRequest)(nil), // 67: inventory.v1.RemoveAgentRequest + (*RemoveAgentResponse)(nil), // 68: inventory.v1.RemoveAgentResponse + nil, // 69: inventory.v1.PMMAgent.CustomLabelsEntry + nil, // 70: inventory.v1.NodeExporter.CustomLabelsEntry + nil, // 71: inventory.v1.MySQLdExporter.CustomLabelsEntry + nil, // 72: inventory.v1.MySQLdExporter.ExtraDsnParamsEntry + nil, // 73: inventory.v1.MongoDBExporter.CustomLabelsEntry + nil, // 74: inventory.v1.PostgresExporter.CustomLabelsEntry + nil, // 75: inventory.v1.ProxySQLExporter.CustomLabelsEntry + nil, // 76: inventory.v1.ValkeyExporter.CustomLabelsEntry + nil, // 77: inventory.v1.QANMySQLPerfSchemaAgent.CustomLabelsEntry + nil, // 78: inventory.v1.QANMySQLPerfSchemaAgent.ExtraDsnParamsEntry + nil, // 79: inventory.v1.QANMySQLSlowlogAgent.CustomLabelsEntry + nil, // 80: inventory.v1.QANMySQLSlowlogAgent.ExtraDsnParamsEntry + nil, // 81: inventory.v1.QANMongoDBProfilerAgent.CustomLabelsEntry + nil, // 82: inventory.v1.QANMongoDBMongologAgent.CustomLabelsEntry + nil, // 83: inventory.v1.RTAMongoDBAgent.CustomLabelsEntry + nil, // 84: inventory.v1.RTAMySQLAgent.CustomLabelsEntry + nil, // 85: inventory.v1.QANPostgreSQLPgStatementsAgent.CustomLabelsEntry + nil, // 86: inventory.v1.QANPostgreSQLPgStatMonitorAgent.CustomLabelsEntry + nil, // 87: inventory.v1.RDSExporter.CustomLabelsEntry + nil, // 88: inventory.v1.ExternalExporter.CustomLabelsEntry + nil, // 89: inventory.v1.AzureDatabaseExporter.CustomLabelsEntry + nil, // 90: inventory.v1.AddPMMAgentParams.CustomLabelsEntry + nil, // 91: inventory.v1.AddNodeExporterParams.CustomLabelsEntry + nil, // 92: inventory.v1.AddMySQLdExporterParams.CustomLabelsEntry + nil, // 93: inventory.v1.AddMySQLdExporterParams.ExtraDsnParamsEntry + nil, // 94: inventory.v1.AddMongoDBExporterParams.CustomLabelsEntry + nil, // 95: inventory.v1.AddPostgresExporterParams.CustomLabelsEntry + nil, // 96: inventory.v1.AddProxySQLExporterParams.CustomLabelsEntry + nil, // 97: inventory.v1.AddQANMySQLPerfSchemaAgentParams.CustomLabelsEntry + nil, // 98: inventory.v1.AddQANMySQLPerfSchemaAgentParams.ExtraDsnParamsEntry + nil, // 99: inventory.v1.AddQANMySQLSlowlogAgentParams.CustomLabelsEntry + nil, // 100: inventory.v1.AddQANMySQLSlowlogAgentParams.ExtraDsnParamsEntry + nil, // 101: inventory.v1.AddQANMongoDBProfilerAgentParams.CustomLabelsEntry + nil, // 102: inventory.v1.AddQANMongoDBMongologAgentParams.CustomLabelsEntry + nil, // 103: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.CustomLabelsEntry + nil, // 104: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.CustomLabelsEntry + nil, // 105: inventory.v1.AddRDSExporterParams.CustomLabelsEntry + nil, // 106: inventory.v1.AddExternalExporterParams.CustomLabelsEntry + nil, // 107: inventory.v1.AddAzureDatabaseExporterParams.CustomLabelsEntry + nil, // 108: inventory.v1.AddValkeyExporterParams.CustomLabelsEntry + nil, // 109: inventory.v1.AddRTAMongoDBAgentParams.CustomLabelsEntry + (AgentStatus)(0), // 110: inventory.v1.AgentStatus + (LogLevel)(0), // 111: inventory.v1.LogLevel + (*common.MetricsResolutions)(nil), // 112: common.MetricsResolutions + (*durationpb.Duration)(nil), // 113: google.protobuf.Duration + (*common.StringMap)(nil), // 114: common.StringMap +} var file_inventory_v1_agents_proto_depIdxs = []int32{ - 68, // 0: inventory.v1.PMMAgent.custom_labels:type_name -> inventory.v1.PMMAgent.CustomLabelsEntry - 108, // 1: inventory.v1.VMAgent.status:type_name -> inventory.v1.AgentStatus - 108, // 2: inventory.v1.NomadAgent.status:type_name -> inventory.v1.AgentStatus - 69, // 3: inventory.v1.NodeExporter.custom_labels:type_name -> inventory.v1.NodeExporter.CustomLabelsEntry - 108, // 4: inventory.v1.NodeExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 5: inventory.v1.NodeExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 6: inventory.v1.NodeExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 70, // 7: inventory.v1.MySQLdExporter.custom_labels:type_name -> inventory.v1.MySQLdExporter.CustomLabelsEntry - 108, // 8: inventory.v1.MySQLdExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 9: inventory.v1.MySQLdExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 10: inventory.v1.MySQLdExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 71, // 11: inventory.v1.MySQLdExporter.extra_dsn_params:type_name -> inventory.v1.MySQLdExporter.ExtraDsnParamsEntry - 111, // 12: inventory.v1.MySQLdExporter.connection_timeout:type_name -> google.protobuf.Duration - 72, // 13: inventory.v1.MongoDBExporter.custom_labels:type_name -> inventory.v1.MongoDBExporter.CustomLabelsEntry - 108, // 14: inventory.v1.MongoDBExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 15: inventory.v1.MongoDBExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 16: inventory.v1.MongoDBExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 111, // 17: inventory.v1.MongoDBExporter.connection_timeout:type_name -> google.protobuf.Duration - 73, // 18: inventory.v1.PostgresExporter.custom_labels:type_name -> inventory.v1.PostgresExporter.CustomLabelsEntry - 108, // 19: inventory.v1.PostgresExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 20: inventory.v1.PostgresExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 21: inventory.v1.PostgresExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 111, // 22: inventory.v1.PostgresExporter.connection_timeout:type_name -> google.protobuf.Duration - 74, // 23: inventory.v1.ProxySQLExporter.custom_labels:type_name -> inventory.v1.ProxySQLExporter.CustomLabelsEntry - 108, // 24: inventory.v1.ProxySQLExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 25: inventory.v1.ProxySQLExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 26: inventory.v1.ProxySQLExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 111, // 27: inventory.v1.ProxySQLExporter.connection_timeout:type_name -> google.protobuf.Duration - 75, // 28: inventory.v1.ValkeyExporter.custom_labels:type_name -> inventory.v1.ValkeyExporter.CustomLabelsEntry - 108, // 29: inventory.v1.ValkeyExporter.status:type_name -> inventory.v1.AgentStatus - 110, // 30: inventory.v1.ValkeyExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 111, // 31: inventory.v1.ValkeyExporter.connection_timeout:type_name -> google.protobuf.Duration - 76, // 32: inventory.v1.QANMySQLPerfSchemaAgent.custom_labels:type_name -> inventory.v1.QANMySQLPerfSchemaAgent.CustomLabelsEntry - 108, // 33: inventory.v1.QANMySQLPerfSchemaAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 34: inventory.v1.QANMySQLPerfSchemaAgent.log_level:type_name -> inventory.v1.LogLevel - 77, // 35: inventory.v1.QANMySQLPerfSchemaAgent.extra_dsn_params:type_name -> inventory.v1.QANMySQLPerfSchemaAgent.ExtraDsnParamsEntry - 78, // 36: inventory.v1.QANMySQLSlowlogAgent.custom_labels:type_name -> inventory.v1.QANMySQLSlowlogAgent.CustomLabelsEntry - 108, // 37: inventory.v1.QANMySQLSlowlogAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 38: inventory.v1.QANMySQLSlowlogAgent.log_level:type_name -> inventory.v1.LogLevel - 79, // 39: inventory.v1.QANMySQLSlowlogAgent.extra_dsn_params:type_name -> inventory.v1.QANMySQLSlowlogAgent.ExtraDsnParamsEntry - 80, // 40: inventory.v1.QANMongoDBProfilerAgent.custom_labels:type_name -> inventory.v1.QANMongoDBProfilerAgent.CustomLabelsEntry - 108, // 41: inventory.v1.QANMongoDBProfilerAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 42: inventory.v1.QANMongoDBProfilerAgent.log_level:type_name -> inventory.v1.LogLevel - 81, // 43: inventory.v1.QANMongoDBMongologAgent.custom_labels:type_name -> inventory.v1.QANMongoDBMongologAgent.CustomLabelsEntry - 108, // 44: inventory.v1.QANMongoDBMongologAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 45: inventory.v1.QANMongoDBMongologAgent.log_level:type_name -> inventory.v1.LogLevel - 111, // 46: inventory.v1.RTAOptions.collect_interval:type_name -> google.protobuf.Duration - 82, // 47: inventory.v1.RTAMongoDBAgent.custom_labels:type_name -> inventory.v1.RTAMongoDBAgent.CustomLabelsEntry + 69, // 0: inventory.v1.PMMAgent.custom_labels:type_name -> inventory.v1.PMMAgent.CustomLabelsEntry + 110, // 1: inventory.v1.VMAgent.status:type_name -> inventory.v1.AgentStatus + 110, // 2: inventory.v1.NomadAgent.status:type_name -> inventory.v1.AgentStatus + 70, // 3: inventory.v1.NodeExporter.custom_labels:type_name -> inventory.v1.NodeExporter.CustomLabelsEntry + 110, // 4: inventory.v1.NodeExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 5: inventory.v1.NodeExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 6: inventory.v1.NodeExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 71, // 7: inventory.v1.MySQLdExporter.custom_labels:type_name -> inventory.v1.MySQLdExporter.CustomLabelsEntry + 110, // 8: inventory.v1.MySQLdExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 9: inventory.v1.MySQLdExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 10: inventory.v1.MySQLdExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 72, // 11: inventory.v1.MySQLdExporter.extra_dsn_params:type_name -> inventory.v1.MySQLdExporter.ExtraDsnParamsEntry + 113, // 12: inventory.v1.MySQLdExporter.connection_timeout:type_name -> google.protobuf.Duration + 73, // 13: inventory.v1.MongoDBExporter.custom_labels:type_name -> inventory.v1.MongoDBExporter.CustomLabelsEntry + 110, // 14: inventory.v1.MongoDBExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 15: inventory.v1.MongoDBExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 16: inventory.v1.MongoDBExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 113, // 17: inventory.v1.MongoDBExporter.connection_timeout:type_name -> google.protobuf.Duration + 74, // 18: inventory.v1.PostgresExporter.custom_labels:type_name -> inventory.v1.PostgresExporter.CustomLabelsEntry + 110, // 19: inventory.v1.PostgresExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 20: inventory.v1.PostgresExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 21: inventory.v1.PostgresExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 113, // 22: inventory.v1.PostgresExporter.connection_timeout:type_name -> google.protobuf.Duration + 75, // 23: inventory.v1.ProxySQLExporter.custom_labels:type_name -> inventory.v1.ProxySQLExporter.CustomLabelsEntry + 110, // 24: inventory.v1.ProxySQLExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 25: inventory.v1.ProxySQLExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 26: inventory.v1.ProxySQLExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 113, // 27: inventory.v1.ProxySQLExporter.connection_timeout:type_name -> google.protobuf.Duration + 76, // 28: inventory.v1.ValkeyExporter.custom_labels:type_name -> inventory.v1.ValkeyExporter.CustomLabelsEntry + 110, // 29: inventory.v1.ValkeyExporter.status:type_name -> inventory.v1.AgentStatus + 112, // 30: inventory.v1.ValkeyExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 113, // 31: inventory.v1.ValkeyExporter.connection_timeout:type_name -> google.protobuf.Duration + 77, // 32: inventory.v1.QANMySQLPerfSchemaAgent.custom_labels:type_name -> inventory.v1.QANMySQLPerfSchemaAgent.CustomLabelsEntry + 110, // 33: inventory.v1.QANMySQLPerfSchemaAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 34: inventory.v1.QANMySQLPerfSchemaAgent.log_level:type_name -> inventory.v1.LogLevel + 78, // 35: inventory.v1.QANMySQLPerfSchemaAgent.extra_dsn_params:type_name -> inventory.v1.QANMySQLPerfSchemaAgent.ExtraDsnParamsEntry + 79, // 36: inventory.v1.QANMySQLSlowlogAgent.custom_labels:type_name -> inventory.v1.QANMySQLSlowlogAgent.CustomLabelsEntry + 110, // 37: inventory.v1.QANMySQLSlowlogAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 38: inventory.v1.QANMySQLSlowlogAgent.log_level:type_name -> inventory.v1.LogLevel + 80, // 39: inventory.v1.QANMySQLSlowlogAgent.extra_dsn_params:type_name -> inventory.v1.QANMySQLSlowlogAgent.ExtraDsnParamsEntry + 81, // 40: inventory.v1.QANMongoDBProfilerAgent.custom_labels:type_name -> inventory.v1.QANMongoDBProfilerAgent.CustomLabelsEntry + 110, // 41: inventory.v1.QANMongoDBProfilerAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 42: inventory.v1.QANMongoDBProfilerAgent.log_level:type_name -> inventory.v1.LogLevel + 82, // 43: inventory.v1.QANMongoDBMongologAgent.custom_labels:type_name -> inventory.v1.QANMongoDBMongologAgent.CustomLabelsEntry + 110, // 44: inventory.v1.QANMongoDBMongologAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 45: inventory.v1.QANMongoDBMongologAgent.log_level:type_name -> inventory.v1.LogLevel + 113, // 46: inventory.v1.RTAOptions.collect_interval:type_name -> google.protobuf.Duration + 83, // 47: inventory.v1.RTAMongoDBAgent.custom_labels:type_name -> inventory.v1.RTAMongoDBAgent.CustomLabelsEntry 14, // 48: inventory.v1.RTAMongoDBAgent.rta_options:type_name -> inventory.v1.RTAOptions - 108, // 49: inventory.v1.RTAMongoDBAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 50: inventory.v1.RTAMongoDBAgent.log_level:type_name -> inventory.v1.LogLevel - 83, // 51: inventory.v1.QANPostgreSQLPgStatementsAgent.custom_labels:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent.CustomLabelsEntry - 108, // 52: inventory.v1.QANPostgreSQLPgStatementsAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 53: inventory.v1.QANPostgreSQLPgStatementsAgent.log_level:type_name -> inventory.v1.LogLevel - 84, // 54: inventory.v1.QANPostgreSQLPgStatMonitorAgent.custom_labels:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent.CustomLabelsEntry - 108, // 55: inventory.v1.QANPostgreSQLPgStatMonitorAgent.status:type_name -> inventory.v1.AgentStatus - 109, // 56: inventory.v1.QANPostgreSQLPgStatMonitorAgent.log_level:type_name -> inventory.v1.LogLevel - 85, // 57: inventory.v1.RDSExporter.custom_labels:type_name -> inventory.v1.RDSExporter.CustomLabelsEntry - 108, // 58: inventory.v1.RDSExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 59: inventory.v1.RDSExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 60: inventory.v1.RDSExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 86, // 61: inventory.v1.ExternalExporter.custom_labels:type_name -> inventory.v1.ExternalExporter.CustomLabelsEntry - 110, // 62: inventory.v1.ExternalExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 108, // 63: inventory.v1.ExternalExporter.status:type_name -> inventory.v1.AgentStatus - 87, // 64: inventory.v1.AzureDatabaseExporter.custom_labels:type_name -> inventory.v1.AzureDatabaseExporter.CustomLabelsEntry - 108, // 65: inventory.v1.AzureDatabaseExporter.status:type_name -> inventory.v1.AgentStatus - 109, // 66: inventory.v1.AzureDatabaseExporter.log_level:type_name -> inventory.v1.LogLevel - 110, // 67: inventory.v1.AzureDatabaseExporter.metrics_resolutions:type_name -> common.MetricsResolutions - 112, // 68: inventory.v1.ChangeCommonAgentParams.custom_labels:type_name -> common.StringMap - 110, // 69: inventory.v1.ChangeCommonAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 0, // 70: inventory.v1.ListAgentsRequest.agent_type:type_name -> inventory.v1.AgentType - 1, // 71: inventory.v1.ListAgentsResponse.pmm_agent:type_name -> inventory.v1.PMMAgent - 2, // 72: inventory.v1.ListAgentsResponse.vm_agent:type_name -> inventory.v1.VMAgent - 4, // 73: inventory.v1.ListAgentsResponse.node_exporter:type_name -> inventory.v1.NodeExporter - 5, // 74: inventory.v1.ListAgentsResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter - 6, // 75: inventory.v1.ListAgentsResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter - 7, // 76: inventory.v1.ListAgentsResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter - 8, // 77: inventory.v1.ListAgentsResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter - 10, // 78: inventory.v1.ListAgentsResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent - 11, // 79: inventory.v1.ListAgentsResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent - 12, // 80: inventory.v1.ListAgentsResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent - 13, // 81: inventory.v1.ListAgentsResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent - 16, // 82: inventory.v1.ListAgentsResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent - 17, // 83: inventory.v1.ListAgentsResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent - 19, // 84: inventory.v1.ListAgentsResponse.external_exporter:type_name -> inventory.v1.ExternalExporter - 18, // 85: inventory.v1.ListAgentsResponse.rds_exporter:type_name -> inventory.v1.RDSExporter - 20, // 86: inventory.v1.ListAgentsResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter - 3, // 87: inventory.v1.ListAgentsResponse.nomad_agent:type_name -> inventory.v1.NomadAgent - 9, // 88: inventory.v1.ListAgentsResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter - 15, // 89: inventory.v1.ListAgentsResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent - 1, // 90: inventory.v1.GetAgentResponse.pmm_agent:type_name -> inventory.v1.PMMAgent - 2, // 91: inventory.v1.GetAgentResponse.vmagent:type_name -> inventory.v1.VMAgent - 4, // 92: inventory.v1.GetAgentResponse.node_exporter:type_name -> inventory.v1.NodeExporter - 5, // 93: inventory.v1.GetAgentResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter - 6, // 94: inventory.v1.GetAgentResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter - 7, // 95: inventory.v1.GetAgentResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter - 8, // 96: inventory.v1.GetAgentResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter - 10, // 97: inventory.v1.GetAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent - 11, // 98: inventory.v1.GetAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent - 12, // 99: inventory.v1.GetAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent - 13, // 100: inventory.v1.GetAgentResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent - 16, // 101: inventory.v1.GetAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent - 17, // 102: inventory.v1.GetAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent - 19, // 103: inventory.v1.GetAgentResponse.external_exporter:type_name -> inventory.v1.ExternalExporter - 18, // 104: inventory.v1.GetAgentResponse.rds_exporter:type_name -> inventory.v1.RDSExporter - 20, // 105: inventory.v1.GetAgentResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter - 3, // 106: inventory.v1.GetAgentResponse.nomad_agent:type_name -> inventory.v1.NomadAgent - 9, // 107: inventory.v1.GetAgentResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter - 15, // 108: inventory.v1.GetAgentResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent - 32, // 109: inventory.v1.AddAgentRequest.pmm_agent:type_name -> inventory.v1.AddPMMAgentParams - 33, // 110: inventory.v1.AddAgentRequest.node_exporter:type_name -> inventory.v1.AddNodeExporterParams - 35, // 111: inventory.v1.AddAgentRequest.mysqld_exporter:type_name -> inventory.v1.AddMySQLdExporterParams - 37, // 112: inventory.v1.AddAgentRequest.mongodb_exporter:type_name -> inventory.v1.AddMongoDBExporterParams - 39, // 113: inventory.v1.AddAgentRequest.postgres_exporter:type_name -> inventory.v1.AddPostgresExporterParams - 41, // 114: inventory.v1.AddAgentRequest.proxysql_exporter:type_name -> inventory.v1.AddProxySQLExporterParams - 57, // 115: inventory.v1.AddAgentRequest.external_exporter:type_name -> inventory.v1.AddExternalExporterParams - 55, // 116: inventory.v1.AddAgentRequest.rds_exporter:type_name -> inventory.v1.AddRDSExporterParams - 59, // 117: inventory.v1.AddAgentRequest.azure_database_exporter:type_name -> inventory.v1.AddAzureDatabaseExporterParams - 43, // 118: inventory.v1.AddAgentRequest.qan_mysql_perfschema_agent:type_name -> inventory.v1.AddQANMySQLPerfSchemaAgentParams - 45, // 119: inventory.v1.AddAgentRequest.qan_mysql_slowlog_agent:type_name -> inventory.v1.AddQANMySQLSlowlogAgentParams - 47, // 120: inventory.v1.AddAgentRequest.qan_mongodb_profiler_agent:type_name -> inventory.v1.AddQANMongoDBProfilerAgentParams - 49, // 121: inventory.v1.AddAgentRequest.qan_mongodb_mongolog_agent:type_name -> inventory.v1.AddQANMongoDBMongologAgentParams - 51, // 122: inventory.v1.AddAgentRequest.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.AddQANPostgreSQLPgStatementsAgentParams - 53, // 123: inventory.v1.AddAgentRequest.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams - 62, // 124: inventory.v1.AddAgentRequest.valkey_exporter:type_name -> inventory.v1.AddValkeyExporterParams - 64, // 125: inventory.v1.AddAgentRequest.rta_mongodb_agent:type_name -> inventory.v1.AddRTAMongoDBAgentParams - 1, // 126: inventory.v1.AddAgentResponse.pmm_agent:type_name -> inventory.v1.PMMAgent - 4, // 127: inventory.v1.AddAgentResponse.node_exporter:type_name -> inventory.v1.NodeExporter - 5, // 128: inventory.v1.AddAgentResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter - 6, // 129: inventory.v1.AddAgentResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter - 7, // 130: inventory.v1.AddAgentResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter - 8, // 131: inventory.v1.AddAgentResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter - 19, // 132: inventory.v1.AddAgentResponse.external_exporter:type_name -> inventory.v1.ExternalExporter - 18, // 133: inventory.v1.AddAgentResponse.rds_exporter:type_name -> inventory.v1.RDSExporter - 20, // 134: inventory.v1.AddAgentResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter - 10, // 135: inventory.v1.AddAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent - 11, // 136: inventory.v1.AddAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent - 12, // 137: inventory.v1.AddAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent - 13, // 138: inventory.v1.AddAgentResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent - 16, // 139: inventory.v1.AddAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent - 17, // 140: inventory.v1.AddAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent - 9, // 141: inventory.v1.AddAgentResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter - 15, // 142: inventory.v1.AddAgentResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent - 34, // 143: inventory.v1.ChangeAgentRequest.node_exporter:type_name -> inventory.v1.ChangeNodeExporterParams - 36, // 144: inventory.v1.ChangeAgentRequest.mysqld_exporter:type_name -> inventory.v1.ChangeMySQLdExporterParams - 38, // 145: inventory.v1.ChangeAgentRequest.mongodb_exporter:type_name -> inventory.v1.ChangeMongoDBExporterParams - 40, // 146: inventory.v1.ChangeAgentRequest.postgres_exporter:type_name -> inventory.v1.ChangePostgresExporterParams - 42, // 147: inventory.v1.ChangeAgentRequest.proxysql_exporter:type_name -> inventory.v1.ChangeProxySQLExporterParams - 58, // 148: inventory.v1.ChangeAgentRequest.external_exporter:type_name -> inventory.v1.ChangeExternalExporterParams - 56, // 149: inventory.v1.ChangeAgentRequest.rds_exporter:type_name -> inventory.v1.ChangeRDSExporterParams - 60, // 150: inventory.v1.ChangeAgentRequest.azure_database_exporter:type_name -> inventory.v1.ChangeAzureDatabaseExporterParams - 44, // 151: inventory.v1.ChangeAgentRequest.qan_mysql_perfschema_agent:type_name -> inventory.v1.ChangeQANMySQLPerfSchemaAgentParams - 46, // 152: inventory.v1.ChangeAgentRequest.qan_mysql_slowlog_agent:type_name -> inventory.v1.ChangeQANMySQLSlowlogAgentParams - 48, // 153: inventory.v1.ChangeAgentRequest.qan_mongodb_profiler_agent:type_name -> inventory.v1.ChangeQANMongoDBProfilerAgentParams - 50, // 154: inventory.v1.ChangeAgentRequest.qan_mongodb_mongolog_agent:type_name -> inventory.v1.ChangeQANMongoDBMongologAgentParams - 52, // 155: inventory.v1.ChangeAgentRequest.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams - 54, // 156: inventory.v1.ChangeAgentRequest.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams - 61, // 157: inventory.v1.ChangeAgentRequest.nomad_agent:type_name -> inventory.v1.ChangeNomadAgentParams - 63, // 158: inventory.v1.ChangeAgentRequest.valkey_exporter:type_name -> inventory.v1.ChangeValkeyExporterParams - 65, // 159: inventory.v1.ChangeAgentRequest.rta_mongodb_agent:type_name -> inventory.v1.ChangeRTAMongoDBAgentParams - 4, // 160: inventory.v1.ChangeAgentResponse.node_exporter:type_name -> inventory.v1.NodeExporter - 5, // 161: inventory.v1.ChangeAgentResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter - 6, // 162: inventory.v1.ChangeAgentResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter - 7, // 163: inventory.v1.ChangeAgentResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter - 8, // 164: inventory.v1.ChangeAgentResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter - 19, // 165: inventory.v1.ChangeAgentResponse.external_exporter:type_name -> inventory.v1.ExternalExporter - 18, // 166: inventory.v1.ChangeAgentResponse.rds_exporter:type_name -> inventory.v1.RDSExporter - 20, // 167: inventory.v1.ChangeAgentResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter - 10, // 168: inventory.v1.ChangeAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent - 11, // 169: inventory.v1.ChangeAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent - 12, // 170: inventory.v1.ChangeAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent - 13, // 171: inventory.v1.ChangeAgentResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent - 16, // 172: inventory.v1.ChangeAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent - 17, // 173: inventory.v1.ChangeAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent - 3, // 174: inventory.v1.ChangeAgentResponse.nomad_agent:type_name -> inventory.v1.NomadAgent - 9, // 175: inventory.v1.ChangeAgentResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter - 15, // 176: inventory.v1.ChangeAgentResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent - 88, // 177: inventory.v1.AddPMMAgentParams.custom_labels:type_name -> inventory.v1.AddPMMAgentParams.CustomLabelsEntry - 89, // 178: inventory.v1.AddNodeExporterParams.custom_labels:type_name -> inventory.v1.AddNodeExporterParams.CustomLabelsEntry - 109, // 179: inventory.v1.AddNodeExporterParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 180: inventory.v1.ChangeNodeExporterParams.custom_labels:type_name -> common.StringMap - 110, // 181: inventory.v1.ChangeNodeExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 182: inventory.v1.ChangeNodeExporterParams.log_level:type_name -> inventory.v1.LogLevel - 90, // 183: inventory.v1.AddMySQLdExporterParams.custom_labels:type_name -> inventory.v1.AddMySQLdExporterParams.CustomLabelsEntry - 109, // 184: inventory.v1.AddMySQLdExporterParams.log_level:type_name -> inventory.v1.LogLevel - 91, // 185: inventory.v1.AddMySQLdExporterParams.extra_dsn_params:type_name -> inventory.v1.AddMySQLdExporterParams.ExtraDsnParamsEntry - 111, // 186: inventory.v1.AddMySQLdExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 112, // 187: inventory.v1.ChangeMySQLdExporterParams.custom_labels:type_name -> common.StringMap - 110, // 188: inventory.v1.ChangeMySQLdExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 189: inventory.v1.ChangeMySQLdExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 190: inventory.v1.ChangeMySQLdExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 92, // 191: inventory.v1.AddMongoDBExporterParams.custom_labels:type_name -> inventory.v1.AddMongoDBExporterParams.CustomLabelsEntry - 109, // 192: inventory.v1.AddMongoDBExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 193: inventory.v1.AddMongoDBExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 112, // 194: inventory.v1.ChangeMongoDBExporterParams.custom_labels:type_name -> common.StringMap - 110, // 195: inventory.v1.ChangeMongoDBExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 196: inventory.v1.ChangeMongoDBExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 197: inventory.v1.ChangeMongoDBExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 93, // 198: inventory.v1.AddPostgresExporterParams.custom_labels:type_name -> inventory.v1.AddPostgresExporterParams.CustomLabelsEntry - 109, // 199: inventory.v1.AddPostgresExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 200: inventory.v1.AddPostgresExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 112, // 201: inventory.v1.ChangePostgresExporterParams.custom_labels:type_name -> common.StringMap - 110, // 202: inventory.v1.ChangePostgresExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 203: inventory.v1.ChangePostgresExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 204: inventory.v1.ChangePostgresExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 94, // 205: inventory.v1.AddProxySQLExporterParams.custom_labels:type_name -> inventory.v1.AddProxySQLExporterParams.CustomLabelsEntry - 109, // 206: inventory.v1.AddProxySQLExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 207: inventory.v1.AddProxySQLExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 112, // 208: inventory.v1.ChangeProxySQLExporterParams.custom_labels:type_name -> common.StringMap - 110, // 209: inventory.v1.ChangeProxySQLExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 210: inventory.v1.ChangeProxySQLExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 211: inventory.v1.ChangeProxySQLExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 95, // 212: inventory.v1.AddQANMySQLPerfSchemaAgentParams.custom_labels:type_name -> inventory.v1.AddQANMySQLPerfSchemaAgentParams.CustomLabelsEntry - 109, // 213: inventory.v1.AddQANMySQLPerfSchemaAgentParams.log_level:type_name -> inventory.v1.LogLevel - 96, // 214: inventory.v1.AddQANMySQLPerfSchemaAgentParams.extra_dsn_params:type_name -> inventory.v1.AddQANMySQLPerfSchemaAgentParams.ExtraDsnParamsEntry - 112, // 215: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams.custom_labels:type_name -> common.StringMap - 110, // 216: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 217: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams.log_level:type_name -> inventory.v1.LogLevel - 97, // 218: inventory.v1.AddQANMySQLSlowlogAgentParams.custom_labels:type_name -> inventory.v1.AddQANMySQLSlowlogAgentParams.CustomLabelsEntry - 109, // 219: inventory.v1.AddQANMySQLSlowlogAgentParams.log_level:type_name -> inventory.v1.LogLevel - 98, // 220: inventory.v1.AddQANMySQLSlowlogAgentParams.extra_dsn_params:type_name -> inventory.v1.AddQANMySQLSlowlogAgentParams.ExtraDsnParamsEntry - 112, // 221: inventory.v1.ChangeQANMySQLSlowlogAgentParams.custom_labels:type_name -> common.StringMap - 110, // 222: inventory.v1.ChangeQANMySQLSlowlogAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 223: inventory.v1.ChangeQANMySQLSlowlogAgentParams.log_level:type_name -> inventory.v1.LogLevel - 99, // 224: inventory.v1.AddQANMongoDBProfilerAgentParams.custom_labels:type_name -> inventory.v1.AddQANMongoDBProfilerAgentParams.CustomLabelsEntry - 109, // 225: inventory.v1.AddQANMongoDBProfilerAgentParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 226: inventory.v1.ChangeQANMongoDBProfilerAgentParams.custom_labels:type_name -> common.StringMap - 110, // 227: inventory.v1.ChangeQANMongoDBProfilerAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 228: inventory.v1.ChangeQANMongoDBProfilerAgentParams.log_level:type_name -> inventory.v1.LogLevel - 100, // 229: inventory.v1.AddQANMongoDBMongologAgentParams.custom_labels:type_name -> inventory.v1.AddQANMongoDBMongologAgentParams.CustomLabelsEntry - 109, // 230: inventory.v1.AddQANMongoDBMongologAgentParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 231: inventory.v1.ChangeQANMongoDBMongologAgentParams.custom_labels:type_name -> common.StringMap - 110, // 232: inventory.v1.ChangeQANMongoDBMongologAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 233: inventory.v1.ChangeQANMongoDBMongologAgentParams.log_level:type_name -> inventory.v1.LogLevel - 101, // 234: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.custom_labels:type_name -> inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.CustomLabelsEntry - 109, // 235: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 236: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams.custom_labels:type_name -> common.StringMap - 110, // 237: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 238: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams.log_level:type_name -> inventory.v1.LogLevel - 102, // 239: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.custom_labels:type_name -> inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.CustomLabelsEntry - 109, // 240: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 241: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams.custom_labels:type_name -> common.StringMap - 110, // 242: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 243: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams.log_level:type_name -> inventory.v1.LogLevel - 103, // 244: inventory.v1.AddRDSExporterParams.custom_labels:type_name -> inventory.v1.AddRDSExporterParams.CustomLabelsEntry - 109, // 245: inventory.v1.AddRDSExporterParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 246: inventory.v1.ChangeRDSExporterParams.custom_labels:type_name -> common.StringMap - 110, // 247: inventory.v1.ChangeRDSExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 248: inventory.v1.ChangeRDSExporterParams.log_level:type_name -> inventory.v1.LogLevel - 104, // 249: inventory.v1.AddExternalExporterParams.custom_labels:type_name -> inventory.v1.AddExternalExporterParams.CustomLabelsEntry - 112, // 250: inventory.v1.ChangeExternalExporterParams.custom_labels:type_name -> common.StringMap - 110, // 251: inventory.v1.ChangeExternalExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 105, // 252: inventory.v1.AddAzureDatabaseExporterParams.custom_labels:type_name -> inventory.v1.AddAzureDatabaseExporterParams.CustomLabelsEntry - 109, // 253: inventory.v1.AddAzureDatabaseExporterParams.log_level:type_name -> inventory.v1.LogLevel - 112, // 254: inventory.v1.ChangeAzureDatabaseExporterParams.custom_labels:type_name -> common.StringMap - 110, // 255: inventory.v1.ChangeAzureDatabaseExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 256: inventory.v1.ChangeAzureDatabaseExporterParams.log_level:type_name -> inventory.v1.LogLevel - 106, // 257: inventory.v1.AddValkeyExporterParams.custom_labels:type_name -> inventory.v1.AddValkeyExporterParams.CustomLabelsEntry - 109, // 258: inventory.v1.AddValkeyExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 259: inventory.v1.AddValkeyExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 112, // 260: inventory.v1.ChangeValkeyExporterParams.custom_labels:type_name -> common.StringMap - 110, // 261: inventory.v1.ChangeValkeyExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions - 109, // 262: inventory.v1.ChangeValkeyExporterParams.log_level:type_name -> inventory.v1.LogLevel - 111, // 263: inventory.v1.ChangeValkeyExporterParams.connection_timeout:type_name -> google.protobuf.Duration - 107, // 264: inventory.v1.AddRTAMongoDBAgentParams.custom_labels:type_name -> inventory.v1.AddRTAMongoDBAgentParams.CustomLabelsEntry - 109, // 265: inventory.v1.AddRTAMongoDBAgentParams.log_level:type_name -> inventory.v1.LogLevel - 14, // 266: inventory.v1.AddRTAMongoDBAgentParams.rta_options:type_name -> inventory.v1.RTAOptions - 112, // 267: inventory.v1.ChangeRTAMongoDBAgentParams.custom_labels:type_name -> common.StringMap - 109, // 268: inventory.v1.ChangeRTAMongoDBAgentParams.log_level:type_name -> inventory.v1.LogLevel - 14, // 269: inventory.v1.ChangeRTAMongoDBAgentParams.rta_options:type_name -> inventory.v1.RTAOptions - 22, // 270: inventory.v1.AgentsService.ListAgents:input_type -> inventory.v1.ListAgentsRequest - 24, // 271: inventory.v1.AgentsService.GetAgent:input_type -> inventory.v1.GetAgentRequest - 26, // 272: inventory.v1.AgentsService.GetAgentLogs:input_type -> inventory.v1.GetAgentLogsRequest - 28, // 273: inventory.v1.AgentsService.AddAgent:input_type -> inventory.v1.AddAgentRequest - 30, // 274: inventory.v1.AgentsService.ChangeAgent:input_type -> inventory.v1.ChangeAgentRequest - 66, // 275: inventory.v1.AgentsService.RemoveAgent:input_type -> inventory.v1.RemoveAgentRequest - 23, // 276: inventory.v1.AgentsService.ListAgents:output_type -> inventory.v1.ListAgentsResponse - 25, // 277: inventory.v1.AgentsService.GetAgent:output_type -> inventory.v1.GetAgentResponse - 27, // 278: inventory.v1.AgentsService.GetAgentLogs:output_type -> inventory.v1.GetAgentLogsResponse - 29, // 279: inventory.v1.AgentsService.AddAgent:output_type -> inventory.v1.AddAgentResponse - 31, // 280: inventory.v1.AgentsService.ChangeAgent:output_type -> inventory.v1.ChangeAgentResponse - 67, // 281: inventory.v1.AgentsService.RemoveAgent:output_type -> inventory.v1.RemoveAgentResponse - 276, // [276:282] is the sub-list for method output_type - 270, // [270:276] is the sub-list for method input_type - 270, // [270:270] is the sub-list for extension type_name - 270, // [270:270] is the sub-list for extension extendee - 0, // [0:270] is the sub-list for field type_name + 110, // 49: inventory.v1.RTAMongoDBAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 50: inventory.v1.RTAMongoDBAgent.log_level:type_name -> inventory.v1.LogLevel + 84, // 51: inventory.v1.RTAMySQLAgent.custom_labels:type_name -> inventory.v1.RTAMySQLAgent.CustomLabelsEntry + 14, // 52: inventory.v1.RTAMySQLAgent.rta_options:type_name -> inventory.v1.RTAOptions + 110, // 53: inventory.v1.RTAMySQLAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 54: inventory.v1.RTAMySQLAgent.log_level:type_name -> inventory.v1.LogLevel + 85, // 55: inventory.v1.QANPostgreSQLPgStatementsAgent.custom_labels:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent.CustomLabelsEntry + 110, // 56: inventory.v1.QANPostgreSQLPgStatementsAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 57: inventory.v1.QANPostgreSQLPgStatementsAgent.log_level:type_name -> inventory.v1.LogLevel + 86, // 58: inventory.v1.QANPostgreSQLPgStatMonitorAgent.custom_labels:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent.CustomLabelsEntry + 110, // 59: inventory.v1.QANPostgreSQLPgStatMonitorAgent.status:type_name -> inventory.v1.AgentStatus + 111, // 60: inventory.v1.QANPostgreSQLPgStatMonitorAgent.log_level:type_name -> inventory.v1.LogLevel + 87, // 61: inventory.v1.RDSExporter.custom_labels:type_name -> inventory.v1.RDSExporter.CustomLabelsEntry + 110, // 62: inventory.v1.RDSExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 63: inventory.v1.RDSExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 64: inventory.v1.RDSExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 88, // 65: inventory.v1.ExternalExporter.custom_labels:type_name -> inventory.v1.ExternalExporter.CustomLabelsEntry + 112, // 66: inventory.v1.ExternalExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 110, // 67: inventory.v1.ExternalExporter.status:type_name -> inventory.v1.AgentStatus + 89, // 68: inventory.v1.AzureDatabaseExporter.custom_labels:type_name -> inventory.v1.AzureDatabaseExporter.CustomLabelsEntry + 110, // 69: inventory.v1.AzureDatabaseExporter.status:type_name -> inventory.v1.AgentStatus + 111, // 70: inventory.v1.AzureDatabaseExporter.log_level:type_name -> inventory.v1.LogLevel + 112, // 71: inventory.v1.AzureDatabaseExporter.metrics_resolutions:type_name -> common.MetricsResolutions + 114, // 72: inventory.v1.ChangeCommonAgentParams.custom_labels:type_name -> common.StringMap + 112, // 73: inventory.v1.ChangeCommonAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 0, // 74: inventory.v1.ListAgentsRequest.agent_type:type_name -> inventory.v1.AgentType + 1, // 75: inventory.v1.ListAgentsResponse.pmm_agent:type_name -> inventory.v1.PMMAgent + 2, // 76: inventory.v1.ListAgentsResponse.vm_agent:type_name -> inventory.v1.VMAgent + 4, // 77: inventory.v1.ListAgentsResponse.node_exporter:type_name -> inventory.v1.NodeExporter + 5, // 78: inventory.v1.ListAgentsResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter + 6, // 79: inventory.v1.ListAgentsResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter + 7, // 80: inventory.v1.ListAgentsResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter + 8, // 81: inventory.v1.ListAgentsResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter + 10, // 82: inventory.v1.ListAgentsResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent + 11, // 83: inventory.v1.ListAgentsResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent + 12, // 84: inventory.v1.ListAgentsResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent + 13, // 85: inventory.v1.ListAgentsResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent + 17, // 86: inventory.v1.ListAgentsResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent + 18, // 87: inventory.v1.ListAgentsResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent + 20, // 88: inventory.v1.ListAgentsResponse.external_exporter:type_name -> inventory.v1.ExternalExporter + 19, // 89: inventory.v1.ListAgentsResponse.rds_exporter:type_name -> inventory.v1.RDSExporter + 21, // 90: inventory.v1.ListAgentsResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter + 3, // 91: inventory.v1.ListAgentsResponse.nomad_agent:type_name -> inventory.v1.NomadAgent + 9, // 92: inventory.v1.ListAgentsResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter + 15, // 93: inventory.v1.ListAgentsResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent + 16, // 94: inventory.v1.ListAgentsResponse.rta_mysql_agent:type_name -> inventory.v1.RTAMySQLAgent + 1, // 95: inventory.v1.GetAgentResponse.pmm_agent:type_name -> inventory.v1.PMMAgent + 2, // 96: inventory.v1.GetAgentResponse.vmagent:type_name -> inventory.v1.VMAgent + 4, // 97: inventory.v1.GetAgentResponse.node_exporter:type_name -> inventory.v1.NodeExporter + 5, // 98: inventory.v1.GetAgentResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter + 6, // 99: inventory.v1.GetAgentResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter + 7, // 100: inventory.v1.GetAgentResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter + 8, // 101: inventory.v1.GetAgentResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter + 10, // 102: inventory.v1.GetAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent + 11, // 103: inventory.v1.GetAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent + 12, // 104: inventory.v1.GetAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent + 13, // 105: inventory.v1.GetAgentResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent + 17, // 106: inventory.v1.GetAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent + 18, // 107: inventory.v1.GetAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent + 20, // 108: inventory.v1.GetAgentResponse.external_exporter:type_name -> inventory.v1.ExternalExporter + 19, // 109: inventory.v1.GetAgentResponse.rds_exporter:type_name -> inventory.v1.RDSExporter + 21, // 110: inventory.v1.GetAgentResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter + 3, // 111: inventory.v1.GetAgentResponse.nomad_agent:type_name -> inventory.v1.NomadAgent + 9, // 112: inventory.v1.GetAgentResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter + 15, // 113: inventory.v1.GetAgentResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent + 16, // 114: inventory.v1.GetAgentResponse.rta_mysql_agent:type_name -> inventory.v1.RTAMySQLAgent + 33, // 115: inventory.v1.AddAgentRequest.pmm_agent:type_name -> inventory.v1.AddPMMAgentParams + 34, // 116: inventory.v1.AddAgentRequest.node_exporter:type_name -> inventory.v1.AddNodeExporterParams + 36, // 117: inventory.v1.AddAgentRequest.mysqld_exporter:type_name -> inventory.v1.AddMySQLdExporterParams + 38, // 118: inventory.v1.AddAgentRequest.mongodb_exporter:type_name -> inventory.v1.AddMongoDBExporterParams + 40, // 119: inventory.v1.AddAgentRequest.postgres_exporter:type_name -> inventory.v1.AddPostgresExporterParams + 42, // 120: inventory.v1.AddAgentRequest.proxysql_exporter:type_name -> inventory.v1.AddProxySQLExporterParams + 58, // 121: inventory.v1.AddAgentRequest.external_exporter:type_name -> inventory.v1.AddExternalExporterParams + 56, // 122: inventory.v1.AddAgentRequest.rds_exporter:type_name -> inventory.v1.AddRDSExporterParams + 60, // 123: inventory.v1.AddAgentRequest.azure_database_exporter:type_name -> inventory.v1.AddAzureDatabaseExporterParams + 44, // 124: inventory.v1.AddAgentRequest.qan_mysql_perfschema_agent:type_name -> inventory.v1.AddQANMySQLPerfSchemaAgentParams + 46, // 125: inventory.v1.AddAgentRequest.qan_mysql_slowlog_agent:type_name -> inventory.v1.AddQANMySQLSlowlogAgentParams + 48, // 126: inventory.v1.AddAgentRequest.qan_mongodb_profiler_agent:type_name -> inventory.v1.AddQANMongoDBProfilerAgentParams + 50, // 127: inventory.v1.AddAgentRequest.qan_mongodb_mongolog_agent:type_name -> inventory.v1.AddQANMongoDBMongologAgentParams + 52, // 128: inventory.v1.AddAgentRequest.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.AddQANPostgreSQLPgStatementsAgentParams + 54, // 129: inventory.v1.AddAgentRequest.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams + 63, // 130: inventory.v1.AddAgentRequest.valkey_exporter:type_name -> inventory.v1.AddValkeyExporterParams + 65, // 131: inventory.v1.AddAgentRequest.rta_mongodb_agent:type_name -> inventory.v1.AddRTAMongoDBAgentParams + 1, // 132: inventory.v1.AddAgentResponse.pmm_agent:type_name -> inventory.v1.PMMAgent + 4, // 133: inventory.v1.AddAgentResponse.node_exporter:type_name -> inventory.v1.NodeExporter + 5, // 134: inventory.v1.AddAgentResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter + 6, // 135: inventory.v1.AddAgentResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter + 7, // 136: inventory.v1.AddAgentResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter + 8, // 137: inventory.v1.AddAgentResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter + 20, // 138: inventory.v1.AddAgentResponse.external_exporter:type_name -> inventory.v1.ExternalExporter + 19, // 139: inventory.v1.AddAgentResponse.rds_exporter:type_name -> inventory.v1.RDSExporter + 21, // 140: inventory.v1.AddAgentResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter + 10, // 141: inventory.v1.AddAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent + 11, // 142: inventory.v1.AddAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent + 12, // 143: inventory.v1.AddAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent + 13, // 144: inventory.v1.AddAgentResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent + 17, // 145: inventory.v1.AddAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent + 18, // 146: inventory.v1.AddAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent + 9, // 147: inventory.v1.AddAgentResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter + 15, // 148: inventory.v1.AddAgentResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent + 35, // 149: inventory.v1.ChangeAgentRequest.node_exporter:type_name -> inventory.v1.ChangeNodeExporterParams + 37, // 150: inventory.v1.ChangeAgentRequest.mysqld_exporter:type_name -> inventory.v1.ChangeMySQLdExporterParams + 39, // 151: inventory.v1.ChangeAgentRequest.mongodb_exporter:type_name -> inventory.v1.ChangeMongoDBExporterParams + 41, // 152: inventory.v1.ChangeAgentRequest.postgres_exporter:type_name -> inventory.v1.ChangePostgresExporterParams + 43, // 153: inventory.v1.ChangeAgentRequest.proxysql_exporter:type_name -> inventory.v1.ChangeProxySQLExporterParams + 59, // 154: inventory.v1.ChangeAgentRequest.external_exporter:type_name -> inventory.v1.ChangeExternalExporterParams + 57, // 155: inventory.v1.ChangeAgentRequest.rds_exporter:type_name -> inventory.v1.ChangeRDSExporterParams + 61, // 156: inventory.v1.ChangeAgentRequest.azure_database_exporter:type_name -> inventory.v1.ChangeAzureDatabaseExporterParams + 45, // 157: inventory.v1.ChangeAgentRequest.qan_mysql_perfschema_agent:type_name -> inventory.v1.ChangeQANMySQLPerfSchemaAgentParams + 47, // 158: inventory.v1.ChangeAgentRequest.qan_mysql_slowlog_agent:type_name -> inventory.v1.ChangeQANMySQLSlowlogAgentParams + 49, // 159: inventory.v1.ChangeAgentRequest.qan_mongodb_profiler_agent:type_name -> inventory.v1.ChangeQANMongoDBProfilerAgentParams + 51, // 160: inventory.v1.ChangeAgentRequest.qan_mongodb_mongolog_agent:type_name -> inventory.v1.ChangeQANMongoDBMongologAgentParams + 53, // 161: inventory.v1.ChangeAgentRequest.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams + 55, // 162: inventory.v1.ChangeAgentRequest.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams + 62, // 163: inventory.v1.ChangeAgentRequest.nomad_agent:type_name -> inventory.v1.ChangeNomadAgentParams + 64, // 164: inventory.v1.ChangeAgentRequest.valkey_exporter:type_name -> inventory.v1.ChangeValkeyExporterParams + 66, // 165: inventory.v1.ChangeAgentRequest.rta_mongodb_agent:type_name -> inventory.v1.ChangeRTAMongoDBAgentParams + 4, // 166: inventory.v1.ChangeAgentResponse.node_exporter:type_name -> inventory.v1.NodeExporter + 5, // 167: inventory.v1.ChangeAgentResponse.mysqld_exporter:type_name -> inventory.v1.MySQLdExporter + 6, // 168: inventory.v1.ChangeAgentResponse.mongodb_exporter:type_name -> inventory.v1.MongoDBExporter + 7, // 169: inventory.v1.ChangeAgentResponse.postgres_exporter:type_name -> inventory.v1.PostgresExporter + 8, // 170: inventory.v1.ChangeAgentResponse.proxysql_exporter:type_name -> inventory.v1.ProxySQLExporter + 20, // 171: inventory.v1.ChangeAgentResponse.external_exporter:type_name -> inventory.v1.ExternalExporter + 19, // 172: inventory.v1.ChangeAgentResponse.rds_exporter:type_name -> inventory.v1.RDSExporter + 21, // 173: inventory.v1.ChangeAgentResponse.azure_database_exporter:type_name -> inventory.v1.AzureDatabaseExporter + 10, // 174: inventory.v1.ChangeAgentResponse.qan_mysql_perfschema_agent:type_name -> inventory.v1.QANMySQLPerfSchemaAgent + 11, // 175: inventory.v1.ChangeAgentResponse.qan_mysql_slowlog_agent:type_name -> inventory.v1.QANMySQLSlowlogAgent + 12, // 176: inventory.v1.ChangeAgentResponse.qan_mongodb_profiler_agent:type_name -> inventory.v1.QANMongoDBProfilerAgent + 13, // 177: inventory.v1.ChangeAgentResponse.qan_mongodb_mongolog_agent:type_name -> inventory.v1.QANMongoDBMongologAgent + 17, // 178: inventory.v1.ChangeAgentResponse.qan_postgresql_pgstatements_agent:type_name -> inventory.v1.QANPostgreSQLPgStatementsAgent + 18, // 179: inventory.v1.ChangeAgentResponse.qan_postgresql_pgstatmonitor_agent:type_name -> inventory.v1.QANPostgreSQLPgStatMonitorAgent + 3, // 180: inventory.v1.ChangeAgentResponse.nomad_agent:type_name -> inventory.v1.NomadAgent + 9, // 181: inventory.v1.ChangeAgentResponse.valkey_exporter:type_name -> inventory.v1.ValkeyExporter + 15, // 182: inventory.v1.ChangeAgentResponse.rta_mongodb_agent:type_name -> inventory.v1.RTAMongoDBAgent + 90, // 183: inventory.v1.AddPMMAgentParams.custom_labels:type_name -> inventory.v1.AddPMMAgentParams.CustomLabelsEntry + 91, // 184: inventory.v1.AddNodeExporterParams.custom_labels:type_name -> inventory.v1.AddNodeExporterParams.CustomLabelsEntry + 111, // 185: inventory.v1.AddNodeExporterParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 186: inventory.v1.ChangeNodeExporterParams.custom_labels:type_name -> common.StringMap + 112, // 187: inventory.v1.ChangeNodeExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 188: inventory.v1.ChangeNodeExporterParams.log_level:type_name -> inventory.v1.LogLevel + 92, // 189: inventory.v1.AddMySQLdExporterParams.custom_labels:type_name -> inventory.v1.AddMySQLdExporterParams.CustomLabelsEntry + 111, // 190: inventory.v1.AddMySQLdExporterParams.log_level:type_name -> inventory.v1.LogLevel + 93, // 191: inventory.v1.AddMySQLdExporterParams.extra_dsn_params:type_name -> inventory.v1.AddMySQLdExporterParams.ExtraDsnParamsEntry + 113, // 192: inventory.v1.AddMySQLdExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 114, // 193: inventory.v1.ChangeMySQLdExporterParams.custom_labels:type_name -> common.StringMap + 112, // 194: inventory.v1.ChangeMySQLdExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 195: inventory.v1.ChangeMySQLdExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 196: inventory.v1.ChangeMySQLdExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 94, // 197: inventory.v1.AddMongoDBExporterParams.custom_labels:type_name -> inventory.v1.AddMongoDBExporterParams.CustomLabelsEntry + 111, // 198: inventory.v1.AddMongoDBExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 199: inventory.v1.AddMongoDBExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 114, // 200: inventory.v1.ChangeMongoDBExporterParams.custom_labels:type_name -> common.StringMap + 112, // 201: inventory.v1.ChangeMongoDBExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 202: inventory.v1.ChangeMongoDBExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 203: inventory.v1.ChangeMongoDBExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 95, // 204: inventory.v1.AddPostgresExporterParams.custom_labels:type_name -> inventory.v1.AddPostgresExporterParams.CustomLabelsEntry + 111, // 205: inventory.v1.AddPostgresExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 206: inventory.v1.AddPostgresExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 114, // 207: inventory.v1.ChangePostgresExporterParams.custom_labels:type_name -> common.StringMap + 112, // 208: inventory.v1.ChangePostgresExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 209: inventory.v1.ChangePostgresExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 210: inventory.v1.ChangePostgresExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 96, // 211: inventory.v1.AddProxySQLExporterParams.custom_labels:type_name -> inventory.v1.AddProxySQLExporterParams.CustomLabelsEntry + 111, // 212: inventory.v1.AddProxySQLExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 213: inventory.v1.AddProxySQLExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 114, // 214: inventory.v1.ChangeProxySQLExporterParams.custom_labels:type_name -> common.StringMap + 112, // 215: inventory.v1.ChangeProxySQLExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 216: inventory.v1.ChangeProxySQLExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 217: inventory.v1.ChangeProxySQLExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 97, // 218: inventory.v1.AddQANMySQLPerfSchemaAgentParams.custom_labels:type_name -> inventory.v1.AddQANMySQLPerfSchemaAgentParams.CustomLabelsEntry + 111, // 219: inventory.v1.AddQANMySQLPerfSchemaAgentParams.log_level:type_name -> inventory.v1.LogLevel + 98, // 220: inventory.v1.AddQANMySQLPerfSchemaAgentParams.extra_dsn_params:type_name -> inventory.v1.AddQANMySQLPerfSchemaAgentParams.ExtraDsnParamsEntry + 114, // 221: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams.custom_labels:type_name -> common.StringMap + 112, // 222: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 223: inventory.v1.ChangeQANMySQLPerfSchemaAgentParams.log_level:type_name -> inventory.v1.LogLevel + 99, // 224: inventory.v1.AddQANMySQLSlowlogAgentParams.custom_labels:type_name -> inventory.v1.AddQANMySQLSlowlogAgentParams.CustomLabelsEntry + 111, // 225: inventory.v1.AddQANMySQLSlowlogAgentParams.log_level:type_name -> inventory.v1.LogLevel + 100, // 226: inventory.v1.AddQANMySQLSlowlogAgentParams.extra_dsn_params:type_name -> inventory.v1.AddQANMySQLSlowlogAgentParams.ExtraDsnParamsEntry + 114, // 227: inventory.v1.ChangeQANMySQLSlowlogAgentParams.custom_labels:type_name -> common.StringMap + 112, // 228: inventory.v1.ChangeQANMySQLSlowlogAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 229: inventory.v1.ChangeQANMySQLSlowlogAgentParams.log_level:type_name -> inventory.v1.LogLevel + 101, // 230: inventory.v1.AddQANMongoDBProfilerAgentParams.custom_labels:type_name -> inventory.v1.AddQANMongoDBProfilerAgentParams.CustomLabelsEntry + 111, // 231: inventory.v1.AddQANMongoDBProfilerAgentParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 232: inventory.v1.ChangeQANMongoDBProfilerAgentParams.custom_labels:type_name -> common.StringMap + 112, // 233: inventory.v1.ChangeQANMongoDBProfilerAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 234: inventory.v1.ChangeQANMongoDBProfilerAgentParams.log_level:type_name -> inventory.v1.LogLevel + 102, // 235: inventory.v1.AddQANMongoDBMongologAgentParams.custom_labels:type_name -> inventory.v1.AddQANMongoDBMongologAgentParams.CustomLabelsEntry + 111, // 236: inventory.v1.AddQANMongoDBMongologAgentParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 237: inventory.v1.ChangeQANMongoDBMongologAgentParams.custom_labels:type_name -> common.StringMap + 112, // 238: inventory.v1.ChangeQANMongoDBMongologAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 239: inventory.v1.ChangeQANMongoDBMongologAgentParams.log_level:type_name -> inventory.v1.LogLevel + 103, // 240: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.custom_labels:type_name -> inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.CustomLabelsEntry + 111, // 241: inventory.v1.AddQANPostgreSQLPgStatementsAgentParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 242: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams.custom_labels:type_name -> common.StringMap + 112, // 243: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 244: inventory.v1.ChangeQANPostgreSQLPgStatementsAgentParams.log_level:type_name -> inventory.v1.LogLevel + 104, // 245: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.custom_labels:type_name -> inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.CustomLabelsEntry + 111, // 246: inventory.v1.AddQANPostgreSQLPgStatMonitorAgentParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 247: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams.custom_labels:type_name -> common.StringMap + 112, // 248: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 249: inventory.v1.ChangeQANPostgreSQLPgStatMonitorAgentParams.log_level:type_name -> inventory.v1.LogLevel + 105, // 250: inventory.v1.AddRDSExporterParams.custom_labels:type_name -> inventory.v1.AddRDSExporterParams.CustomLabelsEntry + 111, // 251: inventory.v1.AddRDSExporterParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 252: inventory.v1.ChangeRDSExporterParams.custom_labels:type_name -> common.StringMap + 112, // 253: inventory.v1.ChangeRDSExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 254: inventory.v1.ChangeRDSExporterParams.log_level:type_name -> inventory.v1.LogLevel + 106, // 255: inventory.v1.AddExternalExporterParams.custom_labels:type_name -> inventory.v1.AddExternalExporterParams.CustomLabelsEntry + 114, // 256: inventory.v1.ChangeExternalExporterParams.custom_labels:type_name -> common.StringMap + 112, // 257: inventory.v1.ChangeExternalExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 107, // 258: inventory.v1.AddAzureDatabaseExporterParams.custom_labels:type_name -> inventory.v1.AddAzureDatabaseExporterParams.CustomLabelsEntry + 111, // 259: inventory.v1.AddAzureDatabaseExporterParams.log_level:type_name -> inventory.v1.LogLevel + 114, // 260: inventory.v1.ChangeAzureDatabaseExporterParams.custom_labels:type_name -> common.StringMap + 112, // 261: inventory.v1.ChangeAzureDatabaseExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 262: inventory.v1.ChangeAzureDatabaseExporterParams.log_level:type_name -> inventory.v1.LogLevel + 108, // 263: inventory.v1.AddValkeyExporterParams.custom_labels:type_name -> inventory.v1.AddValkeyExporterParams.CustomLabelsEntry + 111, // 264: inventory.v1.AddValkeyExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 265: inventory.v1.AddValkeyExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 114, // 266: inventory.v1.ChangeValkeyExporterParams.custom_labels:type_name -> common.StringMap + 112, // 267: inventory.v1.ChangeValkeyExporterParams.metrics_resolutions:type_name -> common.MetricsResolutions + 111, // 268: inventory.v1.ChangeValkeyExporterParams.log_level:type_name -> inventory.v1.LogLevel + 113, // 269: inventory.v1.ChangeValkeyExporterParams.connection_timeout:type_name -> google.protobuf.Duration + 109, // 270: inventory.v1.AddRTAMongoDBAgentParams.custom_labels:type_name -> inventory.v1.AddRTAMongoDBAgentParams.CustomLabelsEntry + 111, // 271: inventory.v1.AddRTAMongoDBAgentParams.log_level:type_name -> inventory.v1.LogLevel + 14, // 272: inventory.v1.AddRTAMongoDBAgentParams.rta_options:type_name -> inventory.v1.RTAOptions + 114, // 273: inventory.v1.ChangeRTAMongoDBAgentParams.custom_labels:type_name -> common.StringMap + 111, // 274: inventory.v1.ChangeRTAMongoDBAgentParams.log_level:type_name -> inventory.v1.LogLevel + 14, // 275: inventory.v1.ChangeRTAMongoDBAgentParams.rta_options:type_name -> inventory.v1.RTAOptions + 23, // 276: inventory.v1.AgentsService.ListAgents:input_type -> inventory.v1.ListAgentsRequest + 25, // 277: inventory.v1.AgentsService.GetAgent:input_type -> inventory.v1.GetAgentRequest + 27, // 278: inventory.v1.AgentsService.GetAgentLogs:input_type -> inventory.v1.GetAgentLogsRequest + 29, // 279: inventory.v1.AgentsService.AddAgent:input_type -> inventory.v1.AddAgentRequest + 31, // 280: inventory.v1.AgentsService.ChangeAgent:input_type -> inventory.v1.ChangeAgentRequest + 67, // 281: inventory.v1.AgentsService.RemoveAgent:input_type -> inventory.v1.RemoveAgentRequest + 24, // 282: inventory.v1.AgentsService.ListAgents:output_type -> inventory.v1.ListAgentsResponse + 26, // 283: inventory.v1.AgentsService.GetAgent:output_type -> inventory.v1.GetAgentResponse + 28, // 284: inventory.v1.AgentsService.GetAgentLogs:output_type -> inventory.v1.GetAgentLogsResponse + 30, // 285: inventory.v1.AgentsService.AddAgent:output_type -> inventory.v1.AddAgentResponse + 32, // 286: inventory.v1.AgentsService.ChangeAgent:output_type -> inventory.v1.ChangeAgentResponse + 68, // 287: inventory.v1.AgentsService.RemoveAgent:output_type -> inventory.v1.RemoveAgentResponse + 282, // [282:288] is the sub-list for method output_type + 276, // [276:282] is the sub-list for method input_type + 276, // [276:276] is the sub-list for extension type_name + 276, // [276:276] is the sub-list for extension extendee + 0, // [0:276] is the sub-list for field type_name } func init() { file_inventory_v1_agents_proto_init() } @@ -12811,8 +12999,8 @@ func file_inventory_v1_agents_proto_init() { } file_inventory_v1_agent_status_proto_init() file_inventory_v1_log_level_proto_init() - file_inventory_v1_agents_proto_msgTypes[20].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[24].OneofWrappers = []any{ + file_inventory_v1_agents_proto_msgTypes[21].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[25].OneofWrappers = []any{ (*GetAgentResponse_PmmAgent)(nil), (*GetAgentResponse_Vmagent)(nil), (*GetAgentResponse_NodeExporter)(nil), @@ -12832,8 +13020,9 @@ func file_inventory_v1_agents_proto_init() { (*GetAgentResponse_NomadAgent)(nil), (*GetAgentResponse_ValkeyExporter)(nil), (*GetAgentResponse_RtaMongodbAgent)(nil), + (*GetAgentResponse_RtaMysqlAgent)(nil), } - file_inventory_v1_agents_proto_msgTypes[27].OneofWrappers = []any{ + file_inventory_v1_agents_proto_msgTypes[28].OneofWrappers = []any{ (*AddAgentRequest_PmmAgent)(nil), (*AddAgentRequest_NodeExporter)(nil), (*AddAgentRequest_MysqldExporter)(nil), @@ -12852,7 +13041,7 @@ func file_inventory_v1_agents_proto_init() { (*AddAgentRequest_ValkeyExporter)(nil), (*AddAgentRequest_RtaMongodbAgent)(nil), } - file_inventory_v1_agents_proto_msgTypes[28].OneofWrappers = []any{ + file_inventory_v1_agents_proto_msgTypes[29].OneofWrappers = []any{ (*AddAgentResponse_PmmAgent)(nil), (*AddAgentResponse_NodeExporter)(nil), (*AddAgentResponse_MysqldExporter)(nil), @@ -12871,7 +13060,7 @@ func file_inventory_v1_agents_proto_init() { (*AddAgentResponse_ValkeyExporter)(nil), (*AddAgentResponse_RtaMongodbAgent)(nil), } - file_inventory_v1_agents_proto_msgTypes[29].OneofWrappers = []any{ + file_inventory_v1_agents_proto_msgTypes[30].OneofWrappers = []any{ (*ChangeAgentRequest_NodeExporter)(nil), (*ChangeAgentRequest_MysqldExporter)(nil), (*ChangeAgentRequest_MongodbExporter)(nil), @@ -12890,7 +13079,7 @@ func file_inventory_v1_agents_proto_init() { (*ChangeAgentRequest_ValkeyExporter)(nil), (*ChangeAgentRequest_RtaMongodbAgent)(nil), } - file_inventory_v1_agents_proto_msgTypes[30].OneofWrappers = []any{ + file_inventory_v1_agents_proto_msgTypes[31].OneofWrappers = []any{ (*ChangeAgentResponse_NodeExporter)(nil), (*ChangeAgentResponse_MysqldExporter)(nil), (*ChangeAgentResponse_MongodbExporter)(nil), @@ -12909,30 +13098,30 @@ func file_inventory_v1_agents_proto_init() { (*ChangeAgentResponse_ValkeyExporter)(nil), (*ChangeAgentResponse_RtaMongodbAgent)(nil), } - file_inventory_v1_agents_proto_msgTypes[33].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[35].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[37].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[39].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[41].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[43].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[45].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[47].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[49].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[51].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[53].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[55].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[57].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[59].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[34].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[36].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[38].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[40].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[42].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[44].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[46].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[48].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[50].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[52].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[54].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[56].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[58].OneofWrappers = []any{} file_inventory_v1_agents_proto_msgTypes[60].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[62].OneofWrappers = []any{} - file_inventory_v1_agents_proto_msgTypes[64].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[61].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[63].OneofWrappers = []any{} + file_inventory_v1_agents_proto_msgTypes[65].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_inventory_v1_agents_proto_rawDesc), len(file_inventory_v1_agents_proto_rawDesc)), NumEnums: 1, - NumMessages: 107, + NumMessages: 109, NumExtensions: 0, NumServices: 1, }, diff --git a/api/inventory/v1/agents.pb.validate.go b/api/inventory/v1/agents.pb.validate.go index 0c310df49e6..9539986b4c0 100644 --- a/api/inventory/v1/agents.pb.validate.go +++ b/api/inventory/v1/agents.pb.validate.go @@ -134,8 +134,7 @@ func (e PMMAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = PMMAgentValidationError{} @@ -243,8 +242,7 @@ func (e VMAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = VMAgentValidationError{} @@ -355,8 +353,7 @@ func (e NomadAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = NomadAgentValidationError{} @@ -504,8 +501,7 @@ func (e NodeExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = NodeExporterValidationError{} @@ -705,8 +701,7 @@ func (e MySQLdExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = MySQLdExporterValidationError{} @@ -896,8 +891,7 @@ func (e MongoDBExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = MongoDBExporterValidationError{} @@ -1087,8 +1081,7 @@ func (e PostgresExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = PostgresExporterValidationError{} @@ -1274,8 +1267,7 @@ func (e ProxySQLExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ProxySQLExporterValidationError{} @@ -1459,8 +1451,7 @@ func (e ValkeyExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ValkeyExporterValidationError{} @@ -1598,8 +1589,7 @@ func (e QANMySQLPerfSchemaAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QANMySQLPerfSchemaAgentValidationError{} @@ -1739,8 +1729,7 @@ func (e QANMySQLSlowlogAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QANMySQLSlowlogAgentValidationError{} @@ -1866,8 +1855,7 @@ func (e QANMongoDBProfilerAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QANMongoDBProfilerAgentValidationError{} @@ -1993,8 +1981,7 @@ func (e QANMongoDBMongologAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QANMongoDBMongologAgentValidationError{} @@ -2123,8 +2110,7 @@ func (e RTAOptionsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = RTAOptionsValidationError{} @@ -2273,8 +2259,7 @@ func (e RTAMongoDBAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = RTAMongoDBAgentValidationError{} @@ -2287,6 +2272,155 @@ var _ interface { ErrorName() string } = RTAMongoDBAgentValidationError{} +// Validate checks the field values on RTAMySQLAgent with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *RTAMySQLAgent) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RTAMySQLAgent with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RTAMySQLAgentMultiError, or +// nil if none found. +func (m *RTAMySQLAgent) ValidateAll() error { + return m.validate(true) +} + +func (m *RTAMySQLAgent) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for AgentId + + // no validation rules for PmmAgentId + + // no validation rules for Disabled + + // no validation rules for ServiceId + + // no validation rules for Username + + // no validation rules for Tls + + // no validation rules for TlsSkipVerify + + // no validation rules for CustomLabels + + if all { + switch v := interface{}(m.GetRtaOptions()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RTAMySQLAgentValidationError{ + field: "RtaOptions", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RTAMySQLAgentValidationError{ + field: "RtaOptions", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRtaOptions()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RTAMySQLAgentValidationError{ + field: "RtaOptions", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Status + + // no validation rules for LogLevel + + if len(errors) > 0 { + return RTAMySQLAgentMultiError(errors) + } + + return nil +} + +// RTAMySQLAgentMultiError is an error wrapping multiple validation errors +// returned by RTAMySQLAgent.ValidateAll() if the designated constraints +// aren't met. +type RTAMySQLAgentMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RTAMySQLAgentMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RTAMySQLAgentMultiError) AllErrors() []error { return m } + +// RTAMySQLAgentValidationError is the validation error returned by +// RTAMySQLAgent.Validate if the designated constraints aren't met. +type RTAMySQLAgentValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RTAMySQLAgentValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RTAMySQLAgentValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RTAMySQLAgentValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RTAMySQLAgentValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RTAMySQLAgentValidationError) ErrorName() string { return "RTAMySQLAgentValidationError" } + +// Error satisfies the builtin error interface +func (e RTAMySQLAgentValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRTAMySQLAgent.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RTAMySQLAgentValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RTAMySQLAgentValidationError{} + // Validate checks the field values on QANPostgreSQLPgStatementsAgent with the // rules defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -2403,8 +2537,7 @@ func (e QANPostgreSQLPgStatementsAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QANPostgreSQLPgStatementsAgentValidationError{} @@ -2535,8 +2668,7 @@ func (e QANPostgreSQLPgStatMonitorAgentValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QANPostgreSQLPgStatMonitorAgentValidationError{} @@ -2692,8 +2824,7 @@ func (e RDSExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = RDSExporterValidationError{} @@ -2848,8 +2979,7 @@ func (e ExternalExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ExternalExporterValidationError{} @@ -3004,8 +3134,7 @@ func (e AzureDatabaseExporterValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AzureDatabaseExporterValidationError{} @@ -3074,6 +3203,7 @@ func (m *ChangeCommonAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -3102,6 +3232,7 @@ func (m *ChangeCommonAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -3175,8 +3306,7 @@ func (e ChangeCommonAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeCommonAgentParamsValidationError{} @@ -3286,8 +3416,7 @@ func (e ListAgentsRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ListAgentsRequestValidationError{} @@ -3968,6 +4097,40 @@ func (m *ListAgentsResponse) validate(all bool) error { } + for idx, item := range m.GetRtaMysqlAgent() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListAgentsResponseValidationError{ + field: fmt.Sprintf("RtaMysqlAgent[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListAgentsResponseValidationError{ + field: fmt.Sprintf("RtaMysqlAgent[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListAgentsResponseValidationError{ + field: fmt.Sprintf("RtaMysqlAgent[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + if len(errors) > 0 { return ListAgentsResponseMultiError(errors) } @@ -4035,8 +4198,7 @@ func (e ListAgentsResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ListAgentsResponseValidationError{} @@ -4147,8 +4309,7 @@ func (e GetAgentRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = GetAgentRequestValidationError{} @@ -4963,6 +5124,47 @@ func (m *GetAgentResponse) validate(all bool) error { } } + case *GetAgentResponse_RtaMysqlAgent: + if v == nil { + err := GetAgentResponseValidationError{ + field: "Agent", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetRtaMysqlAgent()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetAgentResponseValidationError{ + field: "RtaMysqlAgent", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetAgentResponseValidationError{ + field: "RtaMysqlAgent", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRtaMysqlAgent()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GetAgentResponseValidationError{ + field: "RtaMysqlAgent", + reason: "embedded message failed validation", + cause: err, + } + } + } + default: _ = v // ensures v is used } @@ -5032,8 +5234,7 @@ func (e GetAgentResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = GetAgentResponseValidationError{} @@ -5148,8 +5349,7 @@ func (e GetAgentLogsRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = GetAgentLogsRequestValidationError{} @@ -5253,8 +5453,7 @@ func (e GetAgentLogsResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = GetAgentLogsResponseValidationError{} @@ -6056,8 +6255,7 @@ func (e AddAgentRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddAgentRequestValidationError{} @@ -6859,8 +7057,7 @@ func (e AddAgentResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddAgentResponseValidationError{} @@ -7675,8 +7872,7 @@ func (e ChangeAgentRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeAgentRequestValidationError{} @@ -8480,8 +8676,7 @@ func (e ChangeAgentResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeAgentResponseValidationError{} @@ -8596,8 +8791,7 @@ func (e AddPMMAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddPMMAgentParamsValidationError{} @@ -8718,8 +8912,7 @@ func (e AddNodeExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddNodeExporterParamsValidationError{} @@ -8788,6 +8981,7 @@ func (m *ChangeNodeExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -8816,6 +9010,7 @@ func (m *ChangeNodeExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -8897,8 +9092,7 @@ func (e ChangeNodeExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeNodeExporterParamsValidationError{} @@ -9091,8 +9285,7 @@ func (e AddMySQLdExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddMySQLdExporterParamsValidationError{} @@ -9191,6 +9384,7 @@ func (m *ChangeMySQLdExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -9219,6 +9413,7 @@ func (m *ChangeMySQLdExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -9340,8 +9535,7 @@ func (e ChangeMySQLdExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeMySQLdExporterParamsValidationError{} @@ -9529,8 +9723,7 @@ func (e AddMongoDBExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddMongoDBExporterParamsValidationError{} @@ -9629,6 +9822,7 @@ func (m *ChangeMongoDBExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -9657,6 +9851,7 @@ func (m *ChangeMongoDBExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -9791,8 +9986,7 @@ func (e ChangeMongoDBExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeMongoDBExporterParamsValidationError{} @@ -9985,8 +10179,7 @@ func (e AddPostgresExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddPostgresExporterParamsValidationError{} @@ -10085,6 +10278,7 @@ func (m *ChangePostgresExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -10113,6 +10307,7 @@ func (m *ChangePostgresExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -10239,8 +10434,7 @@ func (e ChangePostgresExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangePostgresExporterParamsValidationError{} @@ -10423,8 +10617,7 @@ func (e AddProxySQLExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddProxySQLExporterParamsValidationError{} @@ -10523,6 +10716,7 @@ func (m *ChangeProxySQLExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -10551,6 +10745,7 @@ func (m *ChangeProxySQLExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -10653,8 +10848,7 @@ func (e ChangeProxySQLExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeProxySQLExporterParamsValidationError{} @@ -10818,8 +11012,7 @@ func (e AddQANMySQLPerfSchemaAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddQANMySQLPerfSchemaAgentParamsValidationError{} @@ -10889,6 +11082,7 @@ func (m *ChangeQANMySQLPerfSchemaAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -10917,6 +11111,7 @@ func (m *ChangeQANMySQLPerfSchemaAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -11040,8 +11235,7 @@ func (e ChangeQANMySQLPerfSchemaAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeQANMySQLPerfSchemaAgentParamsValidationError{} @@ -11205,8 +11399,7 @@ func (e AddQANMySQLSlowlogAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddQANMySQLSlowlogAgentParamsValidationError{} @@ -11276,6 +11469,7 @@ func (m *ChangeQANMySQLSlowlogAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -11304,6 +11498,7 @@ func (m *ChangeQANMySQLSlowlogAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -11431,8 +11626,7 @@ func (e ChangeQANMySQLSlowlogAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeQANMySQLSlowlogAgentParamsValidationError{} @@ -11585,8 +11779,7 @@ func (e AddQANMongoDBProfilerAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddQANMongoDBProfilerAgentParamsValidationError{} @@ -11656,6 +11849,7 @@ func (m *ChangeQANMongoDBProfilerAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -11684,6 +11878,7 @@ func (m *ChangeQANMongoDBProfilerAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -11803,8 +11998,7 @@ func (e ChangeQANMongoDBProfilerAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeQANMongoDBProfilerAgentParamsValidationError{} @@ -11957,8 +12151,7 @@ func (e AddQANMongoDBMongologAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddQANMongoDBMongologAgentParamsValidationError{} @@ -12028,6 +12221,7 @@ func (m *ChangeQANMongoDBMongologAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -12056,6 +12250,7 @@ func (m *ChangeQANMongoDBMongologAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -12175,8 +12370,7 @@ func (e ChangeQANMongoDBMongologAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeQANMongoDBMongologAgentParamsValidationError{} @@ -12337,8 +12531,7 @@ func (e AddQANPostgreSQLPgStatementsAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddQANPostgreSQLPgStatementsAgentParamsValidationError{} @@ -12409,6 +12602,7 @@ func (m *ChangeQANPostgreSQLPgStatementsAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -12437,6 +12631,7 @@ func (m *ChangeQANPostgreSQLPgStatementsAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -12552,8 +12747,7 @@ func (e ChangeQANPostgreSQLPgStatementsAgentParamsValidationError) Error() strin key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeQANPostgreSQLPgStatementsAgentParamsValidationError{} @@ -12716,8 +12910,7 @@ func (e AddQANPostgreSQLPgStatMonitorAgentParamsValidationError) Error() string key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddQANPostgreSQLPgStatMonitorAgentParamsValidationError{} @@ -12788,6 +12981,7 @@ func (m *ChangeQANPostgreSQLPgStatMonitorAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -12816,6 +13010,7 @@ func (m *ChangeQANPostgreSQLPgStatMonitorAgentParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -12935,8 +13130,7 @@ func (e ChangeQANPostgreSQLPgStatMonitorAgentParamsValidationError) Error() stri key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeQANPostgreSQLPgStatMonitorAgentParamsValidationError{} @@ -13076,8 +13270,7 @@ func (e AddRDSExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddRDSExporterParamsValidationError{} @@ -13146,6 +13339,7 @@ func (m *ChangeRDSExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -13174,6 +13368,7 @@ func (m *ChangeRDSExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -13267,8 +13462,7 @@ func (e ChangeRDSExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeRDSExporterParamsValidationError{} @@ -13408,8 +13602,7 @@ func (e AddExternalExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddExternalExporterParamsValidationError{} @@ -13478,6 +13671,7 @@ func (m *ChangeExternalExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -13506,6 +13700,7 @@ func (m *ChangeExternalExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -13596,8 +13791,7 @@ func (e ChangeExternalExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeExternalExporterParamsValidationError{} @@ -13751,8 +13945,7 @@ func (e AddAzureDatabaseExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddAzureDatabaseExporterParamsValidationError{} @@ -13822,6 +14015,7 @@ func (m *ChangeAzureDatabaseExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -13850,6 +14044,7 @@ func (m *ChangeAzureDatabaseExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -13949,8 +14144,7 @@ func (e ChangeAzureDatabaseExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeAzureDatabaseExporterParamsValidationError{} @@ -14056,8 +14250,7 @@ func (e ChangeNomadAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeNomadAgentParamsValidationError{} @@ -14255,8 +14448,7 @@ func (e AddValkeyExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddValkeyExporterParamsValidationError{} @@ -14355,6 +14547,7 @@ func (m *ChangeValkeyExporterParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -14383,6 +14576,7 @@ func (m *ChangeValkeyExporterParams) validate(all bool) error { } } } + } if m.EnablePushMetrics != nil { @@ -14390,6 +14584,7 @@ func (m *ChangeValkeyExporterParams) validate(all bool) error { } if m.Username != nil { + if utf8.RuneCountInString(m.GetUsername()) < 1 { err := ChangeValkeyExporterParamsValidationError{ field: "Username", @@ -14400,6 +14595,7 @@ func (m *ChangeValkeyExporterParams) validate(all bool) error { } errors = append(errors, err) } + } if m.Password != nil { @@ -14505,8 +14701,7 @@ func (e ChangeValkeyExporterParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeValkeyExporterParamsValidationError{} @@ -14681,8 +14876,7 @@ func (e AddRTAMongoDBAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = AddRTAMongoDBAgentParamsValidationError{} @@ -14722,6 +14916,7 @@ func (m *ChangeRTAMongoDBAgentParams) validate(all bool) error { } if m.CustomLabels != nil { + if all { switch v := interface{}(m.GetCustomLabels()).(type) { case interface{ ValidateAll() error }: @@ -14750,6 +14945,7 @@ func (m *ChangeRTAMongoDBAgentParams) validate(all bool) error { } } } + } if m.LogLevel != nil { @@ -14789,6 +14985,7 @@ func (m *ChangeRTAMongoDBAgentParams) validate(all bool) error { } if m.RtaOptions != nil { + if all { switch v := interface{}(m.GetRtaOptions()).(type) { case interface{ ValidateAll() error }: @@ -14817,6 +15014,7 @@ func (m *ChangeRTAMongoDBAgentParams) validate(all bool) error { } } } + } if len(errors) > 0 { @@ -14887,8 +15085,7 @@ func (e ChangeRTAMongoDBAgentParamsValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ChangeRTAMongoDBAgentParamsValidationError{} @@ -15003,8 +15200,7 @@ func (e RemoveAgentRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = RemoveAgentRequestValidationError{} @@ -15106,8 +15302,7 @@ func (e RemoveAgentResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = RemoveAgentResponseValidationError{} diff --git a/api/inventory/v1/agents.proto b/api/inventory/v1/agents.proto index fea2b5df13e..63b1d37d284 100644 --- a/api/inventory/v1/agents.proto +++ b/api/inventory/v1/agents.proto @@ -34,6 +34,7 @@ enum AgentType { AGENT_TYPE_AZURE_DATABASE_EXPORTER = 15; AGENT_TYPE_NOMAD_AGENT = 16; AGENT_TYPE_RTA_MONGODB_AGENT = 19; + AGENT_TYPE_RTA_MYSQL_AGENT = 20; } // PMMAgent runs on Generic or Container Node. @@ -574,6 +575,32 @@ message RTAMongoDBAgent { LogLevel log_level = 11; } +// RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server. +message RTAMySQLAgent { + // Unique agent identifier. + string agent_id = 1; + // The pmm-agent identifier which runs this instance. + string pmm_agent_id = 2; + // Desired Agent status: enabled (false) or disabled (true). + bool disabled = 3; + // Service identifier. + string service_id = 4; + // MySQL username for getting the currently running queries. + string username = 5 [(extensions.v1.sensitive) = REDACT_TYPE_FULL]; + // Use TLS for database connections. + bool tls = 6; + // Skip TLS certificate and hostname validation. + bool tls_skip_verify = 7; + // Custom user-assigned labels. + map custom_labels = 8; + // Real-Time Analytics options. + RTAOptions rta_options = 9; + // Actual Agent status. + AgentStatus status = 10; + // Log level for exporter. + LogLevel log_level = 11; +} + // QANPostgreSQLPgStatementsAgent runs within pmm-agent and sends PostgreSQL Query Analytics data to the PMM Server. message QANPostgreSQLPgStatementsAgent { // Unique randomly generated instance identifier. @@ -805,6 +832,7 @@ message ListAgentsResponse { repeated NomadAgent nomad_agent = 16; repeated ValkeyExporter valkey_exporter = 17; repeated RTAMongoDBAgent rta_mongodb_agent = 19; + repeated RTAMySQLAgent rta_mysql_agent = 20; } // Get @@ -835,6 +863,7 @@ message GetAgentResponse { NomadAgent nomad_agent = 16; ValkeyExporter valkey_exporter = 17; RTAMongoDBAgent rta_mongodb_agent = 19; + RTAMySQLAgent rta_mysql_agent = 20; } } diff --git a/api/inventory/v1/json/client/agents_service/get_agent_responses.go b/api/inventory/v1/json/client/agents_service/get_agent_responses.go index 9f4fc725525..daec9eeb67b 100644 --- a/api/inventory/v1/json/client/agents_service/get_agent_responses.go +++ b/api/inventory/v1/json/client/agents_service/get_agent_responses.go @@ -102,6 +102,7 @@ func (o *GetAgentOK) GetPayload() *GetAgentOKBody { } func (o *GetAgentOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(GetAgentOKBody) // response payload @@ -175,6 +176,7 @@ func (o *GetAgentDefault) GetPayload() *GetAgentDefaultBody { } func (o *GetAgentDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(GetAgentDefaultBody) // response payload @@ -190,6 +192,7 @@ GetAgentDefaultBody get agent default body swagger:model GetAgentDefaultBody */ type GetAgentDefaultBody struct { + // code Code int32 `json:"code,omitempty"` @@ -259,7 +262,9 @@ func (o *GetAgentDefaultBody) ContextValidate(ctx context.Context, formats strfm } func (o *GetAgentDefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Details); i++ { + if o.Details[i] != nil { if swag.IsZero(o.Details[i]) { // not required @@ -279,6 +284,7 @@ func (o *GetAgentDefaultBody) contextValidateDetails(ctx context.Context, format return err } } + } return nil @@ -307,6 +313,7 @@ GetAgentDefaultBodyDetailsItems0 get agent default body details items0 swagger:model GetAgentDefaultBodyDetailsItems0 */ type GetAgentDefaultBodyDetailsItems0 struct { + // at type AtType string `json:"@type,omitempty"` @@ -318,6 +325,7 @@ type GetAgentDefaultBodyDetailsItems0 struct { func (o *GetAgentDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error { // stage 1, bind the properties var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -355,6 +363,7 @@ func (o *GetAgentDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error { // MarshalJSON marshals this object with additional properties into a JSON object func (o GetAgentDefaultBodyDetailsItems0) MarshalJSON() ([]byte, error) { var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -418,6 +427,7 @@ GetAgentOKBody get agent OK body swagger:model GetAgentOKBody */ type GetAgentOKBody struct { + // azure database exporter AzureDatabaseExporter *GetAgentOKBodyAzureDatabaseExporter `json:"azure_database_exporter,omitempty"` @@ -469,6 +479,9 @@ type GetAgentOKBody struct { // rta mongodb agent RtaMongodbAgent *GetAgentOKBodyRtaMongodbAgent `json:"rta_mongodb_agent,omitempty"` + // rta mysql agent + RtaMysqlAgent *GetAgentOKBodyRtaMysqlAgent `json:"rta_mysql_agent,omitempty"` + // valkey exporter ValkeyExporter *GetAgentOKBodyValkeyExporter `json:"valkey_exporter,omitempty"` @@ -548,6 +561,10 @@ func (o *GetAgentOKBody) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := o.validateRtaMysqlAgent(formats); err != nil { + res = append(res, err) + } + if err := o.validateValkeyExporter(formats); err != nil { res = append(res, err) } @@ -953,6 +970,29 @@ func (o *GetAgentOKBody) validateRtaMongodbAgent(formats strfmt.Registry) error return nil } +func (o *GetAgentOKBody) validateRtaMysqlAgent(formats strfmt.Registry) error { + if swag.IsZero(o.RtaMysqlAgent) { // not required + return nil + } + + if o.RtaMysqlAgent != nil { + if err := o.RtaMysqlAgent.Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("getAgentOk" + "." + "rta_mysql_agent") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("getAgentOk" + "." + "rta_mysql_agent") + } + + return err + } + } + + return nil +} + func (o *GetAgentOKBody) validateValkeyExporter(formats strfmt.Registry) error { if swag.IsZero(o.ValkeyExporter) { // not required return nil @@ -1071,6 +1111,10 @@ func (o *GetAgentOKBody) ContextValidate(ctx context.Context, formats strfmt.Reg res = append(res, err) } + if err := o.contextValidateRtaMysqlAgent(ctx, formats); err != nil { + res = append(res, err) + } + if err := o.contextValidateValkeyExporter(ctx, formats); err != nil { res = append(res, err) } @@ -1086,6 +1130,7 @@ func (o *GetAgentOKBody) ContextValidate(ctx context.Context, formats strfmt.Reg } func (o *GetAgentOKBody) contextValidateAzureDatabaseExporter(ctx context.Context, formats strfmt.Registry) error { + if o.AzureDatabaseExporter != nil { if swag.IsZero(o.AzureDatabaseExporter) { // not required @@ -1110,6 +1155,7 @@ func (o *GetAgentOKBody) contextValidateAzureDatabaseExporter(ctx context.Contex } func (o *GetAgentOKBody) contextValidateExternalExporter(ctx context.Context, formats strfmt.Registry) error { + if o.ExternalExporter != nil { if swag.IsZero(o.ExternalExporter) { // not required @@ -1134,6 +1180,7 @@ func (o *GetAgentOKBody) contextValidateExternalExporter(ctx context.Context, fo } func (o *GetAgentOKBody) contextValidateMongodbExporter(ctx context.Context, formats strfmt.Registry) error { + if o.MongodbExporter != nil { if swag.IsZero(o.MongodbExporter) { // not required @@ -1158,6 +1205,7 @@ func (o *GetAgentOKBody) contextValidateMongodbExporter(ctx context.Context, for } func (o *GetAgentOKBody) contextValidateMysqldExporter(ctx context.Context, formats strfmt.Registry) error { + if o.MysqldExporter != nil { if swag.IsZero(o.MysqldExporter) { // not required @@ -1182,6 +1230,7 @@ func (o *GetAgentOKBody) contextValidateMysqldExporter(ctx context.Context, form } func (o *GetAgentOKBody) contextValidateNodeExporter(ctx context.Context, formats strfmt.Registry) error { + if o.NodeExporter != nil { if swag.IsZero(o.NodeExporter) { // not required @@ -1206,6 +1255,7 @@ func (o *GetAgentOKBody) contextValidateNodeExporter(ctx context.Context, format } func (o *GetAgentOKBody) contextValidateNomadAgent(ctx context.Context, formats strfmt.Registry) error { + if o.NomadAgent != nil { if swag.IsZero(o.NomadAgent) { // not required @@ -1230,6 +1280,7 @@ func (o *GetAgentOKBody) contextValidateNomadAgent(ctx context.Context, formats } func (o *GetAgentOKBody) contextValidatePMMAgent(ctx context.Context, formats strfmt.Registry) error { + if o.PMMAgent != nil { if swag.IsZero(o.PMMAgent) { // not required @@ -1254,6 +1305,7 @@ func (o *GetAgentOKBody) contextValidatePMMAgent(ctx context.Context, formats st } func (o *GetAgentOKBody) contextValidatePostgresExporter(ctx context.Context, formats strfmt.Registry) error { + if o.PostgresExporter != nil { if swag.IsZero(o.PostgresExporter) { // not required @@ -1278,6 +1330,7 @@ func (o *GetAgentOKBody) contextValidatePostgresExporter(ctx context.Context, fo } func (o *GetAgentOKBody) contextValidateProxysqlExporter(ctx context.Context, formats strfmt.Registry) error { + if o.ProxysqlExporter != nil { if swag.IsZero(o.ProxysqlExporter) { // not required @@ -1302,6 +1355,7 @@ func (o *GetAgentOKBody) contextValidateProxysqlExporter(ctx context.Context, fo } func (o *GetAgentOKBody) contextValidateQANMongodbMongologAgent(ctx context.Context, formats strfmt.Registry) error { + if o.QANMongodbMongologAgent != nil { if swag.IsZero(o.QANMongodbMongologAgent) { // not required @@ -1326,6 +1380,7 @@ func (o *GetAgentOKBody) contextValidateQANMongodbMongologAgent(ctx context.Cont } func (o *GetAgentOKBody) contextValidateQANMongodbProfilerAgent(ctx context.Context, formats strfmt.Registry) error { + if o.QANMongodbProfilerAgent != nil { if swag.IsZero(o.QANMongodbProfilerAgent) { // not required @@ -1350,6 +1405,7 @@ func (o *GetAgentOKBody) contextValidateQANMongodbProfilerAgent(ctx context.Cont } func (o *GetAgentOKBody) contextValidateQANMysqlPerfschemaAgent(ctx context.Context, formats strfmt.Registry) error { + if o.QANMysqlPerfschemaAgent != nil { if swag.IsZero(o.QANMysqlPerfschemaAgent) { // not required @@ -1374,6 +1430,7 @@ func (o *GetAgentOKBody) contextValidateQANMysqlPerfschemaAgent(ctx context.Cont } func (o *GetAgentOKBody) contextValidateQANMysqlSlowlogAgent(ctx context.Context, formats strfmt.Registry) error { + if o.QANMysqlSlowlogAgent != nil { if swag.IsZero(o.QANMysqlSlowlogAgent) { // not required @@ -1398,6 +1455,7 @@ func (o *GetAgentOKBody) contextValidateQANMysqlSlowlogAgent(ctx context.Context } func (o *GetAgentOKBody) contextValidateQANPostgresqlPgstatementsAgent(ctx context.Context, formats strfmt.Registry) error { + if o.QANPostgresqlPgstatementsAgent != nil { if swag.IsZero(o.QANPostgresqlPgstatementsAgent) { // not required @@ -1422,6 +1480,7 @@ func (o *GetAgentOKBody) contextValidateQANPostgresqlPgstatementsAgent(ctx conte } func (o *GetAgentOKBody) contextValidateQANPostgresqlPgstatmonitorAgent(ctx context.Context, formats strfmt.Registry) error { + if o.QANPostgresqlPgstatmonitorAgent != nil { if swag.IsZero(o.QANPostgresqlPgstatmonitorAgent) { // not required @@ -1446,6 +1505,7 @@ func (o *GetAgentOKBody) contextValidateQANPostgresqlPgstatmonitorAgent(ctx cont } func (o *GetAgentOKBody) contextValidateRDSExporter(ctx context.Context, formats strfmt.Registry) error { + if o.RDSExporter != nil { if swag.IsZero(o.RDSExporter) { // not required @@ -1470,6 +1530,7 @@ func (o *GetAgentOKBody) contextValidateRDSExporter(ctx context.Context, formats } func (o *GetAgentOKBody) contextValidateRtaMongodbAgent(ctx context.Context, formats strfmt.Registry) error { + if o.RtaMongodbAgent != nil { if swag.IsZero(o.RtaMongodbAgent) { // not required @@ -1493,7 +1554,33 @@ func (o *GetAgentOKBody) contextValidateRtaMongodbAgent(ctx context.Context, for return nil } +func (o *GetAgentOKBody) contextValidateRtaMysqlAgent(ctx context.Context, formats strfmt.Registry) error { + + if o.RtaMysqlAgent != nil { + + if swag.IsZero(o.RtaMysqlAgent) { // not required + return nil + } + + if err := o.RtaMysqlAgent.ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("getAgentOk" + "." + "rta_mysql_agent") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("getAgentOk" + "." + "rta_mysql_agent") + } + + return err + } + } + + return nil +} + func (o *GetAgentOKBody) contextValidateValkeyExporter(ctx context.Context, formats strfmt.Registry) error { + if o.ValkeyExporter != nil { if swag.IsZero(o.ValkeyExporter) { // not required @@ -1518,6 +1605,7 @@ func (o *GetAgentOKBody) contextValidateValkeyExporter(ctx context.Context, form } func (o *GetAgentOKBody) contextValidateVmagent(ctx context.Context, formats strfmt.Registry) error { + if o.Vmagent != nil { if swag.IsZero(o.Vmagent) { // not required @@ -1564,6 +1652,7 @@ GetAgentOKBodyAzureDatabaseExporter AzureDatabaseExporter runs on Generic or Con swagger:model GetAgentOKBodyAzureDatabaseExporter */ type GetAgentOKBodyAzureDatabaseExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -1790,6 +1879,7 @@ func (o *GetAgentOKBodyAzureDatabaseExporter) ContextValidate(ctx context.Contex } func (o *GetAgentOKBodyAzureDatabaseExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -1836,6 +1926,7 @@ GetAgentOKBodyAzureDatabaseExporterMetricsResolutions MetricsResolutions represe swagger:model GetAgentOKBodyAzureDatabaseExporterMetricsResolutions */ type GetAgentOKBodyAzureDatabaseExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -1879,6 +1970,7 @@ GetAgentOKBodyExternalExporter ExternalExporter runs on any Node type, including swagger:model GetAgentOKBodyExternalExporter */ type GetAgentOKBodyExternalExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -2047,6 +2139,7 @@ func (o *GetAgentOKBodyExternalExporter) ContextValidate(ctx context.Context, fo } func (o *GetAgentOKBodyExternalExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2093,6 +2186,7 @@ GetAgentOKBodyExternalExporterMetricsResolutions MetricsResolutions represents P swagger:model GetAgentOKBodyExternalExporterMetricsResolutions */ type GetAgentOKBodyExternalExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2136,6 +2230,7 @@ GetAgentOKBodyMongodbExporter MongoDBExporter runs on Generic or Container Node swagger:model GetAgentOKBodyMongodbExporter */ type GetAgentOKBodyMongodbExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -2387,6 +2482,7 @@ func (o *GetAgentOKBodyMongodbExporter) ContextValidate(ctx context.Context, for } func (o *GetAgentOKBodyMongodbExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2433,6 +2529,7 @@ GetAgentOKBodyMongodbExporterMetricsResolutions MetricsResolutions represents Pr swagger:model GetAgentOKBodyMongodbExporterMetricsResolutions */ type GetAgentOKBodyMongodbExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2476,6 +2573,7 @@ GetAgentOKBodyMysqldExporter MySQLdExporter runs on Generic or Container Node an swagger:model GetAgentOKBodyMysqldExporter */ type GetAgentOKBodyMysqldExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -2737,6 +2835,7 @@ func (o *GetAgentOKBodyMysqldExporter) ContextValidate(ctx context.Context, form } func (o *GetAgentOKBodyMysqldExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2783,6 +2882,7 @@ GetAgentOKBodyMysqldExporterMetricsResolutions MetricsResolutions represents Pro swagger:model GetAgentOKBodyMysqldExporterMetricsResolutions */ type GetAgentOKBodyMysqldExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2826,6 +2926,7 @@ GetAgentOKBodyNodeExporter NodeExporter runs on Generic or Container Node and ex swagger:model GetAgentOKBodyNodeExporter */ type GetAgentOKBodyNodeExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3049,6 +3150,7 @@ func (o *GetAgentOKBodyNodeExporter) ContextValidate(ctx context.Context, format } func (o *GetAgentOKBodyNodeExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -3095,6 +3197,7 @@ GetAgentOKBodyNodeExporterMetricsResolutions MetricsResolutions represents Prome swagger:model GetAgentOKBodyNodeExporterMetricsResolutions */ type GetAgentOKBodyNodeExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -3138,6 +3241,7 @@ GetAgentOKBodyNomadAgent get agent OK body nomad agent swagger:model GetAgentOKBodyNomadAgent */ type GetAgentOKBodyNomadAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3268,6 +3372,7 @@ GetAgentOKBodyPMMAgent PMMAgent runs on Generic or Container Node. swagger:model GetAgentOKBodyPMMAgent */ type GetAgentOKBodyPMMAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3317,6 +3422,7 @@ GetAgentOKBodyPostgresExporter PostgresExporter runs on Generic or Container Nod swagger:model GetAgentOKBodyPostgresExporter */ type GetAgentOKBodyPostgresExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3561,6 +3667,7 @@ func (o *GetAgentOKBodyPostgresExporter) ContextValidate(ctx context.Context, fo } func (o *GetAgentOKBodyPostgresExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -3607,6 +3714,7 @@ GetAgentOKBodyPostgresExporterMetricsResolutions MetricsResolutions represents P swagger:model GetAgentOKBodyPostgresExporterMetricsResolutions */ type GetAgentOKBodyPostgresExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -3650,6 +3758,7 @@ GetAgentOKBodyProxysqlExporter ProxySQLExporter runs on Generic or Container Nod swagger:model GetAgentOKBodyProxysqlExporter */ type GetAgentOKBodyProxysqlExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3888,6 +3997,7 @@ func (o *GetAgentOKBodyProxysqlExporter) ContextValidate(ctx context.Context, fo } func (o *GetAgentOKBodyProxysqlExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -3934,6 +4044,7 @@ GetAgentOKBodyProxysqlExporterMetricsResolutions MetricsResolutions represents P swagger:model GetAgentOKBodyProxysqlExporterMetricsResolutions */ type GetAgentOKBodyProxysqlExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -3977,6 +4088,7 @@ GetAgentOKBodyQANMongodbMongologAgent QANMongoDBMongologAgent runs within pmm-ag swagger:model GetAgentOKBodyQANMongodbMongologAgent */ type GetAgentOKBodyQANMongodbMongologAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4186,6 +4298,7 @@ GetAgentOKBodyQANMongodbProfilerAgent QANMongoDBProfilerAgent runs within pmm-ag swagger:model GetAgentOKBodyQANMongodbProfilerAgent */ type GetAgentOKBodyQANMongodbProfilerAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4395,6 +4508,7 @@ GetAgentOKBodyQANMysqlPerfschemaAgent QANMySQLPerfSchemaAgent runs within pmm-ag swagger:model GetAgentOKBodyQANMysqlPerfschemaAgent */ type GetAgentOKBodyQANMysqlPerfschemaAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4622,6 +4736,7 @@ GetAgentOKBodyQANMysqlSlowlogAgent QANMySQLSlowlogAgent runs within pmm-agent an swagger:model GetAgentOKBodyQANMysqlSlowlogAgent */ type GetAgentOKBodyQANMysqlSlowlogAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4852,6 +4967,7 @@ GetAgentOKBodyQANPostgresqlPgstatementsAgent QANPostgreSQLPgStatementsAgent runs swagger:model GetAgentOKBodyQANPostgresqlPgstatementsAgent */ type GetAgentOKBodyQANPostgresqlPgstatementsAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5064,6 +5180,7 @@ GetAgentOKBodyQANPostgresqlPgstatmonitorAgent QANPostgreSQLPgStatMonitorAgent ru swagger:model GetAgentOKBodyQANPostgresqlPgstatmonitorAgent */ type GetAgentOKBodyQANPostgresqlPgstatmonitorAgent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5279,6 +5396,7 @@ GetAgentOKBodyRDSExporter RDSExporter runs on Generic or Container Node and expo swagger:model GetAgentOKBodyRDSExporter */ type GetAgentOKBodyRDSExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5511,6 +5629,7 @@ func (o *GetAgentOKBodyRDSExporter) ContextValidate(ctx context.Context, formats } func (o *GetAgentOKBodyRDSExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -5557,6 +5676,7 @@ GetAgentOKBodyRDSExporterMetricsResolutions MetricsResolutions represents Promet swagger:model GetAgentOKBodyRDSExporterMetricsResolutions */ type GetAgentOKBodyRDSExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -5600,6 +5720,7 @@ GetAgentOKBodyRtaMongodbAgent RTAMongoDBAgent runs within pmm-agent and sends Mo swagger:model GetAgentOKBodyRtaMongodbAgent */ type GetAgentOKBodyRtaMongodbAgent struct { + // Unique agent identifier. AgentID string `json:"agent_id,omitempty"` @@ -5820,6 +5941,7 @@ func (o *GetAgentOKBodyRtaMongodbAgent) ContextValidate(ctx context.Context, for } func (o *GetAgentOKBodyRtaMongodbAgent) contextValidateRtaOptions(ctx context.Context, formats strfmt.Registry) error { + if o.RtaOptions != nil { if swag.IsZero(o.RtaOptions) { // not required @@ -5866,6 +5988,7 @@ GetAgentOKBodyRtaMongodbAgentRtaOptions RTAOptions holds Real-Time Query Analyti swagger:model GetAgentOKBodyRtaMongodbAgentRtaOptions */ type GetAgentOKBodyRtaMongodbAgentRtaOptions struct { + // Query collect interval (default 2s is set by server). CollectInterval string `json:"collect_interval,omitempty"` } @@ -5898,11 +6021,318 @@ func (o *GetAgentOKBodyRtaMongodbAgentRtaOptions) UnmarshalBinary(b []byte) erro return nil } +/* +GetAgentOKBodyRtaMysqlAgent RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server. +swagger:model GetAgentOKBodyRtaMysqlAgent +*/ +type GetAgentOKBodyRtaMysqlAgent struct { + + // Unique agent identifier. + AgentID string `json:"agent_id,omitempty"` + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `json:"disabled,omitempty"` + + // Service identifier. + ServiceID string `json:"service_id,omitempty"` + + // MySQL username for getting the currently running queries. + Username string `json:"username,omitempty"` + + // Use TLS for database connections. + TLS bool `json:"tls,omitempty"` + + // Skip TLS certificate and hostname validation. + TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // AgentStatus represents actual Agent status. + // + // - AGENT_STATUS_STARTING: Agent is starting. + // - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting. + // - AGENT_STATUS_RUNNING: Agent is running. + // - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon. + // - AGENT_STATUS_STOPPING: Agent is stopping. + // - AGENT_STATUS_DONE: Agent has been stopped or disabled. + // - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state. + // Enum: ["AGENT_STATUS_UNSPECIFIED","AGENT_STATUS_STARTING","AGENT_STATUS_INITIALIZATION_ERROR","AGENT_STATUS_RUNNING","AGENT_STATUS_WAITING","AGENT_STATUS_STOPPING","AGENT_STATUS_DONE","AGENT_STATUS_UNKNOWN"] + Status *string `json:"status,omitempty"` + + // Log level for exporters + // + // - LOG_LEVEL_UNSPECIFIED: Auto + // Enum: ["LOG_LEVEL_UNSPECIFIED","LOG_LEVEL_FATAL","LOG_LEVEL_ERROR","LOG_LEVEL_WARN","LOG_LEVEL_INFO","LOG_LEVEL_DEBUG"] + LogLevel *string `json:"log_level,omitempty"` + + // rta options + RtaOptions *GetAgentOKBodyRtaMysqlAgentRtaOptions `json:"rta_options,omitempty"` +} + +// Validate validates this get agent OK body rta mysql agent +func (o *GetAgentOKBodyRtaMysqlAgent) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateStatus(formats); err != nil { + res = append(res, err) + } + + if err := o.validateLogLevel(formats); err != nil { + res = append(res, err) + } + + if err := o.validateRtaOptions(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var getAgentOkBodyRtaMysqlAgentTypeStatusPropEnum []any + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["AGENT_STATUS_UNSPECIFIED","AGENT_STATUS_STARTING","AGENT_STATUS_INITIALIZATION_ERROR","AGENT_STATUS_RUNNING","AGENT_STATUS_WAITING","AGENT_STATUS_STOPPING","AGENT_STATUS_DONE","AGENT_STATUS_UNKNOWN"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + getAgentOkBodyRtaMysqlAgentTypeStatusPropEnum = append(getAgentOkBodyRtaMysqlAgentTypeStatusPropEnum, v) + } +} + +const ( + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSUNSPECIFIED captures enum value "AGENT_STATUS_UNSPECIFIED" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSUNSPECIFIED string = "AGENT_STATUS_UNSPECIFIED" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSSTARTING captures enum value "AGENT_STATUS_STARTING" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSSTARTING string = "AGENT_STATUS_STARTING" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSINITIALIZATIONERROR captures enum value "AGENT_STATUS_INITIALIZATION_ERROR" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSINITIALIZATIONERROR string = "AGENT_STATUS_INITIALIZATION_ERROR" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSRUNNING captures enum value "AGENT_STATUS_RUNNING" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSRUNNING string = "AGENT_STATUS_RUNNING" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSWAITING captures enum value "AGENT_STATUS_WAITING" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSWAITING string = "AGENT_STATUS_WAITING" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSSTOPPING captures enum value "AGENT_STATUS_STOPPING" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSSTOPPING string = "AGENT_STATUS_STOPPING" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSDONE captures enum value "AGENT_STATUS_DONE" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSDONE string = "AGENT_STATUS_DONE" + + // GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSUNKNOWN captures enum value "AGENT_STATUS_UNKNOWN" + GetAgentOKBodyRtaMysqlAgentStatusAGENTSTATUSUNKNOWN string = "AGENT_STATUS_UNKNOWN" +) + +// prop value enum +func (o *GetAgentOKBodyRtaMysqlAgent) validateStatusEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, getAgentOkBodyRtaMysqlAgentTypeStatusPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *GetAgentOKBodyRtaMysqlAgent) validateStatus(formats strfmt.Registry) error { + if swag.IsZero(o.Status) { // not required + return nil + } + + // value enum + if err := o.validateStatusEnum("getAgentOk"+"."+"rta_mysql_agent"+"."+"status", "body", *o.Status); err != nil { + return err + } + + return nil +} + +var getAgentOkBodyRtaMysqlAgentTypeLogLevelPropEnum []any + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["LOG_LEVEL_UNSPECIFIED","LOG_LEVEL_FATAL","LOG_LEVEL_ERROR","LOG_LEVEL_WARN","LOG_LEVEL_INFO","LOG_LEVEL_DEBUG"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + getAgentOkBodyRtaMysqlAgentTypeLogLevelPropEnum = append(getAgentOkBodyRtaMysqlAgentTypeLogLevelPropEnum, v) + } +} + +const ( + + // GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELUNSPECIFIED captures enum value "LOG_LEVEL_UNSPECIFIED" + GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELUNSPECIFIED string = "LOG_LEVEL_UNSPECIFIED" + + // GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELFATAL captures enum value "LOG_LEVEL_FATAL" + GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELFATAL string = "LOG_LEVEL_FATAL" + + // GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELERROR captures enum value "LOG_LEVEL_ERROR" + GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELERROR string = "LOG_LEVEL_ERROR" + + // GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELWARN captures enum value "LOG_LEVEL_WARN" + GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELWARN string = "LOG_LEVEL_WARN" + + // GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELINFO captures enum value "LOG_LEVEL_INFO" + GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELINFO string = "LOG_LEVEL_INFO" + + // GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELDEBUG captures enum value "LOG_LEVEL_DEBUG" + GetAgentOKBodyRtaMysqlAgentLogLevelLOGLEVELDEBUG string = "LOG_LEVEL_DEBUG" +) + +// prop value enum +func (o *GetAgentOKBodyRtaMysqlAgent) validateLogLevelEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, getAgentOkBodyRtaMysqlAgentTypeLogLevelPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *GetAgentOKBodyRtaMysqlAgent) validateLogLevel(formats strfmt.Registry) error { + if swag.IsZero(o.LogLevel) { // not required + return nil + } + + // value enum + if err := o.validateLogLevelEnum("getAgentOk"+"."+"rta_mysql_agent"+"."+"log_level", "body", *o.LogLevel); err != nil { + return err + } + + return nil +} + +func (o *GetAgentOKBodyRtaMysqlAgent) validateRtaOptions(formats strfmt.Registry) error { + if swag.IsZero(o.RtaOptions) { // not required + return nil + } + + if o.RtaOptions != nil { + if err := o.RtaOptions.Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("getAgentOk" + "." + "rta_mysql_agent" + "." + "rta_options") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("getAgentOk" + "." + "rta_mysql_agent" + "." + "rta_options") + } + + return err + } + } + + return nil +} + +// ContextValidate validate this get agent OK body rta mysql agent based on the context it is used +func (o *GetAgentOKBodyRtaMysqlAgent) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateRtaOptions(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *GetAgentOKBodyRtaMysqlAgent) contextValidateRtaOptions(ctx context.Context, formats strfmt.Registry) error { + + if o.RtaOptions != nil { + + if swag.IsZero(o.RtaOptions) { // not required + return nil + } + + if err := o.RtaOptions.ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("getAgentOk" + "." + "rta_mysql_agent" + "." + "rta_options") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("getAgentOk" + "." + "rta_mysql_agent" + "." + "rta_options") + } + + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *GetAgentOKBodyRtaMysqlAgent) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *GetAgentOKBodyRtaMysqlAgent) UnmarshalBinary(b []byte) error { + var res GetAgentOKBodyRtaMysqlAgent + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +GetAgentOKBodyRtaMysqlAgentRtaOptions RTAOptions holds Real-Time Query Analytics agent options. +swagger:model GetAgentOKBodyRtaMysqlAgentRtaOptions +*/ +type GetAgentOKBodyRtaMysqlAgentRtaOptions struct { + + // Query collect interval (default 2s is set by server). + CollectInterval string `json:"collect_interval,omitempty"` +} + +// Validate validates this get agent OK body rta mysql agent rta options +func (o *GetAgentOKBodyRtaMysqlAgentRtaOptions) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this get agent OK body rta mysql agent rta options based on context it is used +func (o *GetAgentOKBodyRtaMysqlAgentRtaOptions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *GetAgentOKBodyRtaMysqlAgentRtaOptions) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *GetAgentOKBodyRtaMysqlAgentRtaOptions) UnmarshalBinary(b []byte) error { + var res GetAgentOKBodyRtaMysqlAgentRtaOptions + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /* GetAgentOKBodyValkeyExporter ValkeyExporter runs on Generic or Container Node and exposes Valkey Service metrics. swagger:model GetAgentOKBodyValkeyExporter */ type GetAgentOKBodyValkeyExporter struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -6077,6 +6507,7 @@ func (o *GetAgentOKBodyValkeyExporter) ContextValidate(ctx context.Context, form } func (o *GetAgentOKBodyValkeyExporter) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -6123,6 +6554,7 @@ GetAgentOKBodyValkeyExporterMetricsResolutions MetricsResolutions represents Pro swagger:model GetAgentOKBodyValkeyExporterMetricsResolutions */ type GetAgentOKBodyValkeyExporterMetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -6168,6 +6600,7 @@ GetAgentOKBodyVmagent VMAgent runs on Generic or Container Node alongside pmm-ag swagger:model GetAgentOKBodyVmagent */ type GetAgentOKBodyVmagent struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` diff --git a/api/inventory/v1/json/client/agents_service/list_agents_responses.go b/api/inventory/v1/json/client/agents_service/list_agents_responses.go index 0bffc1a715a..9428c9c1e0b 100644 --- a/api/inventory/v1/json/client/agents_service/list_agents_responses.go +++ b/api/inventory/v1/json/client/agents_service/list_agents_responses.go @@ -102,6 +102,7 @@ func (o *ListAgentsOK) GetPayload() *ListAgentsOKBody { } func (o *ListAgentsOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ListAgentsOKBody) // response payload @@ -175,6 +176,7 @@ func (o *ListAgentsDefault) GetPayload() *ListAgentsDefaultBody { } func (o *ListAgentsDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ListAgentsDefaultBody) // response payload @@ -190,6 +192,7 @@ ListAgentsDefaultBody list agents default body swagger:model ListAgentsDefaultBody */ type ListAgentsDefaultBody struct { + // code Code int32 `json:"code,omitempty"` @@ -259,7 +262,9 @@ func (o *ListAgentsDefaultBody) ContextValidate(ctx context.Context, formats str } func (o *ListAgentsDefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Details); i++ { + if o.Details[i] != nil { if swag.IsZero(o.Details[i]) { // not required @@ -279,6 +284,7 @@ func (o *ListAgentsDefaultBody) contextValidateDetails(ctx context.Context, form return err } } + } return nil @@ -307,6 +313,7 @@ ListAgentsDefaultBodyDetailsItems0 list agents default body details items0 swagger:model ListAgentsDefaultBodyDetailsItems0 */ type ListAgentsDefaultBodyDetailsItems0 struct { + // at type AtType string `json:"@type,omitempty"` @@ -318,6 +325,7 @@ type ListAgentsDefaultBodyDetailsItems0 struct { func (o *ListAgentsDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error { // stage 1, bind the properties var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -355,6 +363,7 @@ func (o *ListAgentsDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error { // MarshalJSON marshals this object with additional properties into a JSON object func (o ListAgentsDefaultBodyDetailsItems0) MarshalJSON() ([]byte, error) { var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -418,6 +427,7 @@ ListAgentsOKBody list agents OK body swagger:model ListAgentsOKBody */ type ListAgentsOKBody struct { + // pmm agent PMMAgent []*ListAgentsOKBodyPMMAgentItems0 `json:"pmm_agent"` @@ -474,6 +484,9 @@ type ListAgentsOKBody struct { // rta mongodb agent RtaMongodbAgent []*ListAgentsOKBodyRtaMongodbAgentItems0 `json:"rta_mongodb_agent"` + + // rta mysql agent + RtaMysqlAgent []*ListAgentsOKBodyRtaMysqlAgentItems0 `json:"rta_mysql_agent"` } // Validate validates this list agents OK body @@ -556,6 +569,10 @@ func (o *ListAgentsOKBody) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := o.validateRtaMysqlAgent(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -1132,6 +1149,36 @@ func (o *ListAgentsOKBody) validateRtaMongodbAgent(formats strfmt.Registry) erro return nil } +func (o *ListAgentsOKBody) validateRtaMysqlAgent(formats strfmt.Registry) error { + if swag.IsZero(o.RtaMysqlAgent) { // not required + return nil + } + + for i := 0; i < len(o.RtaMysqlAgent); i++ { + if swag.IsZero(o.RtaMysqlAgent[i]) { // not required + continue + } + + if o.RtaMysqlAgent[i] != nil { + if err := o.RtaMysqlAgent[i].Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("listAgentsOk" + "." + "rta_mysql_agent" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("listAgentsOk" + "." + "rta_mysql_agent" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + // ContextValidate validate this list agents OK body based on the context it is used func (o *ListAgentsOKBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { var res []error @@ -1212,6 +1259,10 @@ func (o *ListAgentsOKBody) ContextValidate(ctx context.Context, formats strfmt.R res = append(res, err) } + if err := o.contextValidateRtaMysqlAgent(ctx, formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -1219,7 +1270,9 @@ func (o *ListAgentsOKBody) ContextValidate(ctx context.Context, formats strfmt.R } func (o *ListAgentsOKBody) contextValidatePMMAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.PMMAgent); i++ { + if o.PMMAgent[i] != nil { if swag.IsZero(o.PMMAgent[i]) { // not required @@ -1239,13 +1292,16 @@ func (o *ListAgentsOKBody) contextValidatePMMAgent(ctx context.Context, formats return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateVMAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.VMAgent); i++ { + if o.VMAgent[i] != nil { if swag.IsZero(o.VMAgent[i]) { // not required @@ -1265,13 +1321,16 @@ func (o *ListAgentsOKBody) contextValidateVMAgent(ctx context.Context, formats s return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateNodeExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.NodeExporter); i++ { + if o.NodeExporter[i] != nil { if swag.IsZero(o.NodeExporter[i]) { // not required @@ -1291,13 +1350,16 @@ func (o *ListAgentsOKBody) contextValidateNodeExporter(ctx context.Context, form return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateMysqldExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.MysqldExporter); i++ { + if o.MysqldExporter[i] != nil { if swag.IsZero(o.MysqldExporter[i]) { // not required @@ -1317,13 +1379,16 @@ func (o *ListAgentsOKBody) contextValidateMysqldExporter(ctx context.Context, fo return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateMongodbExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.MongodbExporter); i++ { + if o.MongodbExporter[i] != nil { if swag.IsZero(o.MongodbExporter[i]) { // not required @@ -1343,13 +1408,16 @@ func (o *ListAgentsOKBody) contextValidateMongodbExporter(ctx context.Context, f return err } } + } return nil } func (o *ListAgentsOKBody) contextValidatePostgresExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.PostgresExporter); i++ { + if o.PostgresExporter[i] != nil { if swag.IsZero(o.PostgresExporter[i]) { // not required @@ -1369,13 +1437,16 @@ func (o *ListAgentsOKBody) contextValidatePostgresExporter(ctx context.Context, return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateProxysqlExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.ProxysqlExporter); i++ { + if o.ProxysqlExporter[i] != nil { if swag.IsZero(o.ProxysqlExporter[i]) { // not required @@ -1395,13 +1466,16 @@ func (o *ListAgentsOKBody) contextValidateProxysqlExporter(ctx context.Context, return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateQANMysqlPerfschemaAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.QANMysqlPerfschemaAgent); i++ { + if o.QANMysqlPerfschemaAgent[i] != nil { if swag.IsZero(o.QANMysqlPerfschemaAgent[i]) { // not required @@ -1421,13 +1495,16 @@ func (o *ListAgentsOKBody) contextValidateQANMysqlPerfschemaAgent(ctx context.Co return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateQANMysqlSlowlogAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.QANMysqlSlowlogAgent); i++ { + if o.QANMysqlSlowlogAgent[i] != nil { if swag.IsZero(o.QANMysqlSlowlogAgent[i]) { // not required @@ -1447,13 +1524,16 @@ func (o *ListAgentsOKBody) contextValidateQANMysqlSlowlogAgent(ctx context.Conte return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateQANMongodbProfilerAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.QANMongodbProfilerAgent); i++ { + if o.QANMongodbProfilerAgent[i] != nil { if swag.IsZero(o.QANMongodbProfilerAgent[i]) { // not required @@ -1473,13 +1553,16 @@ func (o *ListAgentsOKBody) contextValidateQANMongodbProfilerAgent(ctx context.Co return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateQANMongodbMongologAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.QANMongodbMongologAgent); i++ { + if o.QANMongodbMongologAgent[i] != nil { if swag.IsZero(o.QANMongodbMongologAgent[i]) { // not required @@ -1499,13 +1582,16 @@ func (o *ListAgentsOKBody) contextValidateQANMongodbMongologAgent(ctx context.Co return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateQANPostgresqlPgstatementsAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.QANPostgresqlPgstatementsAgent); i++ { + if o.QANPostgresqlPgstatementsAgent[i] != nil { if swag.IsZero(o.QANPostgresqlPgstatementsAgent[i]) { // not required @@ -1525,13 +1611,16 @@ func (o *ListAgentsOKBody) contextValidateQANPostgresqlPgstatementsAgent(ctx con return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateQANPostgresqlPgstatmonitorAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.QANPostgresqlPgstatmonitorAgent); i++ { + if o.QANPostgresqlPgstatmonitorAgent[i] != nil { if swag.IsZero(o.QANPostgresqlPgstatmonitorAgent[i]) { // not required @@ -1551,13 +1640,16 @@ func (o *ListAgentsOKBody) contextValidateQANPostgresqlPgstatmonitorAgent(ctx co return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateExternalExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.ExternalExporter); i++ { + if o.ExternalExporter[i] != nil { if swag.IsZero(o.ExternalExporter[i]) { // not required @@ -1577,13 +1669,16 @@ func (o *ListAgentsOKBody) contextValidateExternalExporter(ctx context.Context, return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateRDSExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.RDSExporter); i++ { + if o.RDSExporter[i] != nil { if swag.IsZero(o.RDSExporter[i]) { // not required @@ -1603,13 +1698,16 @@ func (o *ListAgentsOKBody) contextValidateRDSExporter(ctx context.Context, forma return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateAzureDatabaseExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.AzureDatabaseExporter); i++ { + if o.AzureDatabaseExporter[i] != nil { if swag.IsZero(o.AzureDatabaseExporter[i]) { // not required @@ -1629,13 +1727,16 @@ func (o *ListAgentsOKBody) contextValidateAzureDatabaseExporter(ctx context.Cont return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateNomadAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.NomadAgent); i++ { + if o.NomadAgent[i] != nil { if swag.IsZero(o.NomadAgent[i]) { // not required @@ -1655,13 +1756,16 @@ func (o *ListAgentsOKBody) contextValidateNomadAgent(ctx context.Context, format return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateValkeyExporter(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.ValkeyExporter); i++ { + if o.ValkeyExporter[i] != nil { if swag.IsZero(o.ValkeyExporter[i]) { // not required @@ -1681,13 +1785,16 @@ func (o *ListAgentsOKBody) contextValidateValkeyExporter(ctx context.Context, fo return err } } + } return nil } func (o *ListAgentsOKBody) contextValidateRtaMongodbAgent(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.RtaMongodbAgent); i++ { + if o.RtaMongodbAgent[i] != nil { if swag.IsZero(o.RtaMongodbAgent[i]) { // not required @@ -1707,6 +1814,36 @@ func (o *ListAgentsOKBody) contextValidateRtaMongodbAgent(ctx context.Context, f return err } } + + } + + return nil +} + +func (o *ListAgentsOKBody) contextValidateRtaMysqlAgent(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(o.RtaMysqlAgent); i++ { + + if o.RtaMysqlAgent[i] != nil { + + if swag.IsZero(o.RtaMysqlAgent[i]) { // not required + return nil + } + + if err := o.RtaMysqlAgent[i].ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("listAgentsOk" + "." + "rta_mysql_agent" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("listAgentsOk" + "." + "rta_mysql_agent" + "." + strconv.Itoa(i)) + } + + return err + } + } + } return nil @@ -1735,6 +1872,7 @@ ListAgentsOKBodyAzureDatabaseExporterItems0 AzureDatabaseExporter runs on Generi swagger:model ListAgentsOKBodyAzureDatabaseExporterItems0 */ type ListAgentsOKBodyAzureDatabaseExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -1961,6 +2099,7 @@ func (o *ListAgentsOKBodyAzureDatabaseExporterItems0) ContextValidate(ctx contex } func (o *ListAgentsOKBodyAzureDatabaseExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2007,6 +2146,7 @@ ListAgentsOKBodyAzureDatabaseExporterItems0MetricsResolutions MetricsResolutions swagger:model ListAgentsOKBodyAzureDatabaseExporterItems0MetricsResolutions */ type ListAgentsOKBodyAzureDatabaseExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2050,6 +2190,7 @@ ListAgentsOKBodyExternalExporterItems0 ExternalExporter runs on any Node type, i swagger:model ListAgentsOKBodyExternalExporterItems0 */ type ListAgentsOKBodyExternalExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -2218,6 +2359,7 @@ func (o *ListAgentsOKBodyExternalExporterItems0) ContextValidate(ctx context.Con } func (o *ListAgentsOKBodyExternalExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2264,6 +2406,7 @@ ListAgentsOKBodyExternalExporterItems0MetricsResolutions MetricsResolutions repr swagger:model ListAgentsOKBodyExternalExporterItems0MetricsResolutions */ type ListAgentsOKBodyExternalExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2307,6 +2450,7 @@ ListAgentsOKBodyMongodbExporterItems0 MongoDBExporter runs on Generic or Contain swagger:model ListAgentsOKBodyMongodbExporterItems0 */ type ListAgentsOKBodyMongodbExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -2558,6 +2702,7 @@ func (o *ListAgentsOKBodyMongodbExporterItems0) ContextValidate(ctx context.Cont } func (o *ListAgentsOKBodyMongodbExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2604,6 +2749,7 @@ ListAgentsOKBodyMongodbExporterItems0MetricsResolutions MetricsResolutions repre swagger:model ListAgentsOKBodyMongodbExporterItems0MetricsResolutions */ type ListAgentsOKBodyMongodbExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2647,6 +2793,7 @@ ListAgentsOKBodyMysqldExporterItems0 MySQLdExporter runs on Generic or Container swagger:model ListAgentsOKBodyMysqldExporterItems0 */ type ListAgentsOKBodyMysqldExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -2908,6 +3055,7 @@ func (o *ListAgentsOKBodyMysqldExporterItems0) ContextValidate(ctx context.Conte } func (o *ListAgentsOKBodyMysqldExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -2954,6 +3102,7 @@ ListAgentsOKBodyMysqldExporterItems0MetricsResolutions MetricsResolutions repres swagger:model ListAgentsOKBodyMysqldExporterItems0MetricsResolutions */ type ListAgentsOKBodyMysqldExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -2997,6 +3146,7 @@ ListAgentsOKBodyNodeExporterItems0 NodeExporter runs on Generic or Container Nod swagger:model ListAgentsOKBodyNodeExporterItems0 */ type ListAgentsOKBodyNodeExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3220,6 +3370,7 @@ func (o *ListAgentsOKBodyNodeExporterItems0) ContextValidate(ctx context.Context } func (o *ListAgentsOKBodyNodeExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -3266,6 +3417,7 @@ ListAgentsOKBodyNodeExporterItems0MetricsResolutions MetricsResolutions represen swagger:model ListAgentsOKBodyNodeExporterItems0MetricsResolutions */ type ListAgentsOKBodyNodeExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -3309,6 +3461,7 @@ ListAgentsOKBodyNomadAgentItems0 list agents OK body nomad agent items0 swagger:model ListAgentsOKBodyNomadAgentItems0 */ type ListAgentsOKBodyNomadAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3439,6 +3592,7 @@ ListAgentsOKBodyPMMAgentItems0 PMMAgent runs on Generic or Container Node. swagger:model ListAgentsOKBodyPMMAgentItems0 */ type ListAgentsOKBodyPMMAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3488,6 +3642,7 @@ ListAgentsOKBodyPostgresExporterItems0 PostgresExporter runs on Generic or Conta swagger:model ListAgentsOKBodyPostgresExporterItems0 */ type ListAgentsOKBodyPostgresExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -3732,6 +3887,7 @@ func (o *ListAgentsOKBodyPostgresExporterItems0) ContextValidate(ctx context.Con } func (o *ListAgentsOKBodyPostgresExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -3778,6 +3934,7 @@ ListAgentsOKBodyPostgresExporterItems0MetricsResolutions MetricsResolutions repr swagger:model ListAgentsOKBodyPostgresExporterItems0MetricsResolutions */ type ListAgentsOKBodyPostgresExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -3821,6 +3978,7 @@ ListAgentsOKBodyProxysqlExporterItems0 ProxySQLExporter runs on Generic or Conta swagger:model ListAgentsOKBodyProxysqlExporterItems0 */ type ListAgentsOKBodyProxysqlExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4059,6 +4217,7 @@ func (o *ListAgentsOKBodyProxysqlExporterItems0) ContextValidate(ctx context.Con } func (o *ListAgentsOKBodyProxysqlExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -4105,6 +4264,7 @@ ListAgentsOKBodyProxysqlExporterItems0MetricsResolutions MetricsResolutions repr swagger:model ListAgentsOKBodyProxysqlExporterItems0MetricsResolutions */ type ListAgentsOKBodyProxysqlExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -4148,6 +4308,7 @@ ListAgentsOKBodyQANMongodbMongologAgentItems0 QANMongoDBMongologAgent runs withi swagger:model ListAgentsOKBodyQANMongodbMongologAgentItems0 */ type ListAgentsOKBodyQANMongodbMongologAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4357,6 +4518,7 @@ ListAgentsOKBodyQANMongodbProfilerAgentItems0 QANMongoDBProfilerAgent runs withi swagger:model ListAgentsOKBodyQANMongodbProfilerAgentItems0 */ type ListAgentsOKBodyQANMongodbProfilerAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4566,6 +4728,7 @@ ListAgentsOKBodyQANMysqlPerfschemaAgentItems0 QANMySQLPerfSchemaAgent runs withi swagger:model ListAgentsOKBodyQANMysqlPerfschemaAgentItems0 */ type ListAgentsOKBodyQANMysqlPerfschemaAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -4793,6 +4956,7 @@ ListAgentsOKBodyQANMysqlSlowlogAgentItems0 QANMySQLSlowlogAgent runs within pmm- swagger:model ListAgentsOKBodyQANMysqlSlowlogAgentItems0 */ type ListAgentsOKBodyQANMysqlSlowlogAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5023,6 +5187,7 @@ ListAgentsOKBodyQANPostgresqlPgstatementsAgentItems0 QANPostgreSQLPgStatementsAg swagger:model ListAgentsOKBodyQANPostgresqlPgstatementsAgentItems0 */ type ListAgentsOKBodyQANPostgresqlPgstatementsAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5235,6 +5400,7 @@ ListAgentsOKBodyQANPostgresqlPgstatmonitorAgentItems0 QANPostgreSQLPgStatMonitor swagger:model ListAgentsOKBodyQANPostgresqlPgstatmonitorAgentItems0 */ type ListAgentsOKBodyQANPostgresqlPgstatmonitorAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5450,6 +5616,7 @@ ListAgentsOKBodyRDSExporterItems0 RDSExporter runs on Generic or Container Node swagger:model ListAgentsOKBodyRDSExporterItems0 */ type ListAgentsOKBodyRDSExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -5682,6 +5849,7 @@ func (o *ListAgentsOKBodyRDSExporterItems0) ContextValidate(ctx context.Context, } func (o *ListAgentsOKBodyRDSExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -5728,6 +5896,7 @@ ListAgentsOKBodyRDSExporterItems0MetricsResolutions MetricsResolutions represent swagger:model ListAgentsOKBodyRDSExporterItems0MetricsResolutions */ type ListAgentsOKBodyRDSExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` @@ -5771,6 +5940,7 @@ ListAgentsOKBodyRtaMongodbAgentItems0 RTAMongoDBAgent runs within pmm-agent and swagger:model ListAgentsOKBodyRtaMongodbAgentItems0 */ type ListAgentsOKBodyRtaMongodbAgentItems0 struct { + // Unique agent identifier. AgentID string `json:"agent_id,omitempty"` @@ -5991,6 +6161,7 @@ func (o *ListAgentsOKBodyRtaMongodbAgentItems0) ContextValidate(ctx context.Cont } func (o *ListAgentsOKBodyRtaMongodbAgentItems0) contextValidateRtaOptions(ctx context.Context, formats strfmt.Registry) error { + if o.RtaOptions != nil { if swag.IsZero(o.RtaOptions) { // not required @@ -6037,6 +6208,7 @@ ListAgentsOKBodyRtaMongodbAgentItems0RtaOptions RTAOptions holds Real-Time Query swagger:model ListAgentsOKBodyRtaMongodbAgentItems0RtaOptions */ type ListAgentsOKBodyRtaMongodbAgentItems0RtaOptions struct { + // Query collect interval (default 2s is set by server). CollectInterval string `json:"collect_interval,omitempty"` } @@ -6069,6 +6241,312 @@ func (o *ListAgentsOKBodyRtaMongodbAgentItems0RtaOptions) UnmarshalBinary(b []by return nil } +/* +ListAgentsOKBodyRtaMysqlAgentItems0 RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server. +swagger:model ListAgentsOKBodyRtaMysqlAgentItems0 +*/ +type ListAgentsOKBodyRtaMysqlAgentItems0 struct { + + // Unique agent identifier. + AgentID string `json:"agent_id,omitempty"` + + // The pmm-agent identifier which runs this instance. + PMMAgentID string `json:"pmm_agent_id,omitempty"` + + // Desired Agent status: enabled (false) or disabled (true). + Disabled bool `json:"disabled,omitempty"` + + // Service identifier. + ServiceID string `json:"service_id,omitempty"` + + // MySQL username for getting the currently running queries. + Username string `json:"username,omitempty"` + + // Use TLS for database connections. + TLS bool `json:"tls,omitempty"` + + // Skip TLS certificate and hostname validation. + TLSSkipVerify bool `json:"tls_skip_verify,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // AgentStatus represents actual Agent status. + // + // - AGENT_STATUS_STARTING: Agent is starting. + // - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting. + // - AGENT_STATUS_RUNNING: Agent is running. + // - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon. + // - AGENT_STATUS_STOPPING: Agent is stopping. + // - AGENT_STATUS_DONE: Agent has been stopped or disabled. + // - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state. + // Enum: ["AGENT_STATUS_UNSPECIFIED","AGENT_STATUS_STARTING","AGENT_STATUS_INITIALIZATION_ERROR","AGENT_STATUS_RUNNING","AGENT_STATUS_WAITING","AGENT_STATUS_STOPPING","AGENT_STATUS_DONE","AGENT_STATUS_UNKNOWN"] + Status *string `json:"status,omitempty"` + + // Log level for exporters + // + // - LOG_LEVEL_UNSPECIFIED: Auto + // Enum: ["LOG_LEVEL_UNSPECIFIED","LOG_LEVEL_FATAL","LOG_LEVEL_ERROR","LOG_LEVEL_WARN","LOG_LEVEL_INFO","LOG_LEVEL_DEBUG"] + LogLevel *string `json:"log_level,omitempty"` + + // rta options + RtaOptions *ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions `json:"rta_options,omitempty"` +} + +// Validate validates this list agents OK body rta mysql agent items0 +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) Validate(formats strfmt.Registry) error { + var res []error + + if err := o.validateStatus(formats); err != nil { + res = append(res, err) + } + + if err := o.validateLogLevel(formats); err != nil { + res = append(res, err) + } + + if err := o.validateRtaOptions(formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +var listAgentsOkBodyRtaMysqlAgentItems0TypeStatusPropEnum []any + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["AGENT_STATUS_UNSPECIFIED","AGENT_STATUS_STARTING","AGENT_STATUS_INITIALIZATION_ERROR","AGENT_STATUS_RUNNING","AGENT_STATUS_WAITING","AGENT_STATUS_STOPPING","AGENT_STATUS_DONE","AGENT_STATUS_UNKNOWN"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + listAgentsOkBodyRtaMysqlAgentItems0TypeStatusPropEnum = append(listAgentsOkBodyRtaMysqlAgentItems0TypeStatusPropEnum, v) + } +} + +const ( + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSUNSPECIFIED captures enum value "AGENT_STATUS_UNSPECIFIED" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSUNSPECIFIED string = "AGENT_STATUS_UNSPECIFIED" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSSTARTING captures enum value "AGENT_STATUS_STARTING" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSSTARTING string = "AGENT_STATUS_STARTING" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSINITIALIZATIONERROR captures enum value "AGENT_STATUS_INITIALIZATION_ERROR" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSINITIALIZATIONERROR string = "AGENT_STATUS_INITIALIZATION_ERROR" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSRUNNING captures enum value "AGENT_STATUS_RUNNING" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSRUNNING string = "AGENT_STATUS_RUNNING" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSWAITING captures enum value "AGENT_STATUS_WAITING" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSWAITING string = "AGENT_STATUS_WAITING" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSSTOPPING captures enum value "AGENT_STATUS_STOPPING" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSSTOPPING string = "AGENT_STATUS_STOPPING" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSDONE captures enum value "AGENT_STATUS_DONE" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSDONE string = "AGENT_STATUS_DONE" + + // ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSUNKNOWN captures enum value "AGENT_STATUS_UNKNOWN" + ListAgentsOKBodyRtaMysqlAgentItems0StatusAGENTSTATUSUNKNOWN string = "AGENT_STATUS_UNKNOWN" +) + +// prop value enum +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) validateStatusEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, listAgentsOkBodyRtaMysqlAgentItems0TypeStatusPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) validateStatus(formats strfmt.Registry) error { + if swag.IsZero(o.Status) { // not required + return nil + } + + // value enum + if err := o.validateStatusEnum("status", "body", *o.Status); err != nil { + return err + } + + return nil +} + +var listAgentsOkBodyRtaMysqlAgentItems0TypeLogLevelPropEnum []any + +func init() { + var res []string + if err := json.Unmarshal([]byte(`["LOG_LEVEL_UNSPECIFIED","LOG_LEVEL_FATAL","LOG_LEVEL_ERROR","LOG_LEVEL_WARN","LOG_LEVEL_INFO","LOG_LEVEL_DEBUG"]`), &res); err != nil { + panic(err) + } + for _, v := range res { + listAgentsOkBodyRtaMysqlAgentItems0TypeLogLevelPropEnum = append(listAgentsOkBodyRtaMysqlAgentItems0TypeLogLevelPropEnum, v) + } +} + +const ( + + // ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELUNSPECIFIED captures enum value "LOG_LEVEL_UNSPECIFIED" + ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELUNSPECIFIED string = "LOG_LEVEL_UNSPECIFIED" + + // ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELFATAL captures enum value "LOG_LEVEL_FATAL" + ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELFATAL string = "LOG_LEVEL_FATAL" + + // ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELERROR captures enum value "LOG_LEVEL_ERROR" + ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELERROR string = "LOG_LEVEL_ERROR" + + // ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELWARN captures enum value "LOG_LEVEL_WARN" + ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELWARN string = "LOG_LEVEL_WARN" + + // ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELINFO captures enum value "LOG_LEVEL_INFO" + ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELINFO string = "LOG_LEVEL_INFO" + + // ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELDEBUG captures enum value "LOG_LEVEL_DEBUG" + ListAgentsOKBodyRtaMysqlAgentItems0LogLevelLOGLEVELDEBUG string = "LOG_LEVEL_DEBUG" +) + +// prop value enum +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) validateLogLevelEnum(path, location string, value string) error { + if err := validate.EnumCase(path, location, value, listAgentsOkBodyRtaMysqlAgentItems0TypeLogLevelPropEnum, true); err != nil { + return err + } + return nil +} + +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) validateLogLevel(formats strfmt.Registry) error { + if swag.IsZero(o.LogLevel) { // not required + return nil + } + + // value enum + if err := o.validateLogLevelEnum("log_level", "body", *o.LogLevel); err != nil { + return err + } + + return nil +} + +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) validateRtaOptions(formats strfmt.Registry) error { + if swag.IsZero(o.RtaOptions) { // not required + return nil + } + + if o.RtaOptions != nil { + if err := o.RtaOptions.Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("rta_options") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("rta_options") + } + + return err + } + } + + return nil +} + +// ContextValidate validate this list agents OK body rta mysql agent items0 based on the context it is used +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + var res []error + + if err := o.contextValidateRtaOptions(ctx, formats); err != nil { + res = append(res, err) + } + + if len(res) > 0 { + return errors.CompositeValidationError(res...) + } + return nil +} + +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) contextValidateRtaOptions(ctx context.Context, formats strfmt.Registry) error { + + if o.RtaOptions != nil { + + if swag.IsZero(o.RtaOptions) { // not required + return nil + } + + if err := o.RtaOptions.ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("rta_options") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("rta_options") + } + + return err + } + } + + return nil +} + +// MarshalBinary interface implementation +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListAgentsOKBodyRtaMysqlAgentItems0) UnmarshalBinary(b []byte) error { + var res ListAgentsOKBodyRtaMysqlAgentItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + +/* +ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions RTAOptions holds Real-Time Query Analytics agent options. +swagger:model ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions +*/ +type ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions struct { + + // Query collect interval (default 2s is set by server). + CollectInterval string `json:"collect_interval,omitempty"` +} + +// Validate validates this list agents OK body rta mysql agent items0 rta options +func (o *ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this list agents OK body rta mysql agent items0 rta options based on context it is used +func (o *ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions) UnmarshalBinary(b []byte) error { + var res ListAgentsOKBodyRtaMysqlAgentItems0RtaOptions + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} + /* ListAgentsOKBodyVMAgentItems0 VMAgent runs on Generic or Container Node alongside pmm-agent. // It scrapes other exporter Agents that are configured with push_metrics_enabled @@ -6076,6 +6554,7 @@ ListAgentsOKBodyVMAgentItems0 VMAgent runs on Generic or Container Node alongsid swagger:model ListAgentsOKBodyVMAgentItems0 */ type ListAgentsOKBodyVMAgentItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -6203,6 +6682,7 @@ ListAgentsOKBodyValkeyExporterItems0 ValkeyExporter runs on Generic or Container swagger:model ListAgentsOKBodyValkeyExporterItems0 */ type ListAgentsOKBodyValkeyExporterItems0 struct { + // Unique randomly generated instance identifier. AgentID string `json:"agent_id,omitempty"` @@ -6377,6 +6857,7 @@ func (o *ListAgentsOKBodyValkeyExporterItems0) ContextValidate(ctx context.Conte } func (o *ListAgentsOKBodyValkeyExporterItems0) contextValidateMetricsResolutions(ctx context.Context, formats strfmt.Registry) error { + if o.MetricsResolutions != nil { if swag.IsZero(o.MetricsResolutions) { // not required @@ -6423,6 +6904,7 @@ ListAgentsOKBodyValkeyExporterItems0MetricsResolutions MetricsResolutions repres swagger:model ListAgentsOKBodyValkeyExporterItems0MetricsResolutions */ type ListAgentsOKBodyValkeyExporterItems0MetricsResolutions struct { + // High resolution. In JSON should be represented as a string with number of seconds with `s` suffix. Hr string `json:"hr,omitempty"` diff --git a/api/inventory/v1/json/v1.json b/api/inventory/v1/json/v1.json index 1b0a2395e83..4508b60fb33 100644 --- a/api/inventory/v1/json/v1.json +++ b/api/inventory/v1/json/v1.json @@ -63,7 +63,8 @@ "AGENT_TYPE_RDS_EXPORTER", "AGENT_TYPE_AZURE_DATABASE_EXPORTER", "AGENT_TYPE_NOMAD_AGENT", - "AGENT_TYPE_RTA_MONGODB_AGENT" + "AGENT_TYPE_RTA_MONGODB_AGENT", + "AGENT_TYPE_RTA_MYSQL_AGENT" ], "type": "string", "default": "AGENT_TYPE_UNSPECIFIED", @@ -2202,6 +2203,102 @@ } }, "x-order": 18 + }, + "rta_mysql_agent": { + "type": "array", + "items": { + "description": "RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique agent identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MySQL username for getting the currently running queries.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "rta_options": { + "description": "RTAOptions holds Real-Time Query Analytics agent options.", + "type": "object", + "properties": { + "collect_interval": { + "description": "Query collect interval (default 2s is set by server).", + "type": "string", + "x-order": 0 + } + }, + "x-order": 8 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - AGENT_STATUS_STARTING: Agent is starting.\n - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting.\n - AGENT_STATUS_RUNNING: Agent is running.\n - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon.\n - AGENT_STATUS_STOPPING: Agent is stopping.\n - AGENT_STATUS_DONE: Agent has been stopped or disabled.\n - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state.", + "type": "string", + "default": "AGENT_STATUS_UNSPECIFIED", + "enum": [ + "AGENT_STATUS_UNSPECIFIED", + "AGENT_STATUS_STARTING", + "AGENT_STATUS_INITIALIZATION_ERROR", + "AGENT_STATUS_RUNNING", + "AGENT_STATUS_WAITING", + "AGENT_STATUS_STOPPING", + "AGENT_STATUS_DONE", + "AGENT_STATUS_UNKNOWN" + ], + "x-order": 9 + }, + "log_level": { + "description": "- LOG_LEVEL_UNSPECIFIED: Auto", + "type": "string", + "title": "Log level for exporters", + "default": "LOG_LEVEL_UNSPECIFIED", + "enum": [ + "LOG_LEVEL_UNSPECIFIED", + "LOG_LEVEL_FATAL", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_WARN", + "LOG_LEVEL_INFO", + "LOG_LEVEL_DEBUG" + ], + "x-order": 10 + } + } + }, + "x-order": 19 } } } @@ -7912,6 +8009,99 @@ } }, "x-order": 18 + }, + "rta_mysql_agent": { + "description": "RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique agent identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MySQL username for getting the currently running queries.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "rta_options": { + "description": "RTAOptions holds Real-Time Query Analytics agent options.", + "type": "object", + "properties": { + "collect_interval": { + "description": "Query collect interval (default 2s is set by server).", + "type": "string", + "x-order": 0 + } + }, + "x-order": 8 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - AGENT_STATUS_STARTING: Agent is starting.\n - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting.\n - AGENT_STATUS_RUNNING: Agent is running.\n - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon.\n - AGENT_STATUS_STOPPING: Agent is stopping.\n - AGENT_STATUS_DONE: Agent has been stopped or disabled.\n - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state.", + "type": "string", + "default": "AGENT_STATUS_UNSPECIFIED", + "enum": [ + "AGENT_STATUS_UNSPECIFIED", + "AGENT_STATUS_STARTING", + "AGENT_STATUS_INITIALIZATION_ERROR", + "AGENT_STATUS_RUNNING", + "AGENT_STATUS_WAITING", + "AGENT_STATUS_STOPPING", + "AGENT_STATUS_DONE", + "AGENT_STATUS_UNKNOWN" + ], + "x-order": 9 + }, + "log_level": { + "description": "- LOG_LEVEL_UNSPECIFIED: Auto", + "type": "string", + "title": "Log level for exporters", + "default": "LOG_LEVEL_UNSPECIFIED", + "enum": [ + "LOG_LEVEL_UNSPECIFIED", + "LOG_LEVEL_FATAL", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_WARN", + "LOG_LEVEL_INFO", + "LOG_LEVEL_DEBUG" + ], + "x-order": 10 + } + }, + "x-order": 19 } } } diff --git a/api/inventory/v1/types/agent_types.go b/api/inventory/v1/types/agent_types.go index 2ddb4e6dd32..c60dda2f9cc 100644 --- a/api/inventory/v1/types/agent_types.go +++ b/api/inventory/v1/types/agent_types.go @@ -37,6 +37,7 @@ const ( AgentTypeExternalExporter = "AGENT_TYPE_EXTERNAL_EXPORTER" AgentTypeAzureDatabaseExporter = "AGENT_TYPE_AZURE_DATABASE_EXPORTER" AgentTypeRTAMongoDBAgent = "AGENT_TYPE_RTA_MONGODB_AGENT" + AgentTypeRTAMySQLAgent = "AGENT_TYPE_RTA_MYSQL_AGENT" ) var agentTypeNames = map[string]string{ @@ -60,6 +61,7 @@ var agentTypeNames = map[string]string{ AgentTypeExternalExporter: "external-exporter", AgentTypeAzureDatabaseExporter: "azure_database_exporter", AgentTypeRTAMongoDBAgent: "rta_mongodb_agent", + AgentTypeRTAMySQLAgent: "rta_mysql_agent", } // AgentTypeName returns human friendly agent type to be used in reports. diff --git a/api/realtimeanalytics/v1/json/client/realtime_analytics_service/list_services_responses.go b/api/realtimeanalytics/v1/json/client/realtime_analytics_service/list_services_responses.go index a3222654851..0554fdde343 100644 --- a/api/realtimeanalytics/v1/json/client/realtime_analytics_service/list_services_responses.go +++ b/api/realtimeanalytics/v1/json/client/realtime_analytics_service/list_services_responses.go @@ -101,6 +101,7 @@ func (o *ListServicesOK) GetPayload() *ListServicesOKBody { } func (o *ListServicesOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ListServicesOKBody) // response payload @@ -174,6 +175,7 @@ func (o *ListServicesDefault) GetPayload() *ListServicesDefaultBody { } func (o *ListServicesDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(ListServicesDefaultBody) // response payload @@ -189,6 +191,7 @@ ListServicesDefaultBody list services default body swagger:model ListServicesDefaultBody */ type ListServicesDefaultBody struct { + // code Code int32 `json:"code,omitempty"` @@ -258,7 +261,9 @@ func (o *ListServicesDefaultBody) ContextValidate(ctx context.Context, formats s } func (o *ListServicesDefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Details); i++ { + if o.Details[i] != nil { if swag.IsZero(o.Details[i]) { // not required @@ -278,6 +283,7 @@ func (o *ListServicesDefaultBody) contextValidateDetails(ctx context.Context, fo return err } } + } return nil @@ -306,6 +312,7 @@ ListServicesDefaultBodyDetailsItems0 list services default body details items0 swagger:model ListServicesDefaultBodyDetailsItems0 */ type ListServicesDefaultBodyDetailsItems0 struct { + // at type AtType string `json:"@type,omitempty"` @@ -317,6 +324,7 @@ type ListServicesDefaultBodyDetailsItems0 struct { func (o *ListServicesDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error { // stage 1, bind the properties var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -354,6 +362,7 @@ func (o *ListServicesDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error // MarshalJSON marshals this object with additional properties into a JSON object func (o ListServicesDefaultBodyDetailsItems0) MarshalJSON() ([]byte, error) { var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -417,8 +426,12 @@ ListServicesOKBody list services OK body swagger:model ListServicesOKBody */ type ListServicesOKBody struct { + // mongodb Mongodb []*ListServicesOKBodyMongodbItems0 `json:"mongodb"` + + // mysql + Mysql []*ListServicesOKBodyMysqlItems0 `json:"mysql"` } // Validate validates this list services OK body @@ -429,6 +442,10 @@ func (o *ListServicesOKBody) Validate(formats strfmt.Registry) error { res = append(res, err) } + if err := o.validateMysql(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -465,6 +482,36 @@ func (o *ListServicesOKBody) validateMongodb(formats strfmt.Registry) error { return nil } +func (o *ListServicesOKBody) validateMysql(formats strfmt.Registry) error { + if swag.IsZero(o.Mysql) { // not required + return nil + } + + for i := 0; i < len(o.Mysql); i++ { + if swag.IsZero(o.Mysql[i]) { // not required + continue + } + + if o.Mysql[i] != nil { + if err := o.Mysql[i].Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("listServicesOk" + "." + "mysql" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("listServicesOk" + "." + "mysql" + "." + strconv.Itoa(i)) + } + + return err + } + } + + } + + return nil +} + // ContextValidate validate this list services OK body based on the context it is used func (o *ListServicesOKBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error { var res []error @@ -473,6 +520,10 @@ func (o *ListServicesOKBody) ContextValidate(ctx context.Context, formats strfmt res = append(res, err) } + if err := o.contextValidateMysql(ctx, formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -480,7 +531,9 @@ func (o *ListServicesOKBody) ContextValidate(ctx context.Context, formats strfmt } func (o *ListServicesOKBody) contextValidateMongodb(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Mongodb); i++ { + if o.Mongodb[i] != nil { if swag.IsZero(o.Mongodb[i]) { // not required @@ -500,6 +553,36 @@ func (o *ListServicesOKBody) contextValidateMongodb(ctx context.Context, formats return err } } + + } + + return nil +} + +func (o *ListServicesOKBody) contextValidateMysql(ctx context.Context, formats strfmt.Registry) error { + + for i := 0; i < len(o.Mysql); i++ { + + if o.Mysql[i] != nil { + + if swag.IsZero(o.Mysql[i]) { // not required + return nil + } + + if err := o.Mysql[i].ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("listServicesOk" + "." + "mysql" + "." + strconv.Itoa(i)) + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("listServicesOk" + "." + "mysql" + "." + strconv.Itoa(i)) + } + + return err + } + } + } return nil @@ -528,6 +611,7 @@ ListServicesOKBodyMongodbItems0 MongoDBService represents a generic MongoDB inst swagger:model ListServicesOKBodyMongodbItems0 */ type ListServicesOKBodyMongodbItems0 struct { + // Unique randomly generated instance identifier. ServiceID string `json:"service_id,omitempty"` @@ -592,3 +676,77 @@ func (o *ListServicesOKBodyMongodbItems0) UnmarshalBinary(b []byte) error { *o = res return nil } + +/* +ListServicesOKBodyMysqlItems0 MySQLService represents a generic MySQL instance. +swagger:model ListServicesOKBodyMysqlItems0 +*/ +type ListServicesOKBodyMysqlItems0 struct { + + // Unique randomly generated instance identifier. + ServiceID string `json:"service_id,omitempty"` + + // Unique across all Services user-defined name. + ServiceName string `json:"service_name,omitempty"` + + // Node identifier where this instance runs. + NodeID string `json:"node_id,omitempty"` + + // Access address (DNS name or IP). + // Address (and port) or socket is required. + Address string `json:"address,omitempty"` + + // Access port. + // Port is required when the address present. + Port int64 `json:"port,omitempty"` + + // Access unix socket. + // Address (and port) or socket is required. + Socket string `json:"socket,omitempty"` + + // Environment name. + Environment string `json:"environment,omitempty"` + + // Cluster name. + Cluster string `json:"cluster,omitempty"` + + // Replication set name. + ReplicationSet string `json:"replication_set,omitempty"` + + // Custom user-assigned labels. + CustomLabels map[string]string `json:"custom_labels,omitempty"` + + // MySQL version. + Version string `json:"version,omitempty"` + + // Extra parameters to be added to the DSN. + ExtraDsnParams map[string]string `json:"extra_dsn_params,omitempty"` +} + +// Validate validates this list services OK body mysql items0 +func (o *ListServicesOKBodyMysqlItems0) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this list services OK body mysql items0 based on context it is used +func (o *ListServicesOKBodyMysqlItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *ListServicesOKBodyMysqlItems0) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *ListServicesOKBodyMysqlItems0) UnmarshalBinary(b []byte) error { + var res ListServicesOKBodyMysqlItems0 + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/realtimeanalytics/v1/json/client/realtime_analytics_service/search_queries_responses.go b/api/realtimeanalytics/v1/json/client/realtime_analytics_service/search_queries_responses.go index 49e2f7af6c9..1d21e1d03a9 100644 --- a/api/realtimeanalytics/v1/json/client/realtime_analytics_service/search_queries_responses.go +++ b/api/realtimeanalytics/v1/json/client/realtime_analytics_service/search_queries_responses.go @@ -102,6 +102,7 @@ func (o *SearchQueriesOK) GetPayload() *SearchQueriesOKBody { } func (o *SearchQueriesOK) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(SearchQueriesOKBody) // response payload @@ -175,6 +176,7 @@ func (o *SearchQueriesDefault) GetPayload() *SearchQueriesDefaultBody { } func (o *SearchQueriesDefault) readResponse(response runtime.ClientResponse, consumer runtime.Consumer, formats strfmt.Registry) error { + o.Payload = new(SearchQueriesDefaultBody) // response payload @@ -190,6 +192,7 @@ SearchQueriesBody SearchQueriesRequest contains optional filters for listing act swagger:model SearchQueriesBody */ type SearchQueriesBody struct { + // Optional filter by Service identifiers. ServiceIds []string `json:"service_ids"` @@ -230,6 +233,7 @@ SearchQueriesDefaultBody search queries default body swagger:model SearchQueriesDefaultBody */ type SearchQueriesDefaultBody struct { + // code Code int32 `json:"code,omitempty"` @@ -299,7 +303,9 @@ func (o *SearchQueriesDefaultBody) ContextValidate(ctx context.Context, formats } func (o *SearchQueriesDefaultBody) contextValidateDetails(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Details); i++ { + if o.Details[i] != nil { if swag.IsZero(o.Details[i]) { // not required @@ -319,6 +325,7 @@ func (o *SearchQueriesDefaultBody) contextValidateDetails(ctx context.Context, f return err } } + } return nil @@ -347,6 +354,7 @@ SearchQueriesDefaultBodyDetailsItems0 search queries default body details items0 swagger:model SearchQueriesDefaultBodyDetailsItems0 */ type SearchQueriesDefaultBodyDetailsItems0 struct { + // at type AtType string `json:"@type,omitempty"` @@ -358,6 +366,7 @@ type SearchQueriesDefaultBodyDetailsItems0 struct { func (o *SearchQueriesDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error { // stage 1, bind the properties var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -395,6 +404,7 @@ func (o *SearchQueriesDefaultBodyDetailsItems0) UnmarshalJSON(data []byte) error // MarshalJSON marshals this object with additional properties into a JSON object func (o SearchQueriesDefaultBodyDetailsItems0) MarshalJSON() ([]byte, error) { var stage1 struct { + // at type AtType string `json:"@type,omitempty"` } @@ -458,6 +468,7 @@ SearchQueriesOKBody SearchQueriesResponse returns the list of currently active R swagger:model SearchQueriesOKBody */ type SearchQueriesOKBody struct { + // List of active Real-Time Analytics session Queries. Queries []*SearchQueriesOKBodyQueriesItems0 `json:"queries"` } @@ -521,7 +532,9 @@ func (o *SearchQueriesOKBody) ContextValidate(ctx context.Context, formats strfm } func (o *SearchQueriesOKBody) contextValidateQueries(ctx context.Context, formats strfmt.Registry) error { + for i := 0; i < len(o.Queries); i++ { + if o.Queries[i] != nil { if swag.IsZero(o.Queries[i]) { // not required @@ -541,6 +554,7 @@ func (o *SearchQueriesOKBody) contextValidateQueries(ctx context.Context, format return err } } + } return nil @@ -570,6 +584,7 @@ SearchQueriesOKBodyQueriesItems0 QueryData represents a single Real-Time Analyti swagger:model SearchQueriesOKBodyQueriesItems0 */ type SearchQueriesOKBodyQueriesItems0 struct { + // PMM Service identifier that reported the query. ServiceID string `json:"service_id,omitempty"` @@ -597,6 +612,9 @@ type SearchQueriesOKBodyQueriesItems0 struct { // mongo db payload MongoDBPayload *SearchQueriesOKBodyQueriesItems0MongoDBPayload `json:"mongo_db_payload,omitempty"` + + // my sql payload + MySQLPayload *SearchQueriesOKBodyQueriesItems0MySQLPayload `json:"my_sql_payload,omitempty"` } // Validate validates this search queries OK body queries items0 @@ -611,6 +629,10 @@ func (o *SearchQueriesOKBodyQueriesItems0) Validate(formats strfmt.Registry) err res = append(res, err) } + if err := o.validateMySQLPayload(formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -652,6 +674,29 @@ func (o *SearchQueriesOKBodyQueriesItems0) validateMongoDBPayload(formats strfmt return nil } +func (o *SearchQueriesOKBodyQueriesItems0) validateMySQLPayload(formats strfmt.Registry) error { + if swag.IsZero(o.MySQLPayload) { // not required + return nil + } + + if o.MySQLPayload != nil { + if err := o.MySQLPayload.Validate(formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("my_sql_payload") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("my_sql_payload") + } + + return err + } + } + + return nil +} + // ContextValidate validate this search queries OK body queries items0 based on the context it is used func (o *SearchQueriesOKBodyQueriesItems0) ContextValidate(ctx context.Context, formats strfmt.Registry) error { var res []error @@ -660,6 +705,10 @@ func (o *SearchQueriesOKBodyQueriesItems0) ContextValidate(ctx context.Context, res = append(res, err) } + if err := o.contextValidateMySQLPayload(ctx, formats); err != nil { + res = append(res, err) + } + if len(res) > 0 { return errors.CompositeValidationError(res...) } @@ -667,6 +716,7 @@ func (o *SearchQueriesOKBodyQueriesItems0) ContextValidate(ctx context.Context, } func (o *SearchQueriesOKBodyQueriesItems0) contextValidateMongoDBPayload(ctx context.Context, formats strfmt.Registry) error { + if o.MongoDBPayload != nil { if swag.IsZero(o.MongoDBPayload) { // not required @@ -690,6 +740,31 @@ func (o *SearchQueriesOKBodyQueriesItems0) contextValidateMongoDBPayload(ctx con return nil } +func (o *SearchQueriesOKBodyQueriesItems0) contextValidateMySQLPayload(ctx context.Context, formats strfmt.Registry) error { + + if o.MySQLPayload != nil { + + if swag.IsZero(o.MySQLPayload) { // not required + return nil + } + + if err := o.MySQLPayload.ContextValidate(ctx, formats); err != nil { + ve := new(errors.Validation) + if stderrors.As(err, &ve) { + return ve.ValidateName("my_sql_payload") + } + ce := new(errors.CompositeError) + if stderrors.As(err, &ce) { + return ce.ValidateName("my_sql_payload") + } + + return err + } + } + + return nil +} + // MarshalBinary interface implementation func (o *SearchQueriesOKBodyQueriesItems0) MarshalBinary() ([]byte, error) { if o == nil { @@ -713,6 +788,7 @@ SearchQueriesOKBodyQueriesItems0MongoDBPayload QueryMongoDBData holds MongoDB-sp swagger:model SearchQueriesOKBodyQueriesItems0MongoDBPayload */ type SearchQueriesOKBodyQueriesItems0MongoDBPayload struct { + // MongoDB instance address(host:port) that processing the query. DBInstanceAddress string `json:"db_instance_address,omitempty"` @@ -787,3 +863,66 @@ func (o *SearchQueriesOKBodyQueriesItems0MongoDBPayload) UnmarshalBinary(b []byt *o = res return nil } + +/* +SearchQueriesOKBodyQueriesItems0MySQLPayload QueryMySQLData holds MySQL-specific Real-Time Analytics query information. +// The data is sourced from the sys.processlist view. +swagger:model SearchQueriesOKBodyQueriesItems0MySQLPayload +*/ +type SearchQueriesOKBodyQueriesItems0MySQLPayload struct { + + // MySQL instance address(host:port) that processing the query. + DBInstanceAddress string `json:"db_instance_address,omitempty"` + + // Client program name connected to MySQL (program_name from sys.processlist). + ProgramName string `json:"program_name,omitempty"` + + // Database name (db from sys.processlist). + DatabaseName string `json:"database_name,omitempty"` + + // Command type the connection is executing ("Query", "Execute", etc). + Command string `json:"command,omitempty"` + + // State of the connection/thread (for example "Sending data"). + State string `json:"state,omitempty"` + + // MySQL user name associated with the query. + Username string `json:"username,omitempty"` + + // Number of rows examined by the statement so far. + RowsExamined string `json:"rows_examined,omitempty"` + + // Number of rows sent by the statement so far. + RowsSent string `json:"rows_sent,omitempty"` + + // Indicates whether the statement performed a full table scan. + FullScan bool `json:"full_scan,omitempty"` +} + +// Validate validates this search queries OK body queries items0 my SQL payload +func (o *SearchQueriesOKBodyQueriesItems0MySQLPayload) Validate(formats strfmt.Registry) error { + return nil +} + +// ContextValidate validates this search queries OK body queries items0 my SQL payload based on context it is used +func (o *SearchQueriesOKBodyQueriesItems0MySQLPayload) ContextValidate(ctx context.Context, formats strfmt.Registry) error { + return nil +} + +// MarshalBinary interface implementation +func (o *SearchQueriesOKBodyQueriesItems0MySQLPayload) MarshalBinary() ([]byte, error) { + if o == nil { + return nil, nil + } + return swag.WriteJSON(o) +} + +// UnmarshalBinary interface implementation +func (o *SearchQueriesOKBodyQueriesItems0MySQLPayload) UnmarshalBinary(b []byte) error { + var res SearchQueriesOKBodyQueriesItems0MySQLPayload + if err := swag.ReadJSON(b, &res); err != nil { + return err + } + *o = res + return nil +} diff --git a/api/realtimeanalytics/v1/json/v1.json b/api/realtimeanalytics/v1/json/v1.json index d79d757cc40..33c576bf078 100644 --- a/api/realtimeanalytics/v1/json/v1.json +++ b/api/realtimeanalytics/v1/json/v1.json @@ -153,6 +153,60 @@ } }, "x-order": 8 + }, + "my_sql_payload": { + "description": "QueryMySQLData holds MySQL-specific Real-Time Analytics query information.\nThe data is sourced from the sys.processlist view.", + "type": "object", + "properties": { + "db_instance_address": { + "description": "MySQL instance address(host:port) that processing the query.", + "type": "string", + "x-order": 0 + }, + "program_name": { + "description": "Client program name connected to MySQL (program_name from sys.processlist).", + "type": "string", + "x-order": 1 + }, + "database_name": { + "description": "Database name (db from sys.processlist).", + "type": "string", + "x-order": 2 + }, + "command": { + "description": "Command type the connection is executing (\"Query\", \"Execute\", etc).", + "type": "string", + "x-order": 3 + }, + "state": { + "description": "State of the connection/thread (for example \"Sending data\").", + "type": "string", + "x-order": 4 + }, + "username": { + "description": "MySQL user name associated with the query.", + "type": "string", + "x-order": 5 + }, + "rows_examined": { + "description": "Number of rows examined by the statement so far.", + "type": "string", + "format": "int64", + "x-order": 6 + }, + "rows_sent": { + "description": "Number of rows sent by the statement so far.", + "type": "string", + "format": "int64", + "x-order": 7 + }, + "full_scan": { + "description": "Indicates whether the statement performed a full table scan.", + "type": "boolean", + "x-order": 8 + } + }, + "x-order": 9 } } }, @@ -296,6 +350,83 @@ } }, "x-order": 0 + }, + "mysql": { + "type": "array", + "items": { + "description": "MySQLService represents a generic MySQL instance.", + "type": "object", + "properties": { + "service_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "service_name": { + "description": "Unique across all Services user-defined name.", + "type": "string", + "x-order": 1 + }, + "node_id": { + "description": "Node identifier where this instance runs.", + "type": "string", + "x-order": 2 + }, + "address": { + "description": "Access address (DNS name or IP).\nAddress (and port) or socket is required.", + "type": "string", + "x-order": 3 + }, + "port": { + "description": "Access port.\nPort is required when the address present.", + "type": "integer", + "format": "int64", + "x-order": 4 + }, + "socket": { + "description": "Access unix socket.\nAddress (and port) or socket is required.", + "type": "string", + "x-order": 5 + }, + "environment": { + "description": "Environment name.", + "type": "string", + "x-order": 6 + }, + "cluster": { + "description": "Cluster name.", + "type": "string", + "x-order": 7 + }, + "replication_set": { + "description": "Replication set name.", + "type": "string", + "x-order": 8 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 9 + }, + "version": { + "description": "MySQL version.", + "type": "string", + "x-order": 10 + }, + "extra_dsn_params": { + "description": "Extra parameters to be added to the DSN.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 11 + } + } + }, + "x-order": 1 } } } diff --git a/api/realtimeanalytics/v1/query.pb.go b/api/realtimeanalytics/v1/query.pb.go index 43c4a1bdd5c..62dd91e32da 100644 --- a/api/realtimeanalytics/v1/query.pb.go +++ b/api/realtimeanalytics/v1/query.pb.go @@ -7,16 +7,14 @@ package realtimeanalyticsv1 import ( - reflect "reflect" - sync "sync" - unsafe "unsafe" - + _ "github.com/percona/pmm/api/extensions/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - - _ "github.com/percona/pmm/api/extensions/v1" + reflect "reflect" + sync "sync" + unsafe "unsafe" ) const ( @@ -135,6 +133,125 @@ func (x *QueryMongoDBData) GetPlanSummary() string { return "" } +// QueryMySQLData holds MySQL-specific Real-Time Analytics query information. +// The data is sourced from the sys.processlist view. +type QueryMySQLData struct { + state protoimpl.MessageState `protogen:"open.v1"` + // MySQL instance address(host:port) that processing the query. + DbInstanceAddress string `protobuf:"bytes,1,opt,name=db_instance_address,json=dbInstanceAddress,proto3" json:"db_instance_address,omitempty"` + // Client program name connected to MySQL (program_name from sys.processlist). + ProgramName string `protobuf:"bytes,2,opt,name=program_name,json=programName,proto3" json:"program_name,omitempty"` + // Database name (db from sys.processlist). + DatabaseName string `protobuf:"bytes,3,opt,name=database_name,json=databaseName,proto3" json:"database_name,omitempty"` + // Command type the connection is executing ("Query", "Execute", etc). + Command string `protobuf:"bytes,4,opt,name=command,proto3" json:"command,omitempty"` + // State of the connection/thread (for example "Sending data"). + State string `protobuf:"bytes,5,opt,name=state,proto3" json:"state,omitempty"` + // MySQL user name associated with the query. + Username string `protobuf:"bytes,6,opt,name=username,proto3" json:"username,omitempty"` + // Number of rows examined by the statement so far. + RowsExamined int64 `protobuf:"varint,7,opt,name=rows_examined,json=rowsExamined,proto3" json:"rows_examined,omitempty"` + // Number of rows sent by the statement so far. + RowsSent int64 `protobuf:"varint,8,opt,name=rows_sent,json=rowsSent,proto3" json:"rows_sent,omitempty"` + // Indicates whether the statement performed a full table scan. + FullScan bool `protobuf:"varint,9,opt,name=full_scan,json=fullScan,proto3" json:"full_scan,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *QueryMySQLData) Reset() { + *x = QueryMySQLData{} + mi := &file_realtimeanalytics_v1_query_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *QueryMySQLData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*QueryMySQLData) ProtoMessage() {} + +func (x *QueryMySQLData) ProtoReflect() protoreflect.Message { + mi := &file_realtimeanalytics_v1_query_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use QueryMySQLData.ProtoReflect.Descriptor instead. +func (*QueryMySQLData) Descriptor() ([]byte, []int) { + return file_realtimeanalytics_v1_query_proto_rawDescGZIP(), []int{1} +} + +func (x *QueryMySQLData) GetDbInstanceAddress() string { + if x != nil { + return x.DbInstanceAddress + } + return "" +} + +func (x *QueryMySQLData) GetProgramName() string { + if x != nil { + return x.ProgramName + } + return "" +} + +func (x *QueryMySQLData) GetDatabaseName() string { + if x != nil { + return x.DatabaseName + } + return "" +} + +func (x *QueryMySQLData) GetCommand() string { + if x != nil { + return x.Command + } + return "" +} + +func (x *QueryMySQLData) GetState() string { + if x != nil { + return x.State + } + return "" +} + +func (x *QueryMySQLData) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *QueryMySQLData) GetRowsExamined() int64 { + if x != nil { + return x.RowsExamined + } + return 0 +} + +func (x *QueryMySQLData) GetRowsSent() int64 { + if x != nil { + return x.RowsSent + } + return 0 +} + +func (x *QueryMySQLData) GetFullScan() bool { + if x != nil { + return x.FullScan + } + return false +} + // QueryData represents a single Real-Time Analytics query data point. // It includes general query information and a payload for database-specific details. type QueryData struct { @@ -160,6 +277,7 @@ type QueryData struct { // Types that are valid to be assigned to Payload: // // *QueryData_MongoDbPayload + // *QueryData_MySqlPayload Payload isQueryData_Payload `protobuf_oneof:"payload"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -167,7 +285,7 @@ type QueryData struct { func (x *QueryData) Reset() { *x = QueryData{} - mi := &file_realtimeanalytics_v1_query_proto_msgTypes[1] + mi := &file_realtimeanalytics_v1_query_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -179,7 +297,7 @@ func (x *QueryData) String() string { func (*QueryData) ProtoMessage() {} func (x *QueryData) ProtoReflect() protoreflect.Message { - mi := &file_realtimeanalytics_v1_query_proto_msgTypes[1] + mi := &file_realtimeanalytics_v1_query_proto_msgTypes[2] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -192,7 +310,7 @@ func (x *QueryData) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryData.ProtoReflect.Descriptor instead. func (*QueryData) Descriptor() ([]byte, []int) { - return file_realtimeanalytics_v1_query_proto_rawDescGZIP(), []int{1} + return file_realtimeanalytics_v1_query_proto_rawDescGZIP(), []int{2} } func (x *QueryData) GetServiceId() string { @@ -267,6 +385,15 @@ func (x *QueryData) GetMongoDbPayload() *QueryMongoDBData { return nil } +func (x *QueryData) GetMySqlPayload() *QueryMySQLData { + if x != nil { + if x, ok := x.Payload.(*QueryData_MySqlPayload); ok { + return x.MySqlPayload + } + } + return nil +} + type isQueryData_Payload interface { isQueryData_Payload() } @@ -276,8 +403,15 @@ type QueryData_MongoDbPayload struct { MongoDbPayload *QueryMongoDBData `protobuf:"bytes,9,opt,name=mongo_db_payload,json=mongoDbPayload,proto3,oneof"` } +type QueryData_MySqlPayload struct { + // MySQL-specific query data. + MySqlPayload *QueryMySQLData `protobuf:"bytes,10,opt,name=my_sql_payload,json=mySqlPayload,proto3,oneof"` +} + func (*QueryData_MongoDbPayload) isQueryData_Payload() {} +func (*QueryData_MySqlPayload) isQueryData_Payload() {} + var File_realtimeanalytics_v1_query_proto protoreflect.FileDescriptor const file_realtimeanalytics_v1_query_proto_rawDesc = "" + @@ -293,7 +427,17 @@ const file_realtimeanalytics_v1_query_proto_rawDesc = "" + "\toperation\x18\x05 \x01(\tR\toperation\x12L\n" + "\x14operation_start_time\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\x12operationStartTime\x12 \n" + "\busername\x18\a \x01(\tB\x04\x88\xb5\x18\x01R\busername\x12!\n" + - "\fplan_summary\x18\b \x01(\tR\vplanSummary\"\xd2\x03\n" + + "\fplan_summary\x18\b \x01(\tR\vplanSummary\"\xb9\x02\n" + + "\x0eQueryMySQLData\x12.\n" + + "\x13db_instance_address\x18\x01 \x01(\tR\x11dbInstanceAddress\x12!\n" + + "\fprogram_name\x18\x02 \x01(\tR\vprogramName\x12#\n" + + "\rdatabase_name\x18\x03 \x01(\tR\fdatabaseName\x12\x18\n" + + "\acommand\x18\x04 \x01(\tR\acommand\x12\x14\n" + + "\x05state\x18\x05 \x01(\tR\x05state\x12 \n" + + "\busername\x18\x06 \x01(\tB\x04\x88\xb5\x18\x01R\busername\x12#\n" + + "\rrows_examined\x18\a \x01(\x03R\frowsExamined\x12\x1b\n" + + "\trows_sent\x18\b \x01(\x03R\browsSent\x12\x1b\n" + + "\tfull_scan\x18\t \x01(\bR\bfullScan\"\xa0\x04\n" + "\tQueryData\x12\x1d\n" + "\n" + "service_id\x18\x01 \x01(\tR\tserviceId\x12!\n" + @@ -305,7 +449,9 @@ const file_realtimeanalytics_v1_query_proto_rawDesc = "" + "\x18query_execution_duration\x18\x06 \x01(\v2\x19.google.protobuf.DurationR\x16queryExecutionDuration\x12H\n" + "\x12query_collect_time\x18\a \x01(\v2\x1a.google.protobuf.TimestampR\x10queryCollectTime\x12%\n" + "\x0eclient_address\x18\b \x01(\tR\rclientAddress\x12R\n" + - "\x10mongo_db_payload\x18\t \x01(\v2&.realtimeanalytics.v1.QueryMongoDBDataH\x00R\x0emongoDbPayloadB\t\n" + + "\x10mongo_db_payload\x18\t \x01(\v2&.realtimeanalytics.v1.QueryMongoDBDataH\x00R\x0emongoDbPayload\x12L\n" + + "\x0emy_sql_payload\x18\n" + + " \x01(\v2$.realtimeanalytics.v1.QueryMySQLDataH\x00R\fmySqlPayloadB\t\n" + "\apayloadB\xdc\x01\n" + "\x18com.realtimeanalytics.v1B\n" + "QueryProtoP\x01ZCgithub.com/percona/pmm/api/realtimeanalytics/v1;realtimeanalyticsv1\xa2\x02\x03RXX\xaa\x02\x14Realtimeanalytics.V1\xca\x02\x14Realtimeanalytics\\V1\xe2\x02 Realtimeanalytics\\V1\\GPBMetadata\xea\x02\x15Realtimeanalytics::V1b\x06proto3" @@ -322,26 +468,25 @@ func file_realtimeanalytics_v1_query_proto_rawDescGZIP() []byte { return file_realtimeanalytics_v1_query_proto_rawDescData } -var ( - file_realtimeanalytics_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 2) - file_realtimeanalytics_v1_query_proto_goTypes = []any{ - (*QueryMongoDBData)(nil), // 0: realtimeanalytics.v1.QueryMongoDBData - (*QueryData)(nil), // 1: realtimeanalytics.v1.QueryData - (*timestamppb.Timestamp)(nil), // 2: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 3: google.protobuf.Duration - } -) - +var file_realtimeanalytics_v1_query_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_realtimeanalytics_v1_query_proto_goTypes = []any{ + (*QueryMongoDBData)(nil), // 0: realtimeanalytics.v1.QueryMongoDBData + (*QueryMySQLData)(nil), // 1: realtimeanalytics.v1.QueryMySQLData + (*QueryData)(nil), // 2: realtimeanalytics.v1.QueryData + (*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 4: google.protobuf.Duration +} var file_realtimeanalytics_v1_query_proto_depIdxs = []int32{ - 2, // 0: realtimeanalytics.v1.QueryMongoDBData.operation_start_time:type_name -> google.protobuf.Timestamp - 3, // 1: realtimeanalytics.v1.QueryData.query_execution_duration:type_name -> google.protobuf.Duration - 2, // 2: realtimeanalytics.v1.QueryData.query_collect_time:type_name -> google.protobuf.Timestamp + 3, // 0: realtimeanalytics.v1.QueryMongoDBData.operation_start_time:type_name -> google.protobuf.Timestamp + 4, // 1: realtimeanalytics.v1.QueryData.query_execution_duration:type_name -> google.protobuf.Duration + 3, // 2: realtimeanalytics.v1.QueryData.query_collect_time:type_name -> google.protobuf.Timestamp 0, // 3: realtimeanalytics.v1.QueryData.mongo_db_payload:type_name -> realtimeanalytics.v1.QueryMongoDBData - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 1, // 4: realtimeanalytics.v1.QueryData.my_sql_payload:type_name -> realtimeanalytics.v1.QueryMySQLData + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_realtimeanalytics_v1_query_proto_init() } @@ -349,8 +494,9 @@ func file_realtimeanalytics_v1_query_proto_init() { if File_realtimeanalytics_v1_query_proto != nil { return } - file_realtimeanalytics_v1_query_proto_msgTypes[1].OneofWrappers = []any{ + file_realtimeanalytics_v1_query_proto_msgTypes[2].OneofWrappers = []any{ (*QueryData_MongoDbPayload)(nil), + (*QueryData_MySqlPayload)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -358,7 +504,7 @@ func file_realtimeanalytics_v1_query_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_realtimeanalytics_v1_query_proto_rawDesc), len(file_realtimeanalytics_v1_query_proto_rawDesc)), NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/api/realtimeanalytics/v1/query.pb.validate.go b/api/realtimeanalytics/v1/query.pb.validate.go index af551461acf..fab2b85c1ef 100644 --- a/api/realtimeanalytics/v1/query.pb.validate.go +++ b/api/realtimeanalytics/v1/query.pb.validate.go @@ -165,8 +165,7 @@ func (e QueryMongoDBDataValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QueryMongoDBDataValidationError{} @@ -179,6 +178,124 @@ var _ interface { ErrorName() string } = QueryMongoDBDataValidationError{} +// Validate checks the field values on QueryMySQLData with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *QueryMySQLData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryMySQLData with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in QueryMySQLDataMultiError, +// or nil if none found. +func (m *QueryMySQLData) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryMySQLData) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for DbInstanceAddress + + // no validation rules for ProgramName + + // no validation rules for DatabaseName + + // no validation rules for Command + + // no validation rules for State + + // no validation rules for Username + + // no validation rules for RowsExamined + + // no validation rules for RowsSent + + // no validation rules for FullScan + + if len(errors) > 0 { + return QueryMySQLDataMultiError(errors) + } + + return nil +} + +// QueryMySQLDataMultiError is an error wrapping multiple validation errors +// returned by QueryMySQLData.ValidateAll() if the designated constraints +// aren't met. +type QueryMySQLDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryMySQLDataMultiError) Error() string { + msgs := make([]string, 0, len(m)) + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryMySQLDataMultiError) AllErrors() []error { return m } + +// QueryMySQLDataValidationError is the validation error returned by +// QueryMySQLData.Validate if the designated constraints aren't met. +type QueryMySQLDataValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e QueryMySQLDataValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e QueryMySQLDataValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e QueryMySQLDataValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e QueryMySQLDataValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e QueryMySQLDataValidationError) ErrorName() string { return "QueryMySQLDataValidationError" } + +// Error satisfies the builtin error interface +func (e QueryMySQLDataValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sQueryMySQLData.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = QueryMySQLDataValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = QueryMySQLDataValidationError{} + // Validate checks the field values on QueryData with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. @@ -313,6 +430,47 @@ func (m *QueryData) validate(all bool) error { } } + case *QueryData_MySqlPayload: + if v == nil { + err := QueryDataValidationError{ + field: "Payload", + reason: "oneof value cannot be a typed-nil", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetMySqlPayload()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, QueryDataValidationError{ + field: "MySqlPayload", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, QueryDataValidationError{ + field: "MySqlPayload", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMySqlPayload()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return QueryDataValidationError{ + field: "MySqlPayload", + reason: "embedded message failed validation", + cause: err, + } + } + } + default: _ = v // ensures v is used } @@ -381,8 +539,7 @@ func (e QueryDataValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = QueryDataValidationError{} diff --git a/api/realtimeanalytics/v1/query.proto b/api/realtimeanalytics/v1/query.proto index 7732e321f79..411ea2c704f 100644 --- a/api/realtimeanalytics/v1/query.proto +++ b/api/realtimeanalytics/v1/query.proto @@ -26,6 +26,29 @@ message QueryMongoDBData { string plan_summary = 8; } +// QueryMySQLData holds MySQL-specific Real-Time Analytics query information. +// The data is sourced from the sys.processlist view. +message QueryMySQLData { + // MySQL instance address(host:port) that processing the query. + string db_instance_address = 1; + // Client program name connected to MySQL (program_name from sys.processlist). + string program_name = 2; + // Database name (db from sys.processlist). + string database_name = 3; + // Command type the connection is executing ("Query", "Execute", etc). + string command = 4; + // State of the connection/thread (for example "Sending data"). + string state = 5; + // MySQL user name associated with the query. + string username = 6 [(extensions.v1.sensitive) = REDACT_TYPE_FULL]; + // Number of rows examined by the statement so far. + int64 rows_examined = 7; + // Number of rows sent by the statement so far. + int64 rows_sent = 8; + // Indicates whether the statement performed a full table scan. + bool full_scan = 9; +} + // QueryData represents a single Real-Time Analytics query data point. // It includes general query information and a payload for database-specific details. message QueryData { @@ -49,5 +72,7 @@ message QueryData { oneof payload { // MongoDB-specific query data. QueryMongoDBData mongo_db_payload = 9; + // MySQL-specific query data. + QueryMySQLData my_sql_payload = 10; } } diff --git a/api/realtimeanalytics/v1/realtimeanalytics.pb.go b/api/realtimeanalytics/v1/realtimeanalytics.pb.go index 8dbdbf8ccff..1df54234441 100644 --- a/api/realtimeanalytics/v1/realtimeanalytics.pb.go +++ b/api/realtimeanalytics/v1/realtimeanalytics.pb.go @@ -7,19 +7,17 @@ package realtimeanalyticsv1 import ( - reflect "reflect" - sync "sync" - unsafe "unsafe" - _ "github.com/envoyproxy/protoc-gen-validate/validate" _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2/options" + v1 "github.com/percona/pmm/api/inventory/v1" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" durationpb "google.golang.org/protobuf/types/known/durationpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - - v1 "github.com/percona/pmm/api/inventory/v1" + reflect "reflect" + sync "sync" + unsafe "unsafe" ) const ( @@ -133,6 +131,7 @@ func (x *ListServicesRequest) GetServiceType() v1.ServiceType { type ListServicesResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Mongodb []*v1.MongoDBService `protobuf:"bytes,1,rep,name=mongodb,proto3" json:"mongodb,omitempty"` + Mysql []*v1.MySQLService `protobuf:"bytes,2,rep,name=mysql,proto3" json:"mysql,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -174,6 +173,13 @@ func (x *ListServicesResponse) GetMongodb() []*v1.MongoDBService { return nil } +func (x *ListServicesResponse) GetMysql() []*v1.MySQLService { + if x != nil { + return x.Mysql + } + return nil +} + // Session represents an active Real-Time Analytics session. type Session struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -638,9 +644,10 @@ const file_realtimeanalytics_v1_realtimeanalytics_proto_rawDesc = "" + "\n" + ",realtimeanalytics/v1/realtimeanalytics.proto\x12\x14realtimeanalytics.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1binventory/v1/services.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a realtimeanalytics/v1/query.proto\x1a\x17validate/validate.proto\"S\n" + "\x13ListServicesRequest\x12<\n" + - "\fservice_type\x18\x01 \x01(\x0e2\x19.inventory.v1.ServiceTypeR\vserviceType\"N\n" + + "\fservice_type\x18\x01 \x01(\x0e2\x19.inventory.v1.ServiceTypeR\vserviceType\"\x80\x01\n" + "\x14ListServicesResponse\x126\n" + - "\amongodb\x18\x01 \x03(\v2\x1c.inventory.v1.MongoDBServiceR\amongodb\"\xac\x02\n" + + "\amongodb\x18\x01 \x03(\v2\x1c.inventory.v1.MongoDBServiceR\amongodb\x120\n" + + "\x05mysql\x18\x02 \x03(\v2\x1a.inventory.v1.MySQLServiceR\x05mysql\"\xac\x02\n" + "\aSession\x12\x1d\n" + "\n" + "service_id\x18\x01 \x01(\tR\tserviceId\x12!\n" + @@ -695,54 +702,53 @@ func file_realtimeanalytics_v1_realtimeanalytics_proto_rawDescGZIP() []byte { return file_realtimeanalytics_v1_realtimeanalytics_proto_rawDescData } -var ( - file_realtimeanalytics_v1_realtimeanalytics_proto_enumTypes = make([]protoimpl.EnumInfo, 1) - file_realtimeanalytics_v1_realtimeanalytics_proto_msgTypes = make([]protoimpl.MessageInfo, 11) - file_realtimeanalytics_v1_realtimeanalytics_proto_goTypes = []any{ - SessionStatus(0), // 0: realtimeanalytics.v1.SessionStatus - (*ListServicesRequest)(nil), // 1: realtimeanalytics.v1.ListServicesRequest - (*ListServicesResponse)(nil), // 2: realtimeanalytics.v1.ListServicesResponse - (*Session)(nil), // 3: realtimeanalytics.v1.Session - (*ListSessionsRequest)(nil), // 4: realtimeanalytics.v1.ListSessionsRequest - (*ListSessionsResponse)(nil), // 5: realtimeanalytics.v1.ListSessionsResponse - (*StartSessionRequest)(nil), // 6: realtimeanalytics.v1.StartSessionRequest - (*StartSessionResponse)(nil), // 7: realtimeanalytics.v1.StartSessionResponse - (*StopSessionRequest)(nil), // 8: realtimeanalytics.v1.StopSessionRequest - (*StopSessionResponse)(nil), // 9: realtimeanalytics.v1.StopSessionResponse - (*SearchQueriesRequest)(nil), // 10: realtimeanalytics.v1.SearchQueriesRequest - (*SearchQueriesResponse)(nil), // 11: realtimeanalytics.v1.SearchQueriesResponse - v1.ServiceType(0), // 12: inventory.v1.ServiceType - (*v1.MongoDBService)(nil), // 13: inventory.v1.MongoDBService - (*timestamppb.Timestamp)(nil), // 14: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 15: google.protobuf.Duration - (*QueryData)(nil), // 16: realtimeanalytics.v1.QueryData - } -) - +var file_realtimeanalytics_v1_realtimeanalytics_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_realtimeanalytics_v1_realtimeanalytics_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_realtimeanalytics_v1_realtimeanalytics_proto_goTypes = []any{ + (SessionStatus)(0), // 0: realtimeanalytics.v1.SessionStatus + (*ListServicesRequest)(nil), // 1: realtimeanalytics.v1.ListServicesRequest + (*ListServicesResponse)(nil), // 2: realtimeanalytics.v1.ListServicesResponse + (*Session)(nil), // 3: realtimeanalytics.v1.Session + (*ListSessionsRequest)(nil), // 4: realtimeanalytics.v1.ListSessionsRequest + (*ListSessionsResponse)(nil), // 5: realtimeanalytics.v1.ListSessionsResponse + (*StartSessionRequest)(nil), // 6: realtimeanalytics.v1.StartSessionRequest + (*StartSessionResponse)(nil), // 7: realtimeanalytics.v1.StartSessionResponse + (*StopSessionRequest)(nil), // 8: realtimeanalytics.v1.StopSessionRequest + (*StopSessionResponse)(nil), // 9: realtimeanalytics.v1.StopSessionResponse + (*SearchQueriesRequest)(nil), // 10: realtimeanalytics.v1.SearchQueriesRequest + (*SearchQueriesResponse)(nil), // 11: realtimeanalytics.v1.SearchQueriesResponse + (v1.ServiceType)(0), // 12: inventory.v1.ServiceType + (*v1.MongoDBService)(nil), // 13: inventory.v1.MongoDBService + (*v1.MySQLService)(nil), // 14: inventory.v1.MySQLService + (*timestamppb.Timestamp)(nil), // 15: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 16: google.protobuf.Duration + (*QueryData)(nil), // 17: realtimeanalytics.v1.QueryData +} var file_realtimeanalytics_v1_realtimeanalytics_proto_depIdxs = []int32{ 12, // 0: realtimeanalytics.v1.ListServicesRequest.service_type:type_name -> inventory.v1.ServiceType 13, // 1: realtimeanalytics.v1.ListServicesResponse.mongodb:type_name -> inventory.v1.MongoDBService - 14, // 2: realtimeanalytics.v1.Session.start_time:type_name -> google.protobuf.Timestamp - 15, // 3: realtimeanalytics.v1.Session.collect_interval:type_name -> google.protobuf.Duration - 0, // 4: realtimeanalytics.v1.Session.status:type_name -> realtimeanalytics.v1.SessionStatus - 3, // 5: realtimeanalytics.v1.ListSessionsResponse.sessions:type_name -> realtimeanalytics.v1.Session - 3, // 6: realtimeanalytics.v1.StartSessionResponse.session:type_name -> realtimeanalytics.v1.Session - 16, // 7: realtimeanalytics.v1.SearchQueriesResponse.queries:type_name -> realtimeanalytics.v1.QueryData - 1, // 8: realtimeanalytics.v1.RealtimeAnalyticsService.ListServices:input_type -> realtimeanalytics.v1.ListServicesRequest - 4, // 9: realtimeanalytics.v1.RealtimeAnalyticsService.ListSessions:input_type -> realtimeanalytics.v1.ListSessionsRequest - 6, // 10: realtimeanalytics.v1.RealtimeAnalyticsService.StartSession:input_type -> realtimeanalytics.v1.StartSessionRequest - 8, // 11: realtimeanalytics.v1.RealtimeAnalyticsService.StopSession:input_type -> realtimeanalytics.v1.StopSessionRequest - 10, // 12: realtimeanalytics.v1.RealtimeAnalyticsService.SearchQueries:input_type -> realtimeanalytics.v1.SearchQueriesRequest - 2, // 13: realtimeanalytics.v1.RealtimeAnalyticsService.ListServices:output_type -> realtimeanalytics.v1.ListServicesResponse - 5, // 14: realtimeanalytics.v1.RealtimeAnalyticsService.ListSessions:output_type -> realtimeanalytics.v1.ListSessionsResponse - 7, // 15: realtimeanalytics.v1.RealtimeAnalyticsService.StartSession:output_type -> realtimeanalytics.v1.StartSessionResponse - 9, // 16: realtimeanalytics.v1.RealtimeAnalyticsService.StopSession:output_type -> realtimeanalytics.v1.StopSessionResponse - 11, // 17: realtimeanalytics.v1.RealtimeAnalyticsService.SearchQueries:output_type -> realtimeanalytics.v1.SearchQueriesResponse - 13, // [13:18] is the sub-list for method output_type - 8, // [8:13] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 14, // 2: realtimeanalytics.v1.ListServicesResponse.mysql:type_name -> inventory.v1.MySQLService + 15, // 3: realtimeanalytics.v1.Session.start_time:type_name -> google.protobuf.Timestamp + 16, // 4: realtimeanalytics.v1.Session.collect_interval:type_name -> google.protobuf.Duration + 0, // 5: realtimeanalytics.v1.Session.status:type_name -> realtimeanalytics.v1.SessionStatus + 3, // 6: realtimeanalytics.v1.ListSessionsResponse.sessions:type_name -> realtimeanalytics.v1.Session + 3, // 7: realtimeanalytics.v1.StartSessionResponse.session:type_name -> realtimeanalytics.v1.Session + 17, // 8: realtimeanalytics.v1.SearchQueriesResponse.queries:type_name -> realtimeanalytics.v1.QueryData + 1, // 9: realtimeanalytics.v1.RealtimeAnalyticsService.ListServices:input_type -> realtimeanalytics.v1.ListServicesRequest + 4, // 10: realtimeanalytics.v1.RealtimeAnalyticsService.ListSessions:input_type -> realtimeanalytics.v1.ListSessionsRequest + 6, // 11: realtimeanalytics.v1.RealtimeAnalyticsService.StartSession:input_type -> realtimeanalytics.v1.StartSessionRequest + 8, // 12: realtimeanalytics.v1.RealtimeAnalyticsService.StopSession:input_type -> realtimeanalytics.v1.StopSessionRequest + 10, // 13: realtimeanalytics.v1.RealtimeAnalyticsService.SearchQueries:input_type -> realtimeanalytics.v1.SearchQueriesRequest + 2, // 14: realtimeanalytics.v1.RealtimeAnalyticsService.ListServices:output_type -> realtimeanalytics.v1.ListServicesResponse + 5, // 15: realtimeanalytics.v1.RealtimeAnalyticsService.ListSessions:output_type -> realtimeanalytics.v1.ListSessionsResponse + 7, // 16: realtimeanalytics.v1.RealtimeAnalyticsService.StartSession:output_type -> realtimeanalytics.v1.StartSessionResponse + 9, // 17: realtimeanalytics.v1.RealtimeAnalyticsService.StopSession:output_type -> realtimeanalytics.v1.StopSessionResponse + 11, // 18: realtimeanalytics.v1.RealtimeAnalyticsService.SearchQueries:output_type -> realtimeanalytics.v1.SearchQueriesResponse + 14, // [14:19] is the sub-list for method output_type + 9, // [9:14] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_realtimeanalytics_v1_realtimeanalytics_proto_init() } diff --git a/api/realtimeanalytics/v1/realtimeanalytics.pb.validate.go b/api/realtimeanalytics/v1/realtimeanalytics.pb.validate.go index f392e0a0102..414a2dc8f5a 100644 --- a/api/realtimeanalytics/v1/realtimeanalytics.pb.validate.go +++ b/api/realtimeanalytics/v1/realtimeanalytics.pb.validate.go @@ -130,8 +130,7 @@ func (e ListServicesRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ListServicesRequestValidationError{} @@ -200,6 +199,40 @@ func (m *ListServicesResponse) validate(all bool) error { } + for idx, item := range m.GetMysql() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListServicesResponseValidationError{ + field: fmt.Sprintf("Mysql[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListServicesResponseValidationError{ + field: fmt.Sprintf("Mysql[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListServicesResponseValidationError{ + field: fmt.Sprintf("Mysql[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + if len(errors) > 0 { return ListServicesResponseMultiError(errors) } @@ -267,8 +300,7 @@ func (e ListServicesResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ListServicesResponseValidationError{} @@ -432,8 +464,7 @@ func (e SessionValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = SessionValidationError{} @@ -537,8 +568,7 @@ func (e ListSessionsRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ListSessionsRequestValidationError{} @@ -674,8 +704,7 @@ func (e ListSessionsResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = ListSessionsResponseValidationError{} @@ -788,8 +817,7 @@ func (e StartSessionRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = StartSessionRequestValidationError{} @@ -920,8 +948,7 @@ func (e StartSessionResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = StartSessionResponseValidationError{} @@ -1034,8 +1061,7 @@ func (e StopSessionRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = StopSessionRequestValidationError{} @@ -1137,8 +1163,7 @@ func (e StopSessionResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = StopSessionResponseValidationError{} @@ -1274,8 +1299,7 @@ func (e SearchQueriesRequestValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = SearchQueriesRequestValidationError{} @@ -1411,8 +1435,7 @@ func (e SearchQueriesResponseValidationError) Error() string { key, e.field, e.reason, - cause, - ) + cause) } var _ error = SearchQueriesResponseValidationError{} diff --git a/api/realtimeanalytics/v1/realtimeanalytics.proto b/api/realtimeanalytics/v1/realtimeanalytics.proto index 3926de3f866..822faca1c4f 100644 --- a/api/realtimeanalytics/v1/realtimeanalytics.proto +++ b/api/realtimeanalytics/v1/realtimeanalytics.proto @@ -19,6 +19,7 @@ message ListServicesRequest { message ListServicesResponse { repeated inventory.v1.MongoDBService mongodb = 1; + repeated inventory.v1.MySQLService mysql = 2; } // Session related messages diff --git a/api/swagger/swagger-dev.json b/api/swagger/swagger-dev.json index f521777f744..036cda1e695 100644 --- a/api/swagger/swagger-dev.json +++ b/api/swagger/swagger-dev.json @@ -5351,7 +5351,8 @@ "AGENT_TYPE_RDS_EXPORTER", "AGENT_TYPE_AZURE_DATABASE_EXPORTER", "AGENT_TYPE_NOMAD_AGENT", - "AGENT_TYPE_RTA_MONGODB_AGENT" + "AGENT_TYPE_RTA_MONGODB_AGENT", + "AGENT_TYPE_RTA_MYSQL_AGENT" ], "type": "string", "default": "AGENT_TYPE_UNSPECIFIED", @@ -7490,6 +7491,102 @@ } }, "x-order": 18 + }, + "rta_mysql_agent": { + "type": "array", + "items": { + "description": "RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique agent identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MySQL username for getting the currently running queries.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "rta_options": { + "description": "RTAOptions holds Real-Time Query Analytics agent options.", + "type": "object", + "properties": { + "collect_interval": { + "description": "Query collect interval (default 2s is set by server).", + "type": "string", + "x-order": 0 + } + }, + "x-order": 8 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - AGENT_STATUS_STARTING: Agent is starting.\n - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting.\n - AGENT_STATUS_RUNNING: Agent is running.\n - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon.\n - AGENT_STATUS_STOPPING: Agent is stopping.\n - AGENT_STATUS_DONE: Agent has been stopped or disabled.\n - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state.", + "type": "string", + "default": "AGENT_STATUS_UNSPECIFIED", + "enum": [ + "AGENT_STATUS_UNSPECIFIED", + "AGENT_STATUS_STARTING", + "AGENT_STATUS_INITIALIZATION_ERROR", + "AGENT_STATUS_RUNNING", + "AGENT_STATUS_WAITING", + "AGENT_STATUS_STOPPING", + "AGENT_STATUS_DONE", + "AGENT_STATUS_UNKNOWN" + ], + "x-order": 9 + }, + "log_level": { + "description": "- LOG_LEVEL_UNSPECIFIED: Auto", + "type": "string", + "title": "Log level for exporters", + "default": "LOG_LEVEL_UNSPECIFIED", + "enum": [ + "LOG_LEVEL_UNSPECIFIED", + "LOG_LEVEL_FATAL", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_WARN", + "LOG_LEVEL_INFO", + "LOG_LEVEL_DEBUG" + ], + "x-order": 10 + } + } + }, + "x-order": 19 } } } @@ -13200,6 +13297,99 @@ } }, "x-order": 18 + }, + "rta_mysql_agent": { + "description": "RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique agent identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MySQL username for getting the currently running queries.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "rta_options": { + "description": "RTAOptions holds Real-Time Query Analytics agent options.", + "type": "object", + "properties": { + "collect_interval": { + "description": "Query collect interval (default 2s is set by server).", + "type": "string", + "x-order": 0 + } + }, + "x-order": 8 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - AGENT_STATUS_STARTING: Agent is starting.\n - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting.\n - AGENT_STATUS_RUNNING: Agent is running.\n - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon.\n - AGENT_STATUS_STOPPING: Agent is stopping.\n - AGENT_STATUS_DONE: Agent has been stopped or disabled.\n - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state.", + "type": "string", + "default": "AGENT_STATUS_UNSPECIFIED", + "enum": [ + "AGENT_STATUS_UNSPECIFIED", + "AGENT_STATUS_STARTING", + "AGENT_STATUS_INITIALIZATION_ERROR", + "AGENT_STATUS_RUNNING", + "AGENT_STATUS_WAITING", + "AGENT_STATUS_STOPPING", + "AGENT_STATUS_DONE", + "AGENT_STATUS_UNKNOWN" + ], + "x-order": 9 + }, + "log_level": { + "description": "- LOG_LEVEL_UNSPECIFIED: Auto", + "type": "string", + "title": "Log level for exporters", + "default": "LOG_LEVEL_UNSPECIFIED", + "enum": [ + "LOG_LEVEL_UNSPECIFIED", + "LOG_LEVEL_FATAL", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_WARN", + "LOG_LEVEL_INFO", + "LOG_LEVEL_DEBUG" + ], + "x-order": 10 + } + }, + "x-order": 19 } } } @@ -31483,6 +31673,60 @@ } }, "x-order": 8 + }, + "my_sql_payload": { + "description": "QueryMySQLData holds MySQL-specific Real-Time Analytics query information.\nThe data is sourced from the sys.processlist view.", + "type": "object", + "properties": { + "db_instance_address": { + "description": "MySQL instance address(host:port) that processing the query.", + "type": "string", + "x-order": 0 + }, + "program_name": { + "description": "Client program name connected to MySQL (program_name from sys.processlist).", + "type": "string", + "x-order": 1 + }, + "database_name": { + "description": "Database name (db from sys.processlist).", + "type": "string", + "x-order": 2 + }, + "command": { + "description": "Command type the connection is executing (\"Query\", \"Execute\", etc).", + "type": "string", + "x-order": 3 + }, + "state": { + "description": "State of the connection/thread (for example \"Sending data\").", + "type": "string", + "x-order": 4 + }, + "username": { + "description": "MySQL user name associated with the query.", + "type": "string", + "x-order": 5 + }, + "rows_examined": { + "description": "Number of rows examined by the statement so far.", + "type": "string", + "format": "int64", + "x-order": 6 + }, + "rows_sent": { + "description": "Number of rows sent by the statement so far.", + "type": "string", + "format": "int64", + "x-order": 7 + }, + "full_scan": { + "description": "Indicates whether the statement performed a full table scan.", + "type": "boolean", + "x-order": 8 + } + }, + "x-order": 9 } } }, @@ -31626,6 +31870,83 @@ } }, "x-order": 0 + }, + "mysql": { + "type": "array", + "items": { + "description": "MySQLService represents a generic MySQL instance.", + "type": "object", + "properties": { + "service_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "service_name": { + "description": "Unique across all Services user-defined name.", + "type": "string", + "x-order": 1 + }, + "node_id": { + "description": "Node identifier where this instance runs.", + "type": "string", + "x-order": 2 + }, + "address": { + "description": "Access address (DNS name or IP).\nAddress (and port) or socket is required.", + "type": "string", + "x-order": 3 + }, + "port": { + "description": "Access port.\nPort is required when the address present.", + "type": "integer", + "format": "int64", + "x-order": 4 + }, + "socket": { + "description": "Access unix socket.\nAddress (and port) or socket is required.", + "type": "string", + "x-order": 5 + }, + "environment": { + "description": "Environment name.", + "type": "string", + "x-order": 6 + }, + "cluster": { + "description": "Cluster name.", + "type": "string", + "x-order": 7 + }, + "replication_set": { + "description": "Replication set name.", + "type": "string", + "x-order": 8 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 9 + }, + "version": { + "description": "MySQL version.", + "type": "string", + "x-order": 10 + }, + "extra_dsn_params": { + "description": "Extra parameters to be added to the DSN.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 11 + } + } + }, + "x-order": 1 } } } diff --git a/api/swagger/swagger.json b/api/swagger/swagger.json index ae34b9296a5..c36378b433f 100644 --- a/api/swagger/swagger.json +++ b/api/swagger/swagger.json @@ -4378,7 +4378,8 @@ "AGENT_TYPE_RDS_EXPORTER", "AGENT_TYPE_AZURE_DATABASE_EXPORTER", "AGENT_TYPE_NOMAD_AGENT", - "AGENT_TYPE_RTA_MONGODB_AGENT" + "AGENT_TYPE_RTA_MONGODB_AGENT", + "AGENT_TYPE_RTA_MYSQL_AGENT" ], "type": "string", "default": "AGENT_TYPE_UNSPECIFIED", @@ -6517,6 +6518,102 @@ } }, "x-order": 18 + }, + "rta_mysql_agent": { + "type": "array", + "items": { + "description": "RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique agent identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MySQL username for getting the currently running queries.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "rta_options": { + "description": "RTAOptions holds Real-Time Query Analytics agent options.", + "type": "object", + "properties": { + "collect_interval": { + "description": "Query collect interval (default 2s is set by server).", + "type": "string", + "x-order": 0 + } + }, + "x-order": 8 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - AGENT_STATUS_STARTING: Agent is starting.\n - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting.\n - AGENT_STATUS_RUNNING: Agent is running.\n - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon.\n - AGENT_STATUS_STOPPING: Agent is stopping.\n - AGENT_STATUS_DONE: Agent has been stopped or disabled.\n - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state.", + "type": "string", + "default": "AGENT_STATUS_UNSPECIFIED", + "enum": [ + "AGENT_STATUS_UNSPECIFIED", + "AGENT_STATUS_STARTING", + "AGENT_STATUS_INITIALIZATION_ERROR", + "AGENT_STATUS_RUNNING", + "AGENT_STATUS_WAITING", + "AGENT_STATUS_STOPPING", + "AGENT_STATUS_DONE", + "AGENT_STATUS_UNKNOWN" + ], + "x-order": 9 + }, + "log_level": { + "description": "- LOG_LEVEL_UNSPECIFIED: Auto", + "type": "string", + "title": "Log level for exporters", + "default": "LOG_LEVEL_UNSPECIFIED", + "enum": [ + "LOG_LEVEL_UNSPECIFIED", + "LOG_LEVEL_FATAL", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_WARN", + "LOG_LEVEL_INFO", + "LOG_LEVEL_DEBUG" + ], + "x-order": 10 + } + } + }, + "x-order": 19 } } } @@ -12227,6 +12324,99 @@ } }, "x-order": 18 + }, + "rta_mysql_agent": { + "description": "RTAMySQLAgent runs within pmm-agent and sends MySQL Real-Time Query Analytics data to the PMM Server.", + "type": "object", + "properties": { + "agent_id": { + "description": "Unique agent identifier.", + "type": "string", + "x-order": 0 + }, + "pmm_agent_id": { + "description": "The pmm-agent identifier which runs this instance.", + "type": "string", + "x-order": 1 + }, + "disabled": { + "description": "Desired Agent status: enabled (false) or disabled (true).", + "type": "boolean", + "x-order": 2 + }, + "service_id": { + "description": "Service identifier.", + "type": "string", + "x-order": 3 + }, + "username": { + "description": "MySQL username for getting the currently running queries.", + "type": "string", + "x-order": 4 + }, + "tls": { + "description": "Use TLS for database connections.", + "type": "boolean", + "x-order": 5 + }, + "tls_skip_verify": { + "description": "Skip TLS certificate and hostname validation.", + "type": "boolean", + "x-order": 6 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 7 + }, + "rta_options": { + "description": "RTAOptions holds Real-Time Query Analytics agent options.", + "type": "object", + "properties": { + "collect_interval": { + "description": "Query collect interval (default 2s is set by server).", + "type": "string", + "x-order": 0 + } + }, + "x-order": 8 + }, + "status": { + "description": "AgentStatus represents actual Agent status.\n\n - AGENT_STATUS_STARTING: Agent is starting.\n - AGENT_STATUS_INITIALIZATION_ERROR: Agent encountered error when starting.\n - AGENT_STATUS_RUNNING: Agent is running.\n - AGENT_STATUS_WAITING: Agent encountered error and will be restarted automatically soon.\n - AGENT_STATUS_STOPPING: Agent is stopping.\n - AGENT_STATUS_DONE: Agent has been stopped or disabled.\n - AGENT_STATUS_UNKNOWN: Agent is not connected, we don't know anything about it's state.", + "type": "string", + "default": "AGENT_STATUS_UNSPECIFIED", + "enum": [ + "AGENT_STATUS_UNSPECIFIED", + "AGENT_STATUS_STARTING", + "AGENT_STATUS_INITIALIZATION_ERROR", + "AGENT_STATUS_RUNNING", + "AGENT_STATUS_WAITING", + "AGENT_STATUS_STOPPING", + "AGENT_STATUS_DONE", + "AGENT_STATUS_UNKNOWN" + ], + "x-order": 9 + }, + "log_level": { + "description": "- LOG_LEVEL_UNSPECIFIED: Auto", + "type": "string", + "title": "Log level for exporters", + "default": "LOG_LEVEL_UNSPECIFIED", + "enum": [ + "LOG_LEVEL_UNSPECIFIED", + "LOG_LEVEL_FATAL", + "LOG_LEVEL_ERROR", + "LOG_LEVEL_WARN", + "LOG_LEVEL_INFO", + "LOG_LEVEL_DEBUG" + ], + "x-order": 10 + } + }, + "x-order": 19 } } } @@ -30510,6 +30700,60 @@ } }, "x-order": 8 + }, + "my_sql_payload": { + "description": "QueryMySQLData holds MySQL-specific Real-Time Analytics query information.\nThe data is sourced from the sys.processlist view.", + "type": "object", + "properties": { + "db_instance_address": { + "description": "MySQL instance address(host:port) that processing the query.", + "type": "string", + "x-order": 0 + }, + "program_name": { + "description": "Client program name connected to MySQL (program_name from sys.processlist).", + "type": "string", + "x-order": 1 + }, + "database_name": { + "description": "Database name (db from sys.processlist).", + "type": "string", + "x-order": 2 + }, + "command": { + "description": "Command type the connection is executing (\"Query\", \"Execute\", etc).", + "type": "string", + "x-order": 3 + }, + "state": { + "description": "State of the connection/thread (for example \"Sending data\").", + "type": "string", + "x-order": 4 + }, + "username": { + "description": "MySQL user name associated with the query.", + "type": "string", + "x-order": 5 + }, + "rows_examined": { + "description": "Number of rows examined by the statement so far.", + "type": "string", + "format": "int64", + "x-order": 6 + }, + "rows_sent": { + "description": "Number of rows sent by the statement so far.", + "type": "string", + "format": "int64", + "x-order": 7 + }, + "full_scan": { + "description": "Indicates whether the statement performed a full table scan.", + "type": "boolean", + "x-order": 8 + } + }, + "x-order": 9 } } }, @@ -30653,6 +30897,83 @@ } }, "x-order": 0 + }, + "mysql": { + "type": "array", + "items": { + "description": "MySQLService represents a generic MySQL instance.", + "type": "object", + "properties": { + "service_id": { + "description": "Unique randomly generated instance identifier.", + "type": "string", + "x-order": 0 + }, + "service_name": { + "description": "Unique across all Services user-defined name.", + "type": "string", + "x-order": 1 + }, + "node_id": { + "description": "Node identifier where this instance runs.", + "type": "string", + "x-order": 2 + }, + "address": { + "description": "Access address (DNS name or IP).\nAddress (and port) or socket is required.", + "type": "string", + "x-order": 3 + }, + "port": { + "description": "Access port.\nPort is required when the address present.", + "type": "integer", + "format": "int64", + "x-order": 4 + }, + "socket": { + "description": "Access unix socket.\nAddress (and port) or socket is required.", + "type": "string", + "x-order": 5 + }, + "environment": { + "description": "Environment name.", + "type": "string", + "x-order": 6 + }, + "cluster": { + "description": "Cluster name.", + "type": "string", + "x-order": 7 + }, + "replication_set": { + "description": "Replication set name.", + "type": "string", + "x-order": 8 + }, + "custom_labels": { + "description": "Custom user-assigned labels.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 9 + }, + "version": { + "description": "MySQL version.", + "type": "string", + "x-order": 10 + }, + "extra_dsn_params": { + "description": "Extra parameters to be added to the DSN.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "x-order": 11 + } + } + }, + "x-order": 1 } } } diff --git a/managed/models/agent_helpers.go b/managed/models/agent_helpers.go index 5a422296f26..cbd4503070d 100644 --- a/managed/models/agent_helpers.go +++ b/managed/models/agent_helpers.go @@ -356,6 +356,7 @@ func FindDBConfigForService(q *reform.Querier, serviceID string) (*DBConfig, err MySQLdExporterType, QANMySQLSlowlogAgentType, QANMySQLPerfSchemaAgentType, + RTAMySQLAgentType, } case PostgreSQLServiceType: agentTypes = []AgentType{ @@ -876,6 +877,9 @@ func compatibleServiceAndAgent(serviceType ServiceType, agentType AgentType) boo RTAMongoDBAgentType: { MongoDBServiceType, }, + RTAMySQLAgentType: { + MySQLServiceType, + }, PostgresExporterType: { PostgreSQLServiceType, }, @@ -982,8 +986,8 @@ func CreateAgent(q *reform.Querier, agentType AgentType, params *CreateAgentPara } switch agentType { - // For the time being only RTA MangoDB Agent has RTA options. - case RTAMongoDBAgentType: + // RTA agents collect currently running queries on a fixed interval. + case RTAMongoDBAgentType, RTAMySQLAgentType: row.RTAOptions = RTAOptions{ // default value CollectInterval: new(2 * time.Second), //nolint:mnd diff --git a/managed/models/agent_model.go b/managed/models/agent_model.go index 2b68e2a86f7..57e8cd73b9f 100644 --- a/managed/models/agent_model.go +++ b/managed/models/agent_model.go @@ -82,12 +82,14 @@ const ( NomadAgentType AgentType = "nomad-agent" ValkeyExporterType AgentType = "valkey_exporter" RTAMongoDBAgentType AgentType = "rta-mongodb-agent" + RTAMySQLAgentType AgentType = "rta-mysql-agent" ) // GetRTAAgentTypes returns all Real-Time Analytics Agent types. func GetRTAAgentTypes() []AgentType { return []AgentType{ RTAMongoDBAgentType, + RTAMySQLAgentType, // Add more types here once they are implemented. } } @@ -586,7 +588,7 @@ func (a *Agent) DSN(service *Service, dsnParams DSNParams, tdp *DelimiterPair, p return cfg.FormatDSN() - case QANMySQLPerfSchemaAgentType, QANMySQLSlowlogAgentType: + case QANMySQLPerfSchemaAgentType, QANMySQLSlowlogAgentType, RTAMySQLAgentType: cfg := mysql.NewConfig() cfg.User = username cfg.Passwd = password @@ -898,7 +900,7 @@ func (a *Agent) IsMySQLTablestatsGroupEnabled() bool { // Files returns files map required to connect to DB. func (a Agent) Files() map[string]string { //nolint:gocognit switch a.AgentType { - case MySQLdExporterType, QANMySQLPerfSchemaAgentType, QANMySQLSlowlogAgentType: + case MySQLdExporterType, QANMySQLPerfSchemaAgentType, QANMySQLSlowlogAgentType, RTAMySQLAgentType: files := make(map[string]string) if a.MySQLOptions.TLSCa != "" { files["tlsCa"] = a.MySQLOptions.TLSCa diff --git a/managed/models/dsn_helpers.go b/managed/models/dsn_helpers.go index 3c5e6c8b2e2..a86c5d27e08 100644 --- a/managed/models/dsn_helpers.go +++ b/managed/models/dsn_helpers.go @@ -56,6 +56,7 @@ func FindDSNByServiceIDandPMMAgentID(q *reform.Querier, serviceID, pmmAgentID, d QANMySQLSlowlogAgentType, QANMySQLPerfSchemaAgentType, MySQLdExporterType, + RTAMySQLAgentType, ) case PostgreSQLServiceType: agentTypes = append( diff --git a/managed/services/agents/mysql.go b/managed/services/agents/mysql.go index fb2c833efdf..4342d3e6dd5 100644 --- a/managed/services/agents/mysql.go +++ b/managed/services/agents/mysql.go @@ -24,6 +24,7 @@ import ( "time" "github.com/AlekSi/pointer" + "google.golang.org/protobuf/types/known/durationpb" agentv1 "github.com/percona/pmm/api/agent/v1" inventoryv1 "github.com/percona/pmm/api/inventory/v1" @@ -230,6 +231,30 @@ func qanMySQLSlowlogAgentConfig(service *models.Service, agent *models.Agent, pm } } +// rtaMySQLAgentConfig returns desired configuration of rta-mysql-agent RTA agent. +func rtaMySQLAgentConfig(service *models.Service, agent *models.Agent, pmmAgentVersion *version.Parsed) *agentv1.SetStateRequest_BuiltinAgent { + tdp := agent.TemplateDelimiters(service) + + apiRTAOptions := &inventoryv1.RTAOptions{} + if agent.RTAOptions.CollectInterval != nil { + apiRTAOptions.CollectInterval = durationpb.New(*agent.RTAOptions.CollectInterval) + } + + return &agentv1.SetStateRequest_BuiltinAgent{ + Type: inventoryv1.AgentType_AGENT_TYPE_RTA_MYSQL_AGENT, + Dsn: agent.DSN(service, models.DSNParams{DialTimeout: time.Second, Database: ""}, nil, pmmAgentVersion), + RtaOptions: apiRTAOptions, + ServiceId: service.ServiceID, + ServiceName: service.ServiceName, + TextFiles: &agentv1.TextFiles{ + Files: agent.Files(), + TemplateLeftDelim: tdp.Left, + TemplateRightDelim: tdp.Right, + }, + TlsSkipVerify: agent.TLSSkipVerify, + } +} + // https://dev.mysql.com/doc/refman/8.4/en/mysql-command-options.html // https://dev.mysql.com/doc/refman/8.4/en/connection-options.html#encrypted-connection-options const myCnfTemplate = `[client] diff --git a/managed/services/agents/state.go b/managed/services/agents/state.go index 8dad8d4dc8b..34e9c908af1 100644 --- a/managed/services/agents/state.go +++ b/managed/services/agents/state.go @@ -243,7 +243,7 @@ func (u *StateUpdater) sendSetStateRequest(ctx context.Context, agent *pmmAgentI models.ValkeyExporterType, models.QANMySQLPerfSchemaAgentType, models.QANMySQLSlowlogAgentType, models.QANMongoDBProfilerAgentType, models.QANMongoDBMongologAgentType, models.QANPostgreSQLPgStatementsAgentType, models.QANPostgreSQLPgStatMonitorAgentType, - models.RTAMongoDBAgentType: + models.RTAMongoDBAgentType, models.RTAMySQLAgentType: service, err := models.FindServiceByID(u.db.Querier, pointer.GetString(row.ServiceID)) if err != nil { return err @@ -286,6 +286,8 @@ func (u *StateUpdater) sendSetStateRequest(ctx context.Context, agent *pmmAgentI builtinAgents[row.AgentID] = qanPostgreSQLPgStatMonitorAgentConfig(service, row, pmmAgentVersion) case models.RTAMongoDBAgentType: builtinAgents[row.AgentID] = rtaMongoDBAgentConfig(service, row, pmmAgentVersion) + case models.RTAMySQLAgentType: + builtinAgents[row.AgentID] = rtaMySQLAgentConfig(service, row, pmmAgentVersion) } default: diff --git a/managed/services/converters.go b/managed/services/converters.go index d70acca37cc..003043bd942 100644 --- a/managed/services/converters.go +++ b/managed/services/converters.go @@ -606,6 +606,21 @@ func ToAPIAgent(q *reform.Querier, agent *models.Agent) (inventoryv1.Agent, erro RtaOptions: ToAPIRTAOptions(&agent.RTAOptions), }, nil + case models.RTAMySQLAgentType: + return &inventoryv1.RTAMySQLAgent{ + AgentId: agent.AgentID, + PmmAgentId: pointer.GetString(agent.PMMAgentID), + ServiceId: serviceID, + Username: pointer.GetString(agent.Username), + Disabled: agent.Disabled, + Status: inventoryv1.AgentStatus(inventoryv1.AgentStatus_value[agent.Status]), + CustomLabels: labels, + Tls: agent.TLS, + TlsSkipVerify: agent.TLSSkipVerify, + LogLevel: inventoryv1.LogLevelAPIValue(agent.LogLevel), + RtaOptions: ToAPIRTAOptions(&agent.RTAOptions), + }, nil + default: panic(fmt.Errorf("cannot convert unknown agent type %s", agent.AgentType)) } diff --git a/managed/services/inventory/grpc/agents_server.go b/managed/services/inventory/grpc/agents_server.go index 7b925623879..d6027dae141 100644 --- a/managed/services/inventory/grpc/agents_server.go +++ b/managed/services/inventory/grpc/agents_server.go @@ -58,6 +58,7 @@ var agentTypes = map[inventoryv1.AgentType]models.AgentType{ inventoryv1.AgentType_AGENT_TYPE_VM_AGENT: models.VMAgentType, inventoryv1.AgentType_AGENT_TYPE_NOMAD_AGENT: models.NomadAgentType, inventoryv1.AgentType_AGENT_TYPE_RTA_MONGODB_AGENT: models.RTAMongoDBAgentType, + inventoryv1.AgentType_AGENT_TYPE_RTA_MYSQL_AGENT: models.RTAMySQLAgentType, } func agentType(req *inventoryv1.ListAgentsRequest) *models.AgentType { @@ -121,6 +122,8 @@ func (s *agentsServer) ListAgents(ctx context.Context, req *inventoryv1.ListAgen res.NomadAgent = append(res.NomadAgent, agent) case *inventoryv1.RTAMongoDBAgent: res.RtaMongodbAgent = append(res.RtaMongodbAgent, agent) + case *inventoryv1.RTAMySQLAgent: + res.RtaMysqlAgent = append(res.RtaMysqlAgent, agent) default: panic(fmt.Errorf("unhandled inventory Agent type %T", agent)) } @@ -175,6 +178,8 @@ func (s *agentsServer) GetAgent(ctx context.Context, req *inventoryv1.GetAgentRe res.Agent = &inventoryv1.GetAgentResponse_NomadAgent{NomadAgent: agent} case *inventoryv1.RTAMongoDBAgent: res.Agent = &inventoryv1.GetAgentResponse_RtaMongodbAgent{RtaMongodbAgent: agent} + case *inventoryv1.RTAMySQLAgent: + res.Agent = &inventoryv1.GetAgentResponse_RtaMysqlAgent{RtaMysqlAgent: agent} default: panic(fmt.Errorf("unhandled inventory Agent type %T", agent)) } diff --git a/managed/services/management/agent.go b/managed/services/management/agent.go index e94c55a9936..657924884a6 100644 --- a/managed/services/management/agent.go +++ b/managed/services/management/agent.go @@ -210,7 +210,7 @@ func (s *ManagementService) agentToAPI(agent *models.Agent) (*managementv1.Unive IsTlsCertificateKeySet: agent.MongoDBOptions.TLSCertificateKey != "", IsTlsCertificateKeyFilePasswordSet: agent.MongoDBOptions.TLSCertificateKeyFilePassword != "", } - case models.MySQLdExporterType, models.QANMySQLSlowlogAgentType, models.QANMySQLPerfSchemaAgentType: + case models.MySQLdExporterType, models.QANMySQLSlowlogAgentType, models.QANMySQLPerfSchemaAgentType, models.RTAMySQLAgentType: ua.MysqlOptions = &managementv1.UniversalAgent_MySQLOptions{ IsTlsKeySet: agent.MySQLOptions.TLSKey != "", } diff --git a/managed/services/realtimeanalytics/service.go b/managed/services/realtimeanalytics/service.go index da40f081b18..32886029d59 100644 --- a/managed/services/realtimeanalytics/service.go +++ b/managed/services/realtimeanalytics/service.go @@ -150,6 +150,8 @@ func (s *Service) ListServices(ctx context.Context, req *rtav1.ListServicesReque switch apiSvc := apiSvc.(type) { case *inventoryv1.MongoDBService: res.Mongodb = append(res.Mongodb, apiSvc) + case *inventoryv1.MySQLService: + res.Mysql = append(res.Mysql, apiSvc) // Add other service types once RTA is supported for them default: return nil, fmt.Errorf("unhandled inventory Service type %T", apiSvc) @@ -160,6 +162,10 @@ func (s *Service) ListServices(ctx context.Context, req *rtav1.ListServicesReque return strings.Compare(a.ServiceName, b.ServiceName) }) + slices.SortStableFunc(res.Mysql, func(a, b *inventoryv1.MySQLService) int { + return strings.Compare(a.ServiceName, b.ServiceName) + }) + return res, nil } @@ -310,6 +316,12 @@ func (s *Service) StartSession(ctx context.Context, req *rtav1.StartSessionReque models.QANMongoDBProfilerAgentType, models.QANMongoDBMongologAgentType, } + case models.MySQLServiceType: + agentTypes = []models.AgentType{ + models.MySQLdExporterType, + models.QANMySQLPerfSchemaAgentType, + models.QANMySQLSlowlogAgentType, + } // Add other service types once RTA is supported for them default: return nil, status.Errorf(codes.InvalidArgument, @@ -615,6 +627,8 @@ func getRTAAgentTypeForServiceType(serviceType models.ServiceType) (models.Agent switch serviceType { case models.MongoDBServiceType: return models.RTAMongoDBAgentType, nil + case models.MySQLServiceType: + return models.RTAMySQLAgentType, nil default: return "", fmt.Errorf("service of type %s does not support Real-Time Analytics", serviceType) } diff --git a/managed/services/victoriametrics/prometheus.go b/managed/services/victoriametrics/prometheus.go index df635de059e..ddc4e6a93bf 100644 --- a/managed/services/victoriametrics/prometheus.go +++ b/managed/services/victoriametrics/prometheus.go @@ -196,7 +196,7 @@ func AddScrapeConfigs(l *logrus.Entry, cfg *config.Config, q *reform.Querier, // continue case models.QANPostgreSQLPgStatementsAgentType, models.QANPostgreSQLPgStatMonitorAgentType: continue - case models.RTAMongoDBAgentType: + case models.RTAMongoDBAgentType, models.RTAMySQLAgentType: continue case models.RDSExporterType: if skipExternalAgents && pointer.GetString(agent.RunsOnNodeID) == models.PMMServerNodeID { diff --git a/ui/apps/pmm/src/components/syntax-highlighter/SyntaxHighlighter.tsx b/ui/apps/pmm/src/components/syntax-highlighter/SyntaxHighlighter.tsx index f8ee01b9756..6d0f8fa0d98 100644 --- a/ui/apps/pmm/src/components/syntax-highlighter/SyntaxHighlighter.tsx +++ b/ui/apps/pmm/src/components/syntax-highlighter/SyntaxHighlighter.tsx @@ -12,10 +12,13 @@ import { getSyntaxHighlighterStyle } from './SyntaxHighlighter.utils'; // @ts-ignore import mongodb from 'react-syntax-highlighter/dist/esm/languages/prism/mongodb'; import json from 'react-syntax-highlighter/dist/esm/languages/prism/json'; +// @ts-ignore +import sql from 'react-syntax-highlighter/dist/esm/languages/prism/sql'; import { SyntaxHighlighterProps } from './SyntaxHighlighter.types'; ReactSyntaxHighlighter.registerLanguage('mongodb', mongodb); ReactSyntaxHighlighter.registerLanguage('json', json); +ReactSyntaxHighlighter.registerLanguage('sql', sql); const SyntaxHighlighter: FC = ({ language, diff --git a/ui/apps/pmm/src/hooks/api/useRealtime.ts b/ui/apps/pmm/src/hooks/api/useRealtime.ts index 6e87afe2597..1b568ede618 100644 --- a/ui/apps/pmm/src/hooks/api/useRealtime.ts +++ b/ui/apps/pmm/src/hooks/api/useRealtime.ts @@ -117,13 +117,16 @@ export const useStopSessions = ( }; /** - * Hook to get MongoDB services that don't have running RTA agents + * Hook to get services (MongoDB, MySQL, ...) that don't have running RTA agents */ export const useAvailableServices = (serviceTypes?: ServiceType[]) => { const { user } = useUser(); const { data: sessions, isLoading: isLoadingSessions } = useRealtimeSessions(); - const { data: services = { mongodb: [] }, isLoading: isLoadingServices } = + const { + data: services = { mongodb: [], mysql: [] }, + isLoading: isLoadingServices, + } = useQuery({ queryKey: [KEYS.AVAILABLE_SERVICES], queryFn: () => getAvailableServices(serviceTypes), diff --git a/ui/apps/pmm/src/pages/rta/messages.ts b/ui/apps/pmm/src/pages/rta/messages.ts index 35cb3ef77db..b0b36b728e5 100644 --- a/ui/apps/pmm/src/pages/rta/messages.ts +++ b/ui/apps/pmm/src/pages/rta/messages.ts @@ -1,4 +1,4 @@ export const Messages = { disclaimer: - 'Currently available for MongoDB only connected through PMM Client 3.7.0 or newer. More databases coming soon.', + 'Currently available for MongoDB and MySQL connected through PMM Client 3.7.0 or newer. More databases coming soon.', }; diff --git a/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.messages.ts b/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.messages.ts index da8a4c28ae2..804f76213c2 100644 --- a/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.messages.ts +++ b/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.messages.ts @@ -13,6 +13,12 @@ export const Messages = { dataCaptureTime: 'Data capture time', clientAddress: 'Client address', service: 'Service', + command: 'Command', + state: 'State', + programName: 'Program name', + rowsExamined: 'Rows examined', + rowsSent: 'Rows sent', + fullScan: 'Full scan', }, tooltips: { operationId: "The database's internal identifier for this operation.", @@ -35,5 +41,15 @@ export const Messages = { 'When PMM took this snapshot. Compare with Operation start time to calculate how long the operation has been running so far.', dbInstanceAddress: 'The server hostname and port where this operation is running.', + command: + 'The type of command the connection is executing, such as Query or Execute.', + state: 'The current state of the thread executing this statement.', + programName: + 'The client program connected to MySQL that started this statement.', + rowsExamined: + 'The number of rows the statement has examined so far. A high value relative to rows sent can indicate an inefficient query.', + rowsSent: 'The number of rows the statement has returned so far.', + fullScan: + 'Whether the statement performed a full table scan instead of using an index.', }, }; diff --git a/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.test.tsx b/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.test.tsx index 5ebd424c6cf..fb6f819a011 100644 --- a/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.test.tsx +++ b/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.test.tsx @@ -2,16 +2,23 @@ import { render, screen } from '@testing-library/react'; import { describe, it, expect } from 'vitest'; import { createTheme, ThemeProvider } from '@mui/material/styles'; import QueryAndDetails from './QueryAndDetails'; -import { TEST_MONGO_DB_QUERY_DATA, TEST_USER_ADMIN } from 'utils/testStubs'; +import { + TEST_MONGO_DB_QUERY_DATA, + TEST_MYSQL_QUERY_DATA, + TEST_USER_ADMIN, +} from 'utils/testStubs'; import { wrapWithUserProvider } from 'utils/testUtils'; +import { QueryData } from 'types/rta.types'; -const renderComponent = (user = TEST_USER_ADMIN) => +const renderComponent = ( + user = TEST_USER_ADMIN, + queryData: QueryData = TEST_MONGO_DB_QUERY_DATA +) => render( - {wrapWithUserProvider( - , - { user } - )} + {wrapWithUserProvider(, { + user, + })} ); @@ -63,4 +70,19 @@ describe('QueryAndDetails', () => { const timeElements = screen.getAllByText('2020-12-31 19:00:00'); expect(timeElements).toHaveLength(2); }); + + it('renders MySQL-specific metrics for a MySQL query', () => { + renderComponent(TEST_USER_ADMIN, TEST_MYSQL_QUERY_DATA); + + // MySQL-specific fields are shown. + expect(screen.getByText('Command')).toBeInTheDocument(); + expect(screen.getByText('State')).toBeInTheDocument(); + expect(screen.getByText('Rows examined')).toBeInTheDocument(); + expect(screen.getByText('Full scan')).toBeInTheDocument(); + expect(screen.getByTestId('command-value')).toHaveTextContent('Query'); + + // MongoDB-specific fields are not shown. + expect(screen.queryByText('Plan summary')).not.toBeInTheDocument(); + expect(screen.queryByText('Collection')).not.toBeInTheDocument(); + }); }); diff --git a/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.tsx b/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.tsx index 52d587d8688..17a02986e98 100644 --- a/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.tsx +++ b/ui/apps/pmm/src/pages/rta/overview/details-pane/QueryAndDetails.tsx @@ -20,26 +20,28 @@ const GridItem = ({ children }: { children: React.ReactNode }) => ( ); -const QueryAndDetails: FC = ({ - queryData: { +const QueryAndDetails: FC = ({ queryData }) => { + const { queryText, queryId, queryExecutionDurationMs, queryCollectTime, serviceName, clientAddress, - mongoDbPayload: { - planSummary, - databaseName, - collection, - operation, - username, - dbInstanceAddress, - clientAppName, - operationStartTime, - }, - }, -}) => { + mongoDbPayload, + mySqlPayload, + } = queryData; + + const isMySQL = !!mySqlPayload; + const language = isMySQL ? 'sql' : 'mongodb'; + + // Fields common to all database types are resolved from whichever payload is present. + const dbInstanceAddress = + mongoDbPayload?.dbInstanceAddress ?? mySqlPayload?.dbInstanceAddress; + const databaseName = + mongoDbPayload?.databaseName ?? mySqlPayload?.databaseName; + const username = mongoDbPayload?.username ?? mySqlPayload?.username; + const { user } = useUser(); const timezone = user?.preferences?.timezone || 'UTC'; @@ -153,75 +155,159 @@ const QueryAndDetails: FC = ({ /> - - - - - - - - - - - - - - - - - - - - - - - - - + {mongoDbPayload && ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + )} + {mySqlPayload && ( + <> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )} = ({ }} > [] = [ { @@ -12,7 +13,12 @@ export const OVERVIEW_TABLE_COLUMNS: MRT_ColumnDef[] = [ header: Messages.columns.queryText, accessorKey: 'queryText', filterFn: 'contains', - Cell: ({ row }) => , + Cell: ({ row }) => ( + + ), // @ts-expect-error - muiTableBodyCellProps is not typed correctly muiTableBodyCellProps: ({ row }) => ({ 'data-testid': `query-${row.original.queryId}-query-text-cell`, diff --git a/ui/apps/pmm/src/pages/rta/overview/table/OverviewTable.utils.ts b/ui/apps/pmm/src/pages/rta/overview/table/OverviewTable.utils.ts index 3e4b9bc9061..e3bbadfa0f6 100644 --- a/ui/apps/pmm/src/pages/rta/overview/table/OverviewTable.utils.ts +++ b/ui/apps/pmm/src/pages/rta/overview/table/OverviewTable.utils.ts @@ -1,5 +1,11 @@ import { type MRT_Row } from 'material-react-table'; -import { QueryData } from 'types/rta.types'; +import { QueryData, RawQueryData } from 'types/rta.types'; +import { CodeLanguage } from 'types/util.types'; + +// queryLanguage returns the syntax-highlighting language for a query +// based on which database-specific payload it carries. +export const queryLanguage = (query: RawQueryData): CodeLanguage => + query.mySqlPayload ? 'sql' : 'mongodb'; export const filterElapsedTime = ( row: MRT_Row, diff --git a/ui/apps/pmm/src/pages/rta/overview/table/query-cell/QueryCell.tsx b/ui/apps/pmm/src/pages/rta/overview/table/query-cell/QueryCell.tsx index 6fa73b5326b..bb9c67d6e12 100644 --- a/ui/apps/pmm/src/pages/rta/overview/table/query-cell/QueryCell.tsx +++ b/ui/apps/pmm/src/pages/rta/overview/table/query-cell/QueryCell.tsx @@ -1,11 +1,13 @@ import { CodeBlock } from 'components/code-block'; import { FC } from 'react'; +import { CodeLanguage } from 'types/util.types'; export interface Props { query: string; + language?: CodeLanguage; } -const QueryCell: FC = ({ query }) => ( +const QueryCell: FC = ({ query, language = 'mongodb' }) => ( = ({ query }) => ( maxHeight: '50px', }, }} - language="mongodb" + language={language} /> ); diff --git a/ui/apps/pmm/src/pages/rta/selection/RealtimeSelection.tsx b/ui/apps/pmm/src/pages/rta/selection/RealtimeSelection.tsx index 2d02c8358bc..ebdff8cb8a7 100644 --- a/ui/apps/pmm/src/pages/rta/selection/RealtimeSelection.tsx +++ b/ui/apps/pmm/src/pages/rta/selection/RealtimeSelection.tsx @@ -23,7 +23,10 @@ export const RealtimeSelection: FC = () => { const { user } = useUser(); const navigate = useNavigate(); // TODO: Add other service types when available - const { isLoading } = useAvailableServices([ServiceType.mongodb]); + const { isLoading } = useAvailableServices([ + ServiceType.mongodb, + ServiceType.mysql, + ]); const { data: sessions, isLoading: isLoadingSessions } = useRealtimeSessions(); diff --git a/ui/apps/pmm/src/types/rta.types.ts b/ui/apps/pmm/src/types/rta.types.ts index f6ae0f91b6c..72a6d152f2e 100644 --- a/ui/apps/pmm/src/types/rta.types.ts +++ b/ui/apps/pmm/src/types/rta.types.ts @@ -49,7 +49,9 @@ export interface RawQueryData { queryCollectTime: string; clientAddress: string; queryRawJson: string; - mongoDbPayload: QueryMongoDBData; + // Exactly one of the payloads below is set depending on the database type. + mongoDbPayload?: QueryMongoDBData; + mySqlPayload?: QueryMySQLData; } export type QueryData = Exclude & { @@ -67,7 +69,20 @@ export interface QueryMongoDBData { collection?: string; } +export interface QueryMySQLData { + dbInstanceAddress: string; + programName: string; + databaseName: string; + command: string; + state: string; + username: string; + rowsExamined?: number | string; + rowsSent?: number | string; + fullScan?: boolean; +} + // TODO: Add other service types when available export interface AvailableServicesResponse { - mongodb: VersionedService[]; + mongodb?: VersionedService[]; + mysql?: VersionedService[]; } diff --git a/ui/apps/pmm/src/types/util.types.ts b/ui/apps/pmm/src/types/util.types.ts index cdbba235f6e..6d4bc9be511 100644 --- a/ui/apps/pmm/src/types/util.types.ts +++ b/ui/apps/pmm/src/types/util.types.ts @@ -8,4 +8,4 @@ export type SvgIconComponent = typeof SvgIcon; export type EmptyResponse = Record; -export type CodeLanguage = 'text' | 'mongodb' | 'json'; +export type CodeLanguage = 'text' | 'mongodb' | 'json' | 'sql'; diff --git a/ui/apps/pmm/src/utils/testStubs.ts b/ui/apps/pmm/src/utils/testStubs.ts index 135c85de18b..43af573653d 100644 --- a/ui/apps/pmm/src/utils/testStubs.ts +++ b/ui/apps/pmm/src/utils/testStubs.ts @@ -166,3 +166,25 @@ export const TEST_MONGO_DB_QUERY_DATA: QueryData = { username: 'username', }, }; + +export const TEST_MYSQL_QUERY_DATA: QueryData = { + serviceId: 'service-2', + serviceName: 'Service 2', + queryId: 'query-2', + queryText: 'SELECT * FROM my_table WHERE status = "active"', + queryExecutionDuration: '10s', + queryCollectTime: '2021-01-01T00:00:00Z', + clientAddress: '127.0.0.1', + queryRawJson: '{"current_statement": "SELECT * FROM my_table"}', + mySqlPayload: { + dbInstanceAddress: '127.0.0.1', + programName: 'mysql', + databaseName: 'database-name', + command: 'Query', + state: 'Sending data', + username: 'username', + rowsExamined: 100, + rowsSent: 10, + fullScan: true, + }, +}; From 07995433c6bbc976fa14cf9940e5df1be59530b0 Mon Sep 17 00:00:00 2001 From: Tibor Korocz Date: Wed, 17 Jun 2026 12:46:18 +0000 Subject: [PATCH 02/19] feat(rta): full processlist raw data + hide-COMMIT toggle for MySQL Addresses review feedback on the MySQL RTA: - Raw data now mirrors the MongoDB agent: the collector selects the full sys.x$processlist row (SELECT *) and stores every column in query_raw_json, pretty-printed with json.MarshalIndent. Numeric columns are kept as numbers and SQL NULLs as null. The details view keeps a curated subset. This surfaces execution_engine, lock_latency, cpu_latency, rows_affected, tmp_tables, trx_state/latency, pid, current_memory, etc. - Overview gains a "Hide COMMIT" toolbar toggle that filters bare transaction-control statements (COMMIT/ROLLBACK/BEGIN/START TRANSACTION), which can dominate the list under transactional workloads. Data is still collected; the toggle only affects the view. - Added unit tests for the queryLanguage and isTransactionControl helpers. --- agent/agents/mysql/realtimeanalytics/mysql.go | 165 ++++++++++++------ .../rta/overview/RealtimeOverview.messages.ts | 3 + .../pages/rta/overview/RealtimeOverview.tsx | 28 ++- .../table/OverviewTable.utils.test.ts | 35 ++++ .../rta/overview/table/OverviewTable.utils.ts | 13 ++ 5 files changed, 186 insertions(+), 58 deletions(-) create mode 100644 ui/apps/pmm/src/pages/rta/overview/table/OverviewTable.utils.test.ts diff --git a/agent/agents/mysql/realtimeanalytics/mysql.go b/agent/agents/mysql/realtimeanalytics/mysql.go index 51981cc2e76..ee9eaa4c449 100644 --- a/agent/agents/mysql/realtimeanalytics/mysql.go +++ b/agent/agents/mysql/realtimeanalytics/mysql.go @@ -45,21 +45,12 @@ const ( // sys.x$processlist is the machine-readable (raw) version of sys.processlist // (https://dev.mysql.com/doc/refman/8.4/en/sys-processlist.html); it exposes // the same columns but with unformatted numeric latencies. -// We exclude background threads, idle ("Sleep") connections, the RTA agent's -// own connection and rows without a current statement. +// We select all columns so the complete row is preserved in the raw payload +// (mirroring how the MongoDB RTA agent dumps the whole currentOp document), and +// exclude background threads, idle ("Sleep") connections, the RTA agent's own +// connection and rows without a current statement. const currentQueriesSQL = ` -SELECT - conn_id, - COALESCE(user, ''), - COALESCE(db, ''), - COALESCE(command, ''), - COALESCE(state, ''), - COALESCE(statement_latency, 0), - COALESCE(current_statement, ''), - COALESCE(rows_examined, 0), - COALESCE(rows_sent, 0), - COALESCE(full_scan, ''), - COALESCE(program_name, '') +SELECT * FROM sys.x$processlist WHERE conn_id IS NOT NULL AND conn_id <> CONNECTION_ID() @@ -203,6 +194,11 @@ func (m *MySQLRTA) collectProcessList(ctx context.Context) ([]*rtav1.QueryData, _ = rows.Close() }() + columns, err := rows.Columns() + if err != nil { + return nil, fmt.Errorf("failed to read processlist columns: %w", err) + } + collectTime := timestamppb.New(time.Now()) var results []*rtav1.QueryData @@ -213,14 +209,13 @@ func (m *MySQLRTA) collectProcessList(ctx context.Context) ([]*rtav1.QueryData, default: } - var r processlistRow - if err := rows.Scan(&r.connID, &r.user, &r.db, &r.command, &r.state, &r.latencyPicos, - &r.currentStmt, &r.rowsExamined, &r.rowsSent, &r.fullScan, &r.programName); err != nil { + row, err := scanRow(rows, columns) + if err != nil { m.l.Warnf("Failed to scan processlist row: %v", err) continue } - queryData := m.buildQueryData(&r) + queryData := m.buildQueryData(row) queryData.QueryCollectTime = collectTime results = append(results, queryData) @@ -234,50 +229,64 @@ func (m *MySQLRTA) collectProcessList(ctx context.Context) ([]*rtav1.QueryData, return results, nil } -// processlistRow holds a single row scanned from sys.x$processlist. -type processlistRow struct { - connID uint64 - user string - db string - command string - state string - latencyPicos float64 - currentStmt string - rowsExamined int64 - rowsSent int64 - fullScan string - programName string +// scanRow scans a single result row into a map keyed by column name. Values are +// coerced to int64/float64 when numeric and to nil for SQL NULLs, so the raw +// payload is human-readable JSON with native types. +func scanRow(rows *sql.Rows, columns []string) (map[string]any, error) { + rawValues := make([]sql.RawBytes, len(columns)) + scanArgs := make([]any, len(columns)) + for i := range rawValues { + scanArgs[i] = &rawValues[i] + } + + if err := rows.Scan(scanArgs...); err != nil { + return nil, err + } + + row := make(map[string]any, len(columns)) + for i, col := range columns { + row[col] = coerceValue(rawValues[i]) + } + + return row, nil +} + +// coerceValue converts a raw column value into nil (NULL), int64, float64 or string. +func coerceValue(b sql.RawBytes) any { + if b == nil { + return nil + } + + s := string(b) + if i, err := strconv.ParseInt(s, 10, 64); err == nil { + return i + } + if f, err := strconv.ParseFloat(s, 64); err == nil { + return f + } + + return s } // buildQueryData converts a single sys.x$processlist row into a *QueryData. -func (m *MySQLRTA) buildQueryData(r *processlistRow) *rtav1.QueryData { - execDuration := durationpb.New(time.Duration(r.latencyPicos/picosecondsPerNanosecond) * time.Nanosecond) +// The complete row is preserved in QueryRawJson; a curated subset is exposed +// via the MySQL payload for the details view. +func (m *MySQLRTA) buildQueryData(row map[string]any) *rtav1.QueryData { + execDuration := durationpb.New(time.Duration(mapFloat(row, "statement_latency")/picosecondsPerNanosecond) * time.Nanosecond) mysqlPayload := &rtav1.QueryMySQLData{ DbInstanceAddress: m.dbInstanceAddress, - ProgramName: r.programName, - DatabaseName: r.db, - Command: r.command, - State: r.state, - Username: r.user, - RowsExamined: r.rowsExamined, - RowsSent: r.rowsSent, - FullScan: strings.EqualFold(r.fullScan, "YES"), + ProgramName: mapString(row, "program_name"), + DatabaseName: mapString(row, "db"), + Command: mapString(row, "command"), + State: mapString(row, "state"), + Username: mapString(row, "user"), + RowsExamined: mapInt(row, "rows_examined"), + RowsSent: mapInt(row, "rows_sent"), + FullScan: strings.EqualFold(mapString(row, "full_scan"), "YES"), } - rawJSON, err := json.Marshal(map[string]any{ - "conn_id": r.connID, - "user": r.user, - "db": r.db, - "command": r.command, - "state": r.state, - "statement_latency": r.latencyPicos, - "current_statement": r.currentStmt, - "rows_examined": r.rowsExamined, - "rows_sent": r.rowsSent, - "full_scan": r.fullScan, - "program_name": r.programName, - }) + rawJSON, err := json.MarshalIndent(row, "", " ") if err != nil { m.l.Warnf("Failed to marshal raw query data: %v", err) } @@ -285,8 +294,8 @@ func (m *MySQLRTA) buildQueryData(r *processlistRow) *rtav1.QueryData { return &rtav1.QueryData{ ServiceId: m.serviceID, ServiceName: m.serviceName, - QueryId: strconv.FormatUint(r.connID, 10), - QueryText: r.currentStmt, + QueryId: mapString(row, "conn_id"), + QueryText: mapString(row, "current_statement"), QueryRawJson: string(rawJSON), QueryExecutionDuration: execDuration, Payload: &rtav1.QueryData_MySqlPayload{ @@ -295,6 +304,50 @@ func (m *MySQLRTA) buildQueryData(r *processlistRow) *rtav1.QueryData { } } +// mapString reads a column from the row as a string regardless of its scanned type. +func mapString(row map[string]any, key string) string { + switch v := row[key].(type) { + case string: + return v + case int64: + return strconv.FormatInt(v, 10) + case float64: + return strconv.FormatFloat(v, 'f', -1, 64) + default: + return "" + } +} + +// mapInt reads a column from the row as an int64. +func mapInt(row map[string]any, key string) int64 { + switch v := row[key].(type) { + case int64: + return v + case float64: + return int64(v) + case string: + i, _ := strconv.ParseInt(v, 10, 64) + return i + default: + return 0 + } +} + +// mapFloat reads a column from the row as a float64. +func mapFloat(row map[string]any, key string) float64 { + switch v := row[key].(type) { + case float64: + return v + case int64: + return float64(v) + case string: + f, _ := strconv.ParseFloat(v, 64) + return f + default: + return 0 + } +} + // Changes returns channel that should be read until it is closed. func (m *MySQLRTA) Changes() <-chan agents.Change { return m.changes diff --git a/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.messages.ts b/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.messages.ts index 5736670fe9c..2cd7b66c16f 100644 --- a/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.messages.ts +++ b/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.messages.ts @@ -3,4 +3,7 @@ export const Messages = { pause: 'Pause', resume: 'Resume', refresh: 'Refresh', + hideCommit: 'Hide COMMIT', + hideCommitTooltip: + 'Hide transaction-control statements (COMMIT, ROLLBACK, BEGIN, START TRANSACTION) from the list.', }; diff --git a/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.tsx b/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.tsx index 38c8329f91f..6a48fec452d 100644 --- a/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.tsx +++ b/ui/apps/pmm/src/pages/rta/overview/RealtimeOverview.tsx @@ -1,4 +1,4 @@ -import { FC, useRef, useState } from 'react'; +import { FC, useMemo, useRef, useState } from 'react'; import { Navigate, Link as RouterLink, @@ -7,6 +7,7 @@ import { import { RealtimePage } from '../components/rta-page'; import { useRealtimeQueries, useRealtimeSessions } from 'hooks/api/useRealtime'; import OverviewTable from './table/OverviewTable'; +import { isTransactionControl } from './table/OverviewTable.utils'; import { DetailsPane } from './details-pane'; import { QueryData } from 'types/rta.types'; import { Icon } from 'components/icon'; @@ -14,6 +15,9 @@ import { Messages } from './RealtimeOverview.messages'; import { createRealtimeSessionsUrl } from 'utils/link.utils'; import Stack from '@mui/material/Stack'; import Button from '@mui/material/Button'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; +import Tooltip from '@mui/material/Tooltip'; import { ServicesAutocompleteInput } from '../components/services-autocomplete-input'; import { AutoRefreshSelect } from './auto-refresh-select'; @@ -31,7 +35,13 @@ const RealtimeOverviewPage: FC = () => { refetchInterval: refreshInterval, } ); - const tableQueries = queries ?? EMPTY_QUERIES; + const [hideCommit, setHideCommit] = useState(false); + const tableQueries = useMemo(() => { + const allQueries = queries ?? EMPTY_QUERIES; + return hideCommit + ? allQueries.filter((query) => !isTransactionControl(query)) + : allQueries; + }, [queries, hideCommit]); // Synced from the table after filters; details-pane arrows use this list, not the full API result. const [navigableQueries, setNavigableQueries] = useState([]); const [selectedQuery, setSelectedQuery] = useState(); @@ -126,6 +136,20 @@ const RealtimeOverviewPage: FC = () => { refreshInterval={refreshInterval} onRefreshIntervalChange={setRefreshInterval} /> + + setHideCommit(event.target.checked)} + /> + } + label={Messages.hideCommit} + sx={{ whiteSpace: 'nowrap', mr: 0 }} + /> + )} + {/* Hide COMMIT filters the rows, it does not drive live updates: + keep it out of the auto-refresh / playback group so that group + reads as one control. */} + + + setHideCommit(event.target.checked)} + /> + } + label={Messages.hideCommit} + sx={{ whiteSpace: 'nowrap', mr: 0 }} + /> + )} - {/* Hide COMMIT filters the rows, it does not drive live updates: - keep it out of the auto-refresh / playback group so that group - reads as one control. */} - - - setHideCommit(event.target.checked)} + {/* This filters the rows, it does not drive live updates: keep it + out of the auto-refresh / playback group so that group reads as + one control. */} + {hasMySqlSession && ( + <> + + + + setHideCommit(event.target.checked) + } + /> + } + label={Messages.hideCommit} + sx={{ whiteSpace: 'nowrap', mr: 0 }} /> - } - label={Messages.hideCommit} - sx={{ whiteSpace: 'nowrap', mr: 0 }} - /> - + + + )}