diff --git a/AGENT_CHANGELOG.md b/AGENT_CHANGELOG.md index df555a32137cb..6828e30f571a3 100644 --- a/AGENT_CHANGELOG.md +++ b/AGENT_CHANGELOG.md @@ -1,3 +1,8 @@ +## Datadog Agent version [7.80.4](https://github.com/DataDog/datadog-agent/blob/master/CHANGELOG.rst#7804) + +### Integration Updates +* Windows Service [6.7.2](https://github.com/DataDog/integrations-core/blob/master/windows_service/CHANGELOG.md) + ## Datadog Agent version [7.80.3](https://github.com/DataDog/datadog-agent/blob/master/CHANGELOG.rst#7803) * There were no integration updates for this version of the Agent. diff --git a/AGENT_INTEGRATIONS.md b/AGENT_INTEGRATIONS.md index 4c55d0f68b05d..dcbad824ac13c 100644 --- a/AGENT_INTEGRATIONS.md +++ b/AGENT_INTEGRATIONS.md @@ -1,3 +1,265 @@ +## Datadog Agent version 7.80.4 + +* datadog-active-directory: 4.7.0 +* datadog-activemq-xml: 5.5.0 +* datadog-activemq: 5.3.0 +* datadog-aerospike: 5.4.1 +* datadog-airflow: 7.4.0 +* datadog-amazon-msk: 7.7.0 +* datadog-ambari: 6.5.0 +* datadog-apache: 7.5.0 +* datadog-appgate-sdp: 2.4.1 +* datadog-arangodb: 4.4.1 +* datadog-arctic-wolf-aurora-endpoint-security: 1.0.0 +* datadog-argo-rollouts: 3.4.1 +* datadog-argo-workflows: 3.4.1 +* datadog-argocd: 4.5.0 +* datadog-aspdotnet: 4.7.0 +* datadog-avi-vantage: 6.4.1 +* datadog-aws-neuron: 3.4.1 +* datadog-azure-iot-edge: 6.5.0 +* datadog-barracuda-secure-edge: 1.1.0 +* datadog-bentoml: 1.5.1 +* datadog-beyondtrust-password-safe: 1.2.0 +* datadog-beyondtrust-privileged-remote-access: 1.0.0 +* datadog-boundary: 4.4.1 +* datadog-btrfs: 4.3.0 +* datadog-cacti: 4.5.0 +* datadog-calico: 5.4.1 +* datadog-cassandra-nodetool: 3.4.0 +* datadog-cassandra: 3.3.1 +* datadog-celery: 2.5.1 +* datadog-ceph: 4.5.1 +* datadog-cert-manager: 6.4.1 +* datadog-checkpoint-harmony-endpoint: 1.2.0 +* datadog-checkpoint-quantum-firewall: 1.3.0 +* datadog-checks-base: 37.38.0 +* datadog-checks-dependency-provider: 3.2.0 +* datadog-checks-downloader: 9.1.0 +* datadog-cilium: 6.4.1 +* datadog-cisco-aci: 5.0.0 +* datadog-cisco-asa: 1.0.0 +* datadog-cisco-secure-client: 1.0.0 +* datadog-cisco-secure-firewall: 1.3.0 +* datadog-cisco-secure-web-appliance: 1.3.0 +* datadog-citrix-hypervisor: 6.4.0 +* datadog-clickhouse: 6.7.0 +* datadog-cloud-foundry-api: 5.6.0 +* datadog-cloudera: 3.6.0 +* datadog-cloudgen-firewall: 1.1.0 +* datadog-cockroachdb: 6.4.1 +* datadog-confluent-platform: 3.3.0 +* datadog-consul: 5.5.0 +* datadog-control-m: 1.1.0 +* datadog-coredns: 6.4.1 +* datadog-couch: 9.4.0 +* datadog-couchbase: 6.5.0 +* datadog-crio: 5.4.0 +* datadog-datadog-cluster-agent: 6.5.0 +* datadog-dcgm: 4.4.1 +* datadog-delinea-privilege-manager: 1.2.0 +* datadog-delinea-secret-server: 1.3.0 +* datadog-directory: 4.4.0 +* datadog-disk: 7.5.1 +* datadog-dns-check: 5.5.0 +* datadog-do-query-actions: 1.1.0 +* datadog-dotnetclr: 4.7.0 +* datadog-druid: 5.4.0 +* datadog-duckdb: 1.3.0 +* datadog-ecs-fargate: 7.4.0 +* datadog-eks-fargate: 6.5.0 +* datadog-elastic: 9.5.1 +* datadog-envoy: 6.5.1 +* datadog-eset-protect: 1.2.0 +* datadog-esxi: 4.3.0 +* datadog-etcd: 9.4.0 +* datadog-exchange-server: 4.7.0 +* datadog-external-dns: 6.4.0 +* datadog-falco: 2.4.1 +* datadog-flink: 3.2.0 +* datadog-fluentd: 5.6.0 +* datadog-fluxcd: 3.4.1 +* datadog-fly-io: 3.4.1 +* datadog-forescout: 1.0.0 +* datadog-foundationdb: 3.7.0 +* datadog-gearmand: 5.3.0 +* datadog-gitlab-runner: 7.5.0 +* datadog-gitlab: 10.4.1 +* datadog-glusterfs: 3.4.1 +* datadog-go-expvar: 5.4.0 +* datadog-guarddog: 1.2.1 +* datadog-gunicorn: 4.5.0 +* datadog-haproxy: 8.4.1 +* datadog-harbor: 6.4.1 +* datadog-hazelcast: 6.6.0 +* datadog-hdfs-datanode: 7.4.0 +* datadog-hdfs-namenode: 7.4.0 +* datadog-hive: 2.4.0 +* datadog-hivemq: 2.4.0 +* datadog-http-check: 12.6.2 +* datadog-hudi: 4.3.0 +* datadog-hugging-face-tgi: 1.5.1 +* datadog-hyperv: 3.4.0 +* datadog-ibm-ace: 4.5.1 +* datadog-ibm-db2: 4.3.0 +* datadog-ibm-i: 4.5.0 +* datadog-ibm-mq: 8.9.1 +* datadog-ibm-spectrum-lsf: 1.3.0 +* datadog-ibm-was: 5.5.1 +* datadog-iboss: 1.2.0 +* datadog-ignite: 3.4.0 +* datadog-iis: 5.7.0 +* datadog-impala: 4.4.1 +* datadog-infiniband: 1.6.0 +* datadog-istio: 9.5.2 +* datadog-ivanti-connect-secure: 1.2.0 +* datadog-jboss-wildfly: 3.4.0 +* datadog-journald: 3.2.0 +* datadog-juniper-srx-firewall: 1.3.0 +* datadog-kafka-actions: 2.7.0 +* datadog-kafka-consumer: 7.3.0 +* datadog-kafka: 4.6.0 +* datadog-karpenter: 3.4.1 +* datadog-keda: 2.4.1 +* datadog-keycloak: 1.2.0 +* datadog-kong: 6.4.1 +* datadog-krakend: 1.4.1 +* datadog-kube-apiserver-metrics: 7.5.0 +* datadog-kube-controller-manager: 8.4.1 +* datadog-kube-dns: 7.4.0 +* datadog-kube-metrics-server: 6.4.0 +* datadog-kube-proxy: 9.4.0 +* datadog-kube-scheduler: 7.4.1 +* datadog-kubeflow: 2.4.1 +* datadog-kubelet: 10.4.0 +* datadog-kubernetes-cluster-autoscaler: 3.4.1 +* datadog-kubernetes-state: 10.5.0 +* datadog-kubevirt-api: 2.5.1 +* datadog-kubevirt-controller: 2.4.1 +* datadog-kubevirt-handler: 2.5.1 +* datadog-kuma: 2.4.1 +* datadog-kyototycoon: 4.5.0 +* datadog-kyverno: 3.4.1 +* datadog-lighttpd: 5.5.0 +* datadog-linkerd: 7.4.1 +* datadog-linux-audit-logs: 1.2.0 +* datadog-linux-proc-extras: 4.3.0 +* datadog-litellm: 2.4.1 +* datadog-lustre: 1.5.0 +* datadog-mac-audit-logs: 1.4.2 +* datadog-mapr: 3.4.0 +* datadog-mapreduce: 7.4.0 +* datadog-marathon: 5.4.0 +* datadog-marklogic: 6.5.0 +* datadog-mcache: 6.4.0 +* datadog-mesos-master: 6.4.0 +* datadog-mesos-slave: 6.4.0 +* datadog-microsoft-dns: 1.2.0 +* datadog-microsoft-sysmon: 1.2.0 +* datadog-milvus: 2.5.1 +* datadog-mongo: 10.10.1 +* datadog-mysql: 15.17.0 +* datadog-n8n: 2.0.0 +* datadog-nagios: 3.4.0 +* datadog-network: 5.7.0 +* datadog-nfsstat: 3.5.0 +* datadog-nginx-ingress-controller: 5.4.0 +* datadog-nginx: 9.4.1 +* datadog-nifi: 1.0.0 +* datadog-nutanix: 1.3.0 +* datadog-nvidia-nim: 2.4.1 +* datadog-nvidia-triton: 3.4.1 +* datadog-octopus-deploy: 2.4.0 +* datadog-openldap: 3.3.0 +* datadog-openmetrics: 7.4.1 +* datadog-openstack-controller: 9.6.1 +* datadog-openstack: 4.3.0 +* datadog-openvpn: 1.2.0 +* datadog-ossec-security: 2.2.0 +* datadog-palo-alto-panorama: 1.2.0 +* datadog-pan-firewall: 3.3.0 +* datadog-pdh-check: 4.6.1 +* datadog-pgbouncer: 8.10.0 +* datadog-php-fpm: 6.4.1 +* datadog-ping-federate: 2.2.0 +* datadog-postfix: 3.4.1 +* datadog-postgres: 23.8.1 +* datadog-powerdns-recursor: 5.4.0 +* datadog-prefect: 1.0.1 +* datadog-presto: 3.4.0 +* datadog-process: 5.5.1 +* datadog-prometheus: 6.3.0 +* datadog-proxmox: 2.5.2 +* datadog-proxysql: 7.7.0 +* datadog-pulsar: 3.6.1 +* datadog-quarkus: 2.4.1 +* datadog-rabbitmq: 8.6.1 +* datadog-ray: 3.4.1 +* datadog-redisdb: 8.8.0 +* datadog-rethinkdb: 5.4.0 +* datadog-riak: 5.5.0 +* datadog-riakcs: 4.13.0 +* datadog-sap-hana: 5.5.0 +* datadog-scylla: 5.4.1 +* datadog-sidekiq: 3.2.0 +* datadog-silk: 4.5.0 +* datadog-silverstripe-cms: 1.8.0 +* datadog-singlestore: 4.6.0 +* datadog-slurm: 2.4.0 +* datadog-snmp: 12.4.0 +* datadog-snowflake: 7.13.0 +* datadog-solr: 2.4.0 +* datadog-sonarqube: 5.6.1 +* datadog-sonatype-nexus: 2.3.0 +* datadog-sonicwall-firewall: 1.3.0 +* datadog-spark: 7.7.1 +* datadog-sqlserver: 23.1.1 +* datadog-squid: 5.4.0 +* datadog-ssh-check: 4.8.0 +* datadog-statsd: 3.3.0 +* datadog-strimzi: 4.4.1 +* datadog-supabase: 2.4.1 +* datadog-supervisord: 4.4.1 +* datadog-suricata: 2.2.0 +* datadog-symantec-endpoint-protection: 1.3.0 +* datadog-system-core: 4.3.0 +* datadog-system-swap: 3.3.0 +* datadog-tcp-check: 6.3.0 +* datadog-teamcity: 7.4.1 +* datadog-tekton: 3.4.1 +* datadog-teleport: 3.4.1 +* datadog-temporal: 4.6.0 +* datadog-tenable: 3.2.0 +* datadog-teradata: 4.3.0 +* datadog-tibco-ems: 2.5.0 +* datadog-tls: 5.6.2 +* datadog-tokumx: 3.6.1 +* datadog-tomcat: 4.3.0 +* datadog-torchserve: 4.4.1 +* datadog-traefik-mesh: 3.5.1 +* datadog-traffic-server: 3.6.0 +* datadog-twemproxy: 3.3.0 +* datadog-twistlock: 6.4.0 +* datadog-varnish: 4.4.1 +* datadog-vault: 7.4.1 +* datadog-velero: 3.4.1 +* datadog-vertica: 6.5.0 +* datadog-vllm: 3.4.1 +* datadog-voltdb: 6.4.1 +* datadog-vsphere: 9.4.1 +* datadog-watchguard-firebox: 1.2.0 +* datadog-wazuh: 1.3.0 +* datadog-weaviate: 4.4.1 +* datadog-weblogic: 3.3.0 +* datadog-win32-event-log: 5.6.0 +* datadog-windows-performance-counters: 3.5.0 +* datadog-windows-service: 6.7.2 +* datadog-wmi-check: 4.1.1 +* datadog-yarn: 8.4.1 +* datadog-zeek: 1.2.0 +* datadog-zk: 6.5.1 +* datadog-zscaler-private-access: 1.1.0 + ## Datadog Agent version 7.80.3 * datadog-active-directory: 4.7.0 diff --git a/clickhouse/changelog.d/24272.fixed b/clickhouse/changelog.d/24272.fixed new file mode 100644 index 0000000000000..69f39682349f9 --- /dev/null +++ b/clickhouse/changelog.d/24272.fixed @@ -0,0 +1 @@ +Remove duplicated tags logic now provided by the DatabaseCheck base class. diff --git a/clickhouse/changelog.d/24276.fixed b/clickhouse/changelog.d/24276.fixed new file mode 100644 index 0000000000000..52e82ceff7616 --- /dev/null +++ b/clickhouse/changelog.d/24276.fixed @@ -0,0 +1 @@ +Remove duplicated database_identifier logic now provided by the DatabaseCheck base class. diff --git a/clickhouse/datadog_checks/clickhouse/clickhouse.py b/clickhouse/datadog_checks/clickhouse/clickhouse.py index a4e1fc94df452..01d56194b1aa5 100644 --- a/clickhouse/datadog_checks/clickhouse/clickhouse.py +++ b/clickhouse/datadog_checks/clickhouse/clickhouse.py @@ -1,7 +1,6 @@ # (C) Datadog, Inc. 2019-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from string import Template from time import time import clickhouse_connect @@ -10,7 +9,7 @@ from datadog_checks.base import AgentCheck from datadog_checks.base.checks.db import DatabaseCheck from datadog_checks.base.utils.db import QueryManager -from datadog_checks.base.utils.db.utils import TagManager, default_json_event_encoding, resolve_db_host +from datadog_checks.base.utils.db.utils import default_json_event_encoding, resolve_db_host from datadog_checks.base.utils.serialization import json from . import advanced_queries, queries, utils @@ -58,14 +57,11 @@ def __init__(self, name, init_config, instances): # DBM-related properties (computed lazily) self._resolved_hostname = None self._database_hostname = None - self._database_identifier = None self._dbms_version = None # Track last emission time for database instance metadata (rate limiting) self._database_instance_last_emitted = 0 - # Initialize TagManager for tag management (similar to MySQL) - self.tag_manager = TagManager() self.tag_manager.set_tags_from_list(self._config.tags, replace=True) self._add_core_tags() @@ -142,11 +138,6 @@ def _init_dbm_components(self): else: self.parts_and_merges = None - @property - def tags(self) -> list[str]: - """Return the current list of tags from the TagManager.""" - return list(self.tag_manager.get_tags()) - def _add_core_tags(self): """ Add tags that should be attached to every metric/event. @@ -360,30 +351,16 @@ def database_hostname(self) -> str: return self._database_hostname @property - def database_identifier(self) -> str: - """ - Get a unique identifier for this database instance. - Uses the database_identifier template from config, defaulting to "$server:$port:$db". - """ - if self._database_identifier is None: - template = Template(self._config.database_identifier.template) - tag_dict = {} - tags = self.tags.copy() - # Sort tags to ensure consistent ordering - tags.sort() - for t in tags: - if ':' in t: - key, value = t.split(':', 1) - if key in tag_dict: - tag_dict[key] += f",{value}" - else: - tag_dict[key] = value - # Add connection parameters to the template variables - tag_dict['server'] = str(self._config.server) - tag_dict['port'] = str(self._config.port) - tag_dict['db'] = str(self._config.db) - self._database_identifier = template.safe_substitute(**tag_dict) - return self._database_identifier + def database_identifier_template(self) -> str: + return self._config.database_identifier.template + + @property + def database_identifier_params(self) -> dict: + return { + "server": str(self._config.server), + "port": str(self._config.port), + "db": str(self._config.db), + } @property def dbms(self) -> str: diff --git a/mysql/changelog.d/24273.fixed b/mysql/changelog.d/24273.fixed new file mode 100644 index 0000000000000..69f39682349f9 --- /dev/null +++ b/mysql/changelog.d/24273.fixed @@ -0,0 +1 @@ +Remove duplicated tags logic now provided by the DatabaseCheck base class. diff --git a/mysql/changelog.d/24277.fixed b/mysql/changelog.d/24277.fixed new file mode 100644 index 0000000000000..52e82ceff7616 --- /dev/null +++ b/mysql/changelog.d/24277.fixed @@ -0,0 +1 @@ +Remove duplicated database_identifier logic now provided by the DatabaseCheck base class. diff --git a/mysql/datadog_checks/mysql/mysql.py b/mysql/datadog_checks/mysql/mysql.py index ba64fee2120b5..099ad51c16f9d 100644 --- a/mysql/datadog_checks/mysql/mysql.py +++ b/mysql/datadog_checks/mysql/mysql.py @@ -9,7 +9,6 @@ import traceback from collections import defaultdict from contextlib import closing, contextmanager -from string import Template from typing import Any, Dict, List, Optional # noqa: F401 import pymysql @@ -19,7 +18,6 @@ from datadog_checks.base.utils.db import QueryExecutor, QueryManager from datadog_checks.base.utils.db.health import HealthEvent, HealthStatus from datadog_checks.base.utils.db.utils import ( - TagManager, default_json_event_encoding, tracked_query, ) @@ -120,14 +118,12 @@ def __init__(self, name, init_config, instances): self.server_uuid = None self.cluster_uuid = None self._resolved_hostname = None - self._database_identifier = None self._database_hostname = None self._events_wait_current_enabled = None self._group_replication_active = None self._replication_role = None self._initialized_at = int(time.time() * 1000) self._config = MySQLConfig(self.instance, init_config) - self.tag_manager = TagManager() self.tag_manager.set_tags_from_list(self._config.tags, replace=True) # Initialize from static config tags self.add_core_tags() self._cloud_metadata = self._config.cloud_metadata @@ -198,10 +194,6 @@ def _send_metadata(self): self.set_metadata('flavor', self.version.flavor) self.set_metadata('resolved_hostname', self.resolved_hostname) - @property - def tags(self): - return self.tag_manager.get_tags() - @property def reported_hostname(self): # type: () -> str @@ -224,27 +216,17 @@ def cloud_metadata(self): return self._cloud_metadata @property - def database_identifier(self): - # type: () -> str - if self._database_identifier is None: - template = Template(self._config.database_identifier.get('template') or '$resolved_hostname') - tag_dict = {} - tags = self.tag_manager.get_tags() - # sort tags to ensure consistent ordering - tags.sort() - for t in tags: - if ':' in t: - key, value = t.split(':', 1) - if key in tag_dict: - tag_dict[key] += f",{value}" - else: - tag_dict[key] = value - tag_dict['resolved_hostname'] = self.resolved_hostname - tag_dict['host'] = str(self._config.host) - tag_dict['port'] = str(self._config.port) - tag_dict['mysql_sock'] = str(self._config.mysql_sock) - self._database_identifier = template.safe_substitute(**tag_dict) - return self._database_identifier + def database_identifier_template(self) -> str: + return self._config.database_identifier.get('template') or '$resolved_hostname' + + @property + def database_identifier_params(self) -> dict: + return { + 'resolved_hostname': self.resolved_hostname, + 'host': str(self._config.host), + 'port': str(self._config.port), + 'mysql_sock': str(self._config.mysql_sock), + } @property def database_hostname(self): diff --git a/postgres/changelog.d/24278.fixed b/postgres/changelog.d/24278.fixed new file mode 100644 index 0000000000000..52e82ceff7616 --- /dev/null +++ b/postgres/changelog.d/24278.fixed @@ -0,0 +1 @@ +Remove duplicated database_identifier logic now provided by the DatabaseCheck base class. diff --git a/postgres/datadog_checks/postgres/postgres.py b/postgres/datadog_checks/postgres/postgres.py index 87592b3a2c0b1..ce16d65f97d7e 100644 --- a/postgres/datadog_checks/postgres/postgres.py +++ b/postgres/datadog_checks/postgres/postgres.py @@ -6,7 +6,6 @@ import functools import os import threading -from string import Template from time import time import psycopg @@ -120,7 +119,6 @@ def __init__(self, name, init_config, instances): super(PostgreSql, self).__init__(name, init_config, instances) self.health = PostgresHealth(self) self._resolved_hostname = None - self._database_identifier = None self._database_hostname = None self._db = None self._cloud_metadata: dict[str, dict] = None @@ -696,26 +694,16 @@ def resolved_hostname(self): return self._resolved_hostname @property - def database_identifier(self): - # type: () -> str - if self._database_identifier is None: - template = Template(self._config.database_identifier.template) - tag_dict = {} - tags = self.tags.copy() - # sort tags to ensure consistent ordering - tags.sort() - for t in tags: - if ':' in t: - key, value = t.split(':', 1) - if key in tag_dict: - tag_dict[key] += f",{value}" - else: - tag_dict[key] = value - tag_dict['resolved_hostname'] = self.resolved_hostname - tag_dict['host'] = str(self._config.host) - tag_dict['port'] = str(self._config.port) - self._database_identifier = template.safe_substitute(**tag_dict) - return self._database_identifier + def database_identifier_template(self) -> str: + return self._config.database_identifier.template + + @property + def database_identifier_params(self) -> dict: + return { + 'resolved_hostname': self.resolved_hostname, + 'host': str(self._config.host), + 'port': str(self._config.port), + } @property def cloud_metadata(self): diff --git a/sqlserver/changelog.d/24274.fixed b/sqlserver/changelog.d/24274.fixed new file mode 100644 index 0000000000000..69f39682349f9 --- /dev/null +++ b/sqlserver/changelog.d/24274.fixed @@ -0,0 +1 @@ +Remove duplicated tags logic now provided by the DatabaseCheck base class. diff --git a/sqlserver/changelog.d/24279.fixed b/sqlserver/changelog.d/24279.fixed new file mode 100644 index 0000000000000..52e82ceff7616 --- /dev/null +++ b/sqlserver/changelog.d/24279.fixed @@ -0,0 +1 @@ +Remove duplicated database_identifier logic now provided by the DatabaseCheck base class. diff --git a/sqlserver/datadog_checks/sqlserver/sqlserver.py b/sqlserver/datadog_checks/sqlserver/sqlserver.py index 94b6da0d4d217..3db1d800ed8a3 100644 --- a/sqlserver/datadog_checks/sqlserver/sqlserver.py +++ b/sqlserver/datadog_checks/sqlserver/sqlserver.py @@ -7,7 +7,6 @@ import functools import time from collections import defaultdict -from string import Template from cachetools import TTLCache @@ -147,7 +146,6 @@ def __init__(self, name, init_config, instances): self._resolved_hostname = None self._database_hostname = None - self._database_identifier = None self._connection = None self.failed_connections = {} self.instance_metrics = [] @@ -336,10 +334,6 @@ def resolve_db_host(self): return datadog_agent.get_hostname() return agent_host_resolver(self.host) - @property - def tags(self): - return self.tag_manager.get_tags() - @property def cloud_metadata(self): return self._cloud_metadata @@ -362,38 +356,28 @@ def resolved_hostname(self): return self._resolved_hostname @property - def database_identifier(self): - # type: () -> str - if self._database_identifier is None: - template = Template(self._config.database_identifier.get('template') or '$resolved_hostname') - # Copy self.tag_manager._tags and map values to single values instead of lists - tag_dict = {} - tags = self.tag_manager.get_tags() - # sort tags to ensure consistent ordering - tags.sort() - for t in tags: - if ':' in t: - key, value = t.split(':', 1) - if key in tag_dict: - tag_dict[key] += f",{value}" - else: - tag_dict[key] = value - tag_dict['resolved_hostname'] = self.resolved_hostname - tag_dict['host'] = str(self.host) - tag_dict['port'] = str(self.port) if self.port is not None else None - database = self.instance.get('database', self.connection.DEFAULT_DATABASE if self.connection else None) - if database is not None: - tag_dict['database'] = database - if self.resolved_hostname.endswith(AZURE_SERVER_SUFFIX): - tag_dict['azure_name'] = self.resolved_hostname[: -len(AZURE_SERVER_SUFFIX)] - if self.static_info_cache.get(STATIC_INFO_SERVERNAME) is not None: - tag_dict['server_name'] = self.static_info_cache.get(STATIC_INFO_SERVERNAME) - if self.static_info_cache.get(STATIC_INFO_INSTANCENAME) is not None: - tag_dict['instance_name'] = self.static_info_cache.get(STATIC_INFO_INSTANCENAME) - if self.static_info_cache.get(STATIC_INFO_FULL_SERVERNAME) is not None: - tag_dict['full_server_name'] = self.static_info_cache.get(STATIC_INFO_FULL_SERVERNAME) - self._database_identifier = template.safe_substitute(**tag_dict) - return self._database_identifier + def database_identifier_template(self) -> str: + return self._config.database_identifier.get('template') or '$resolved_hostname' + + @property + def database_identifier_params(self) -> dict: + params = { + 'resolved_hostname': self.resolved_hostname, + 'host': str(self.host), + 'port': str(self.port) if self.port is not None else None, + } + database = self.instance.get('database', self.connection.DEFAULT_DATABASE if self.connection else None) + if database is not None: + params['database'] = database + if self.resolved_hostname.endswith(AZURE_SERVER_SUFFIX): + params['azure_name'] = self.resolved_hostname[: -len(AZURE_SERVER_SUFFIX)] + if self.static_info_cache.get(STATIC_INFO_SERVERNAME) is not None: + params['server_name'] = self.static_info_cache.get(STATIC_INFO_SERVERNAME) + if self.static_info_cache.get(STATIC_INFO_INSTANCENAME) is not None: + params['instance_name'] = self.static_info_cache.get(STATIC_INFO_INSTANCENAME) + if self.static_info_cache.get(STATIC_INFO_FULL_SERVERNAME) is not None: + params['full_server_name'] = self.static_info_cache.get(STATIC_INFO_FULL_SERVERNAME) + return params @property def database_hostname(self): diff --git a/windows_service/CHANGELOG.md b/windows_service/CHANGELOG.md index 6d6b6c53b8234..dad65e6926a01 100644 --- a/windows_service/CHANGELOG.md +++ b/windows_service/CHANGELOG.md @@ -9,7 +9,7 @@ * Add the `group_per_user_services` option to report Windows per-user service instances under their template name, reducing `windows_service` tag cardinality. ([#24087](https://github.com/DataDog/integrations-core/pull/24087)) * Add a `per_user` services filter criterion to select or exclude Windows per-user services (use `per_user: false` to exclude them from collection). ([#24088](https://github.com/DataDog/integrations-core/pull/24088)) -## 6.7.2 / 2026-06-26 +## 6.7.2 / 2026-06-26 / Agent 7.80.4 _Backported from 6.8.0_ ***Added***: