From e2c57ada68939de3e848f8a57a3ae9b321b02597 Mon Sep 17 00:00:00 2001 From: cwuethrich Date: Wed, 16 Mar 2022 13:53:00 +0100 Subject: [PATCH 1/5] allow multi instance sql server --- .../module/mssql/performance/performance.go | 53 ++++++++----------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/x-pack/metricbeat/module/mssql/performance/performance.go b/x-pack/metricbeat/module/mssql/performance/performance.go index fb9c4b4c888c..f02dda5f7e4c 100644 --- a/x-pack/metricbeat/module/mssql/performance/performance.go +++ b/x-pack/metricbeat/module/mssql/performance/performance.go @@ -69,40 +69,29 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { var err error var rows *sql.Rows rows, err = m.db.Query(`SELECT object_name, - counter_name, - instance_name, - cntr_value + counter_name, + instance_name, + cntr_value FROM sys.dm_os_performance_counters WHERE counter_name = 'SQL Compilations/sec' - OR counter_name = 'SQL Re-Compilations/sec' - OR counter_name = 'User Connections' - OR counter_name = 'Page splits/sec' - OR ( counter_name = 'Lock Waits/sec' - AND instance_name = '_Total' ) - OR counter_name = 'Page splits/sec' - OR ( object_name = 'SQLServer:Buffer Manager' - AND counter_name = 'Page life expectancy' ) - OR counter_name = 'Batch Requests/sec' - OR ( counter_name = 'Buffer cache hit ratio' - AND object_name = 'SQLServer:Buffer Manager' ) - OR ( counter_name = 'Target pages' - AND object_name = 'SQLServer:Buffer Manager' ) - OR ( counter_name = 'Database pages' - AND object_name = 'SQLServer:Buffer Manager' ) - OR ( counter_name = 'Checkpoint pages/sec' - AND object_name = 'SQLServer:Buffer Manager' ) - OR ( counter_name = 'Lock Waits/sec' - AND instance_name = '_Total' ) - OR ( counter_name = 'Transactions' - AND object_name = 'SQLServer:General Statistics' ) - OR ( counter_name = 'Logins/sec' - AND object_name = 'SQLServer:General Statistics' ) - OR ( counter_name = 'Logouts/sec' - AND object_name = 'SQLServer:General Statistics' ) - OR ( counter_name = 'Connection Reset/sec' - AND object_name = 'SQLServer:General Statistics' ) - OR ( counter_name = 'Active Temp Tables' - AND object_name = 'SQLServer:General Statistics' )`) + OR counter_name = 'SQL Re-Compilations/sec' + OR counter_name = 'User Connections' + OR counter_name = 'Page splits/sec' + OR counter_name = 'Page splits/sec' + OR counter_name = 'Batch Requests/sec' + OR ( counter_name = 'Lock Waits/sec' + AND instance_name = '_Total' ) + OR ( counter_name IN ( 'Page life expectancy', + 'Buffer cache hit ratio', + 'Target pages', 'Database pages', + 'Checkpoint pages/sec' ) + AND object_name LIKE '%:Buffer Manager%' ) + OR ( counter_name IN ( 'Transactions', + 'Logins/sec', + 'Logouts/sec', + 'Connection Reset/sec', + 'Active Temp Tables' ) + AND object_name LIKE '%:General Statistics%' )`) if err != nil { reporter.Error(errors.Wrapf(err, "error closing rows")) return From c2d09ce21a5efc2809bc83e6ce93689ae6a06baa Mon Sep 17 00:00:00 2001 From: cwuethrich Date: Wed, 16 Mar 2022 14:13:27 +0100 Subject: [PATCH 2/5] changelog --- CHANGELOG-developer.next.asciidoc | 1 + CHANGELOG.next.asciidoc | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGELOG-developer.next.asciidoc b/CHANGELOG-developer.next.asciidoc index 476f686b1d0b..456e3b77b5cc 100644 --- a/CHANGELOG-developer.next.asciidoc +++ b/CHANGELOG-developer.next.asciidoc @@ -70,6 +70,7 @@ The list below covers the major changes between 7.0.0-rc2 and main only. - Errors should be thrown as errors. Metricsets inside Metricbeat will now throw errors as the `error` log level. {pull}27804[27804] - Avoid panicking in `add_fields` processor when input event.Fields is a nil map. {pull}28219[28219] - Drop event batch when get HTTP status 413 from Elasticsearch to avoid infinite loop {issue}14350[14350] {pull}29368[29368] +- Allow to use metricbeat for named mssql instances. {issue}24076[24076] {pull}30859[30859] ==== Added diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index 2ed6935aad5c..3d32bb9165a0 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -71,6 +71,7 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...main[Check the HEAD dif - Fixed missing ZooKeeper metrics due compatibility issues with versions >= 3.6.0 {pull}30068[30068] - Fix Docker module: rename fields on dashboards. {pull}30500[30500] - Add back missing metrics to system/linux. {pull}30774[30774] +- Allow named instances in mssql module. {issue}24076[24076] {pull}30859[30859] *Packetbeat* From 0e2663ee84d01723d4d5ce642fc235ba0d4c96c8 Mon Sep 17 00:00:00 2001 From: cwuethrich Date: Thu, 14 Apr 2022 18:31:29 +0200 Subject: [PATCH 3/5] removed changelog --- CHANGELOG.next.asciidoc | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.next.asciidoc b/CHANGELOG.next.asciidoc index d65bbc21d9fa..6f905b1b5f26 100644 --- a/CHANGELOG.next.asciidoc +++ b/CHANGELOG.next.asciidoc @@ -74,7 +74,6 @@ https://github.com/elastic/beats/compare/v7.0.0-alpha2...main[Check the HEAD dif - Fixed missing ZooKeeper metrics due compatibility issues with versions >= 3.6.0 {pull}30068[30068] - Fix Docker module: rename fields on dashboards. {pull}30500[30500] - Add back missing metrics to system/linux. {pull}30774[30774] -- Allow named instances in mssql module. {issue}24076[24076] {pull}30859[30859] - GCP metrics query instances with aggregatedList API to improve efficiency. {pull}30154[#30153] - Fix delay in perfmon counters collection {issue}30686[30686] {pull}30861[#30861] - Fix Jolokia module to print URI for one of the debug logs. {pull}30943[#30943] From dfd9df2951a14db744c64f7bc48e191e53362df2 Mon Sep 17 00:00:00 2001 From: cwuethrich Date: Thu, 14 Apr 2022 18:44:50 +0200 Subject: [PATCH 4/5] keep special space intending --- .../module/mssql/performance/performance.go | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/x-pack/metricbeat/module/mssql/performance/performance.go b/x-pack/metricbeat/module/mssql/performance/performance.go index f02dda5f7e4c..4aa669693ef6 100644 --- a/x-pack/metricbeat/module/mssql/performance/performance.go +++ b/x-pack/metricbeat/module/mssql/performance/performance.go @@ -69,29 +69,29 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) { var err error var rows *sql.Rows rows, err = m.db.Query(`SELECT object_name, - counter_name, - instance_name, - cntr_value + counter_name, + instance_name, + cntr_value FROM sys.dm_os_performance_counters WHERE counter_name = 'SQL Compilations/sec' - OR counter_name = 'SQL Re-Compilations/sec' - OR counter_name = 'User Connections' - OR counter_name = 'Page splits/sec' - OR counter_name = 'Page splits/sec' - OR counter_name = 'Batch Requests/sec' - OR ( counter_name = 'Lock Waits/sec' - AND instance_name = '_Total' ) - OR ( counter_name IN ( 'Page life expectancy', - 'Buffer cache hit ratio', - 'Target pages', 'Database pages', - 'Checkpoint pages/sec' ) - AND object_name LIKE '%:Buffer Manager%' ) - OR ( counter_name IN ( 'Transactions', - 'Logins/sec', - 'Logouts/sec', - 'Connection Reset/sec', - 'Active Temp Tables' ) - AND object_name LIKE '%:General Statistics%' )`) + OR counter_name = 'SQL Re-Compilations/sec' + OR counter_name = 'User Connections' + OR counter_name = 'Page splits/sec' + OR counter_name = 'Page splits/sec' + OR counter_name = 'Batch Requests/sec' + OR ( counter_name = 'Lock Waits/sec' + AND instance_name = '_Total' ) + OR ( counter_name IN ( 'Page life expectancy', + 'Buffer cache hit ratio', + 'Target pages', 'Database pages', + 'Checkpoint pages/sec' ) + AND object_name LIKE '%:Buffer Manager%' ) + OR ( counter_name IN ( 'Transactions', + 'Logins/sec', + 'Logouts/sec', + 'Connection Reset/sec', + 'Active Temp Tables' ) + AND object_name LIKE '%:General Statistics%' )`) if err != nil { reporter.Error(errors.Wrapf(err, "error closing rows")) return From 9680b41cb45fa5c8ee18c910b6bef7a4942e0f1d Mon Sep 17 00:00:00 2001 From: cwuethrich Date: Thu, 14 Apr 2022 22:21:39 +0200 Subject: [PATCH 5/5] error and data --- .../module/mssql/performance/_meta/data.json | 26 +++++++++---------- .../module/mssql/performance/performance.go | 10 +++---- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/x-pack/metricbeat/module/mssql/performance/_meta/data.json b/x-pack/metricbeat/module/mssql/performance/_meta/data.json index 656c0b525fdd..6ae827b42bce 100644 --- a/x-pack/metricbeat/module/mssql/performance/_meta/data.json +++ b/x-pack/metricbeat/module/mssql/performance/_meta/data.json @@ -12,25 +12,25 @@ "mssql": { "performance": { "active_temp_tables": 0, - "batch_requests_per_sec": 3355, + "batch_requests_per_sec": 7453, "buffer": { "cache_hit": { - "pct": 0.22 + "pct": 0.55 }, - "checkpoint_pages_per_sec": 295, - "database_pages": 2152, + "checkpoint_pages_per_sec": 124, + "database_pages": 2191, "page_life_expectancy": { - "sec": 1400 + "sec": 2721 }, - "target_pages": 3178496 + "target_pages": 1589248 }, - "compilations_per_sec": 1151, - "connections_reset_per_sec": 88, - "lock_waits_per_sec": 6, - "logins_per_sec": 1105, - "logouts_per_sec": 1103, - "page_splits_per_sec": 14, - "recompilations_per_sec": 2, + "compilations_per_sec": 2503, + "connections_reset_per_sec": 61, + "lock_waits_per_sec": 4, + "logins_per_sec": 2448, + "logouts_per_sec": 2446, + "page_splits_per_sec": 15, + "recompilations_per_sec": 0, "transactions": 0, "user_connections": 2 } diff --git a/x-pack/metricbeat/module/mssql/performance/performance.go b/x-pack/metricbeat/module/mssql/performance/performance.go index 4aa669693ef6..da15da02302e 100644 --- a/x-pack/metricbeat/module/mssql/performance/performance.go +++ b/x-pack/metricbeat/module/mssql/performance/performance.go @@ -11,8 +11,6 @@ import ( "github.com/elastic/beats/v7/libbeat/common" - "github.com/pkg/errors" - "github.com/elastic/beats/v7/libbeat/logp" "github.com/elastic/beats/v7/metricbeat/mb" "github.com/elastic/beats/v7/x-pack/metricbeat/module/mssql" @@ -52,7 +50,7 @@ func New(base mb.BaseMetricSet) (mb.MetricSet, error) { db, err := mssql.NewConnection(base.HostData().URI) if err != nil { - return nil, errors.Wrap(err, "could not create connection to db") + return nil, fmt.Errorf("could not create connection to db %w", err) } return &MetricSet{ @@ -93,7 +91,7 @@ WHERE counter_name = 'SQL Compilations/sec' 'Active Temp Tables' ) AND object_name LIKE '%:General Statistics%' )`) if err != nil { - reporter.Error(errors.Wrapf(err, "error closing rows")) + reporter.Error(fmt.Errorf("error closing rows %w", err)) return } defer func() { @@ -106,7 +104,7 @@ WHERE counter_name = 'SQL Compilations/sec' for rows.Next() { var row performanceCounter if err = rows.Scan(&row.objectName, &row.counterName, &row.instanceName, &row.counterValue); err != nil { - reporter.Error(errors.Wrap(err, "error scanning rows")) + reporter.Error(fmt.Errorf("error scanning rows %w", err)) continue } @@ -124,7 +122,7 @@ WHERE counter_name = 'SQL Compilations/sec' res, err := schema.Apply(mapStr) if err != nil { - m.log.Error(errors.Wrap(err, "error applying schema")) + m.log.Error(fmt.Errorf("error applying schema %w", err)) return }