Skip to content

Commit f72a071

Browse files
Add SQL Server database metric user_access (DataDog#21406)
* test_sqlserver_database_stats_metrics * test_check_docker * test_database_state * Add relnote * Lint * Validate metadata * Remove user_access_desc tag from database metrics * Remove multi user
1 parent 8510d28 commit f72a071

5 files changed

Lines changed: 17 additions & 6 deletions

File tree

sqlserver/changelog.d/21406.added

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add SQL Server database metric `user_access`.

sqlserver/datadog_checks/sqlserver/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@
212212
('sqlserver.database.files.state', 'sys.database_files', 'state'),
213213
]
214214
DATABASE_STATS_METRICS = [
215+
('sqlserver.database.user_access', 'sys.databases', 'user_access'),
215216
('sqlserver.database.state', 'sys.databases', 'state'),
216217
('sqlserver.database.is_sync_with_backup', 'sys.databases', 'is_sync_with_backup'),
217218
('sqlserver.database.is_in_standby', 'sys.databases', 'is_in_standby'),

sqlserver/datadog_checks/sqlserver/database_metrics/database_stats_metrics.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
name as database_name,
1313
state_desc,
1414
recovery_model_desc,
15+
user_access,
1516
state,
1617
is_sync_with_backup,
1718
is_in_standby,
@@ -23,6 +24,7 @@
2324
{"name": "database", "type": "tag"},
2425
{"name": "database_state_desc", "type": "tag"},
2526
{"name": "database_recovery_model_desc", "type": "tag"},
27+
{"name": "database.user_access", "type": "gauge"},
2628
{"name": "database.state", "type": "gauge"},
2729
{"name": "database.is_sync_with_backup", "type": "gauge"},
2830
{"name": "database.is_in_standby", "type": "gauge"},

sqlserver/metadata.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ sqlserver.database.master_files.state,gauge,,,,"Database file state: 0 = Online,
5656
sqlserver.database.replica.transaction_delay,gauge,,millisecond,,"Total delay in waiting for unterminated commit acknowledgment for all the current transactions, in milliseconds. Tags: `db`. (Perf. Counter: `Database Replica - Transaction Delay`)",0,sql_server,transaction delay,,
5757
sqlserver.database.state,gauge,,,,"Database state: 0 = Online, 1 = Restoring, 2 = Recovering, 3 = Recovery_Pending, 4 = Suspect, 5 = Emergency, 6 = Offline, 7 = Copying, 10 = Offline_Secondary. Tags: `db`, `database_state_desc`, `database_recovery_model_desc`",0,sql_server,database state,,
5858
sqlserver.database.transactions,gauge,,transaction,,Number of transactions started for the SQL Server instance per second. Tags: `db`. (Perf. Counter: `Databases - Transactions/sec`),0,sql_server,database trans,,
59+
sqlserver.database.user_access,gauge,,,,"Database user access: 0 = Multi_user, 1 = Single_user, 2 = Restricted_user. Tags: `db`, `database_state_desc`, `database_recovery_model_desc`",0,sql_server,database state,,
5960
sqlserver.database.write_transactions,gauge,,transaction,,"Number of transactions that wrote to all databases on the SQL Server instance and committed, in the last second. Tags: `db`. (Perf. Counter: `Databases - Write Transactions/sec`)",0,sql_server,database trans write,,
6061
sqlserver.fci.is_current_owner,gauge,,,,"Whether or not this node is the current owner of the SQL Server FCI. Tags: `node_name`, `status`, `failover_cluster`",0,sql_server,fci current owner,,
6162
sqlserver.fci.status,gauge,,,,"Status of the node in a SQL Server failover cluster instance. Tags: `node_name`, `status`, `failover_cluster`",0,sql_server,fci status,,

sqlserver/tests/test_database_metrics.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1477,11 +1477,11 @@ def test_sqlserver_database_stats_metrics(
14771477
}
14781478

14791479
mocked_results = [
1480-
('master', 'master', 'ONLINE', 'SIMPLE', 0, False, False, False),
1481-
('tempdb', 'tempdb', 'ONLINE', 'SIMPLE', 0, False, False, False),
1482-
('model', 'model', 'ONLINE', 'FULL', 0, False, False, False),
1483-
('msdb', 'msdb', 'ONLINE', 'SIMPLE', 0, False, False, False),
1484-
('datadog_test', 'datadog_test', 'ONLINE', 'FULL', 0, False, False, False),
1480+
('master', 'master', 'ONLINE', 'SIMPLE', 0, 0, False, False, False),
1481+
('tempdb', 'tempdb', 'ONLINE', 'SIMPLE', 0, 0, False, False, False),
1482+
('model', 'model', 'ONLINE', 'FULL', 0, 0, False, False, False),
1483+
('msdb', 'msdb', 'ONLINE', 'SIMPLE', 0, 0, False, False, False),
1484+
('datadog_test', 'datadog_test', 'ONLINE', 'FULL', 0, 0, False, False, False),
14851485
]
14861486

14871487
sqlserver_check = SQLServer(CHECK_NAME, init_config, [instance_docker_metrics])
@@ -1511,7 +1511,13 @@ def execute_query_handler_mocked(query, db=None):
15111511
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
15121512
]
15131513
for result in mocked_results:
1514-
db, database, database_state_desc, database_recovery_model_desc, *metric_values = result
1514+
(
1515+
db,
1516+
database,
1517+
database_state_desc,
1518+
database_recovery_model_desc,
1519+
*metric_values,
1520+
) = result
15151521
metrics = zip(database_stats_metrics.metric_names()[0], metric_values)
15161522
expected_tags = [
15171523
f'db:{db}',

0 commit comments

Comments
 (0)