Skip to content

Commit 1248b84

Browse files
authored
normalize sqlserver servername and instancename tag values (DataDog#21475)
* normalize sqlserver servername and instancename tag values * fix lint * lowercase * update min base package * add changelog * fix tests * fix tests * fix test * change to dict[key]
1 parent 23a35a5 commit 1248b84

9 files changed

Lines changed: 62 additions & 53 deletions

File tree

sqlserver/changelog.d/21475.added

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Normalize `sqlserver_servername` and `sqlserver_instancename` tag values to avoid duplicate tags.

sqlserver/datadog_checks/sqlserver/sqlserver.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def __init__(self, name, init_config, instances):
142142

143143
self._config = SQLServerConfig(self.init_config, self.instance, self.log)
144144
self.cloud_metadata = self._config.cloud_metadata
145-
self.tag_manager = TagManager()
145+
self.tag_manager = TagManager(normalizer=lambda tag: self.normalize_tag(tag).lower())
146146
self.tag_manager.set_tags_from_list(self._config.tags, replace=True) # Initialize from static config tags
147147

148148
self.databases = set()
@@ -405,9 +405,11 @@ def load_static_information(self):
405405
self.static_info_cache[STATIC_INFO_INSTANCENAME] = instancename
406406
self.static_info_cache[STATIC_INFO_FULL_SERVERNAME] = full_servername
407407

408-
self.tag_manager.set_tag("sqlserver_servername", servername, replace=True)
408+
self.tag_manager.set_tag("sqlserver_servername", servername, replace=True, normalize=True)
409409
if instancename:
410-
self.tag_manager.set_tag("sqlserver_instancename", instancename, replace=True)
410+
self.tag_manager.set_tag(
411+
"sqlserver_instancename", instancename, replace=True, normalize=True
412+
)
411413
else:
412414
self.log.warning("failed to load servername static information due to empty results")
413415

sqlserver/tests/test_activity.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,9 @@ def _run_query_with_mock_obfuscator(c, q):
191191
fred_conn.close()
192192
executor.shutdown(wait=True)
193193

194-
expected_instance_tags.add("sqlserver_servername:{}".format(check.static_info_cache.get(STATIC_INFO_SERVERNAME)))
194+
expected_instance_tags.add(
195+
"sqlserver_servername:{}".format(check.static_info_cache[STATIC_INFO_SERVERNAME].lower())
196+
)
195197

196198
dbm_activity = aggregator.get_event_platform_events("dbm-activity")
197199
assert len(dbm_activity) == 1, "should have collected exactly one dbm-activity payload"
@@ -834,7 +836,7 @@ def _expected_dbm_instance_tags(check):
834836
"database_instance:{}".format("stubbed.hostname"),
835837
"ddagenthostname:{}".format("stubbed.hostname"),
836838
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
837-
"sqlserver_servername:{}".format(check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
839+
"sqlserver_servername:{}".format(check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
838840
]
839841

840842

sqlserver/tests/test_database_metrics.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def execute_query_handler_mocked(query, db=None):
103103
"database_instance:{}".format("stubbed.hostname"),
104104
"ddagenthostname:{}".format("stubbed.hostname"),
105105
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
106-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
106+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
107107
]
108108
for result in mocked_results:
109109
db, state, logical_name, file_location, *metric_values = result
@@ -190,7 +190,7 @@ def test_sqlserver_ao_metrics(
190190
"database_instance:{}".format("stubbed.hostname"),
191191
"ddagenthostname:{}".format("stubbed.hostname"),
192192
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
193-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
193+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
194194
]
195195
for result in mocked_ao_availability_groups:
196196
(
@@ -312,7 +312,7 @@ def execute_query_handler_mocked(query, db=None):
312312
"database_instance:{}".format("stubbed.hostname"),
313313
"ddagenthostname:{}".format("stubbed.hostname"),
314314
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
315-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
315+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
316316
]
317317
for result in mocked_results:
318318
ag, availability_group_name, synchronization_health_desc, *metric_values = result
@@ -409,7 +409,7 @@ def execute_query_handler_mocked(query, db=None):
409409
"database_instance:{}".format("stubbed.hostname"),
410410
"ddagenthostname:{}".format("stubbed.hostname"),
411411
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
412-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
412+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
413413
]
414414
for result in mocked_results:
415415
ag, availability_group_name, replica_server_name, synchronization_state_desc, *metric_values = result
@@ -553,7 +553,7 @@ def execute_query_handler_mocked(query, db=None):
553553
"database_instance:{}".format("stubbed.hostname"),
554554
"ddagenthostname:{}".format("stubbed.hostname"),
555555
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
556-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
556+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
557557
]
558558
for result in mocked_results:
559559
(
@@ -624,7 +624,7 @@ def execute_query_handler_mocked(query, db=None):
624624
"database_instance:{}".format("stubbed.hostname"),
625625
"ddagenthostname:{}".format("stubbed.hostname"),
626626
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
627-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
627+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
628628
]
629629
for result in mocked_results:
630630
node_name, status, failover_cluster, *metric_values = result
@@ -678,7 +678,7 @@ def execute_query_handler_mocked(query, db=None):
678678
"database_instance:{}".format("stubbed.hostname"),
679679
"ddagenthostname:{}".format("stubbed.hostname"),
680680
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
681-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
681+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
682682
]
683683
for result in mocked_results:
684684
primary_id, primary_server, primary_db, *metric_values = result
@@ -744,7 +744,7 @@ def execute_query_handler_mocked(query, db=None):
744744
"database_instance:{}".format("stubbed.hostname"),
745745
"ddagenthostname:{}".format("stubbed.hostname"),
746746
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
747-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
747+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
748748
]
749749
for result in mocked_results:
750750
secondary_server, secondary_db, secondary_id, primary_server, primary_db, *metric_values = result
@@ -797,7 +797,7 @@ def execute_query_handler_mocked(query, db=None):
797797
"database_instance:{}".format("stubbed.hostname"),
798798
"ddagenthostname:{}".format("stubbed.hostname"),
799799
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
800-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
800+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
801801
]
802802
for result in mocked_results:
803803
metrics = zip(server_state_metrics.metric_names()[0], result)
@@ -847,7 +847,7 @@ def execute_query_handler_mocked(query, db=None):
847847
"database_instance:{}".format("stubbed.hostname"),
848848
"ddagenthostname:{}".format("stubbed.hostname"),
849849
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
850-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
850+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
851851
]
852852
for result in mocked_results:
853853
database_id, *metric_values = result
@@ -935,7 +935,7 @@ def test_sqlserver_index_usage_metrics(
935935
"database_instance:{}".format("stubbed.hostname"),
936936
"ddagenthostname:{}".format("stubbed.hostname"),
937937
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
938-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
938+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
939939
]
940940
for result in mocked_results:
941941
for row in result:
@@ -1063,7 +1063,7 @@ def test_sqlserver_db_fragmentation_metrics(
10631063
"database_instance:{}".format("stubbed.hostname"),
10641064
"ddagenthostname:{}".format("stubbed.hostname"),
10651065
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1066-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1066+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
10671067
]
10681068
for result in mocked_results:
10691069
for row in result:
@@ -1152,7 +1152,7 @@ def execute_query_handler_mocked(query, db=None):
11521152
"database_instance:{}".format("stubbed.hostname"),
11531153
"ddagenthostname:{}".format("stubbed.hostname"),
11541154
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1155-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1155+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
11561156
]
11571157
for result in mocked_results:
11581158
scheduler_id, parent_node_id, *metric_values = result
@@ -1223,7 +1223,7 @@ def execute_query_handler_mocked(query, db=None):
12231223
"database_instance:{}".format("stubbed.hostname"),
12241224
"ddagenthostname:{}".format("stubbed.hostname"),
12251225
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1226-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1226+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
12271227
]
12281228
for result in mocked_results:
12291229
scheduler_id, *metric_values = result
@@ -1295,7 +1295,7 @@ def execute_query_handler_mocked(query, db=None):
12951295
"database_instance:{}".format("stubbed.hostname"),
12961296
"ddagenthostname:{}".format("stubbed.hostname"),
12971297
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1298-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1298+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
12991299
]
13001300
for result in mocked_results:
13011301
db, database, file_id, file_type, file_location, database_files_state_desc, size, state = result
@@ -1377,7 +1377,7 @@ def test_sqlserver_database_files_metrics(
13771377
"database_instance:{}".format("stubbed.hostname"),
13781378
"ddagenthostname:{}".format("stubbed.hostname"),
13791379
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1380-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1380+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
13811381
]
13821382
for db, result in zip(AUTODISCOVERY_DBS, mocked_results):
13831383
for row in result:
@@ -1446,7 +1446,7 @@ def test_sqlserver_table_size_metrics(
14461446
"database_instance:{}".format("stubbed.hostname"),
14471447
"ddagenthostname:{}".format("stubbed.hostname"),
14481448
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1449-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1449+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
14501450
]
14511451
for mock_row in mocked_results:
14521452
table_name, schema, database, *metric_values = mock_row
@@ -1508,7 +1508,7 @@ def execute_query_handler_mocked(query, db=None):
15081508
"database_instance:{}".format("stubbed.hostname"),
15091509
"ddagenthostname:{}".format("stubbed.hostname"),
15101510
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1511-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1511+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
15121512
]
15131513
for result in mocked_results:
15141514
(
@@ -1584,7 +1584,7 @@ def execute_query_handler_mocked(query, db=None):
15841584
"database_instance:{}".format("stubbed.hostname"),
15851585
"ddagenthostname:{}".format("stubbed.hostname"),
15861586
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1587-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1587+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
15881588
]
15891589
for result in mocked_results:
15901590
db, database, *metric_values = result
@@ -1629,7 +1629,7 @@ def test_sqlserver_xe_session_metrics(
16291629
"database_instance:{}".format("stubbed.hostname"),
16301630
"ddagenthostname:{}".format("stubbed.hostname"),
16311631
"dd.internal.resource:database_instance:{}".format("stubbed.hostname"),
1632-
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache.get(STATIC_INFO_SERVERNAME)),
1632+
"sqlserver_servername:{}".format(sqlserver_check.static_info_cache[STATIC_INFO_SERVERNAME].lower()),
16331633
]
16341634
expected_tags.append('session_name:datadog')
16351635
aggregator.assert_metric("sqlserver.xe.session_status", value=1, tags=expected_tags)

0 commit comments

Comments
 (0)