datadog-checks-base 37.20.0__py2.py3-none-any.whl → 37.21.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- datadog_checks/base/__about__.py +1 -1
- datadog_checks/base/__init__.pyi +2 -1
- datadog_checks/base/checks/__init__.pyi +2 -1
- datadog_checks/base/checks/db.py +22 -0
- datadog_checks/base/utils/db/health.py +2 -3
- datadog_checks/base/utils/db/utils.py +16 -6
- {datadog_checks_base-37.20.0.dist-info → datadog_checks_base-37.21.0.dist-info}/METADATA +2 -2
- {datadog_checks_base-37.20.0.dist-info → datadog_checks_base-37.21.0.dist-info}/RECORD +9 -8
- {datadog_checks_base-37.20.0.dist-info → datadog_checks_base-37.21.0.dist-info}/WHEEL +0 -0
datadog_checks/base/__about__.py
CHANGED
datadog_checks/base/__init__.pyi
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
4
|
from .__about__ import __version__
|
|
5
5
|
from .agent import datadog_agent
|
|
6
|
-
from .checks import AgentCheck
|
|
6
|
+
from .checks import AgentCheck, DatabaseCheck
|
|
7
7
|
from .checks.kube_leader import KubeLeaderElectionBaseCheck
|
|
8
8
|
from .checks.openmetrics import OpenMetricsBaseCheck
|
|
9
9
|
from .checks.openmetrics.v2.base import OpenMetricsBaseCheckV2
|
|
@@ -16,6 +16,7 @@ from .utils.common import ensure_bytes, ensure_unicode, to_native_string, to_str
|
|
|
16
16
|
__all__ = [
|
|
17
17
|
'__version__',
|
|
18
18
|
'AgentCheck',
|
|
19
|
+
'DatabaseCheck',
|
|
19
20
|
'ConfigurationError',
|
|
20
21
|
'KubeLeaderElectionBaseCheck',
|
|
21
22
|
'OpenMetricsBaseCheck',
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# All rights reserved
|
|
3
3
|
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
4
|
from .base import AgentCheck
|
|
5
|
+
from .db import DatabaseCheck
|
|
5
6
|
from .network import EventType, NetworkCheck, Status
|
|
6
7
|
|
|
7
|
-
__all__ = ['AgentCheck', 'EventType', 'NetworkCheck', 'Status']
|
|
8
|
+
__all__ = ['AgentCheck', 'DatabaseCheck', 'EventType', 'NetworkCheck', 'Status']
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# (C) Datadog, Inc. 2025-present
|
|
2
|
+
# All rights reserved
|
|
3
|
+
# Licensed under a 3-clause BSD style license (see LICENSE)
|
|
4
|
+
|
|
5
|
+
from . import AgentCheck
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DatabaseCheck(AgentCheck):
|
|
9
|
+
def database_monitoring_query_sample(self, raw_event: str):
|
|
10
|
+
self.event_platform_event(raw_event, "dbm-samples")
|
|
11
|
+
|
|
12
|
+
def database_monitoring_query_metrics(self, raw_event: str):
|
|
13
|
+
self.event_platform_event(raw_event, "dbm-metrics")
|
|
14
|
+
|
|
15
|
+
def database_monitoring_query_activity(self, raw_event: str):
|
|
16
|
+
self.event_platform_event(raw_event, "dbm-activity")
|
|
17
|
+
|
|
18
|
+
def database_monitoring_metadata(self, raw_event: str):
|
|
19
|
+
self.event_platform_event(raw_event, "dbm-metadata")
|
|
20
|
+
|
|
21
|
+
def database_monitoring_health(self, raw_event: str):
|
|
22
|
+
self.event_platform_event(raw_event, "dbm-health")
|
|
@@ -12,8 +12,7 @@ from typing import TYPE_CHECKING
|
|
|
12
12
|
from datadog_checks.base.utils.serialization import json
|
|
13
13
|
|
|
14
14
|
if TYPE_CHECKING:
|
|
15
|
-
from datadog_checks.base import
|
|
16
|
-
|
|
15
|
+
from datadog_checks.base import DatabaseCheck
|
|
17
16
|
try:
|
|
18
17
|
import datadog_agent
|
|
19
18
|
except ImportError:
|
|
@@ -42,7 +41,7 @@ class HealthStatus(Enum):
|
|
|
42
41
|
|
|
43
42
|
|
|
44
43
|
class Health:
|
|
45
|
-
def __init__(self, check:
|
|
44
|
+
def __init__(self, check: DatabaseCheck):
|
|
46
45
|
"""
|
|
47
46
|
Initialize the HealthCheck instance.
|
|
48
47
|
|
|
@@ -471,12 +471,13 @@ class TagManager:
|
|
|
471
471
|
multiple times.
|
|
472
472
|
"""
|
|
473
473
|
|
|
474
|
-
def __init__(self) -> None:
|
|
474
|
+
def __init__(self, normalizer: Optional[Callable[[Union[str, bytes]], str]] = None) -> None:
|
|
475
475
|
self._tags: Dict[Union[str, TagType], List[str]] = {}
|
|
476
476
|
self._cached_tag_list: Optional[tuple[str, ...]] = None
|
|
477
477
|
self._keyless: TagType = TagType.KEYLESS
|
|
478
|
+
self._normalizer = normalizer
|
|
478
479
|
|
|
479
|
-
def set_tag(self, key: Optional[str], value: str, replace: bool = False) -> None:
|
|
480
|
+
def set_tag(self, key: Optional[str], value: str, replace: bool = False, normalize: bool = False) -> None:
|
|
480
481
|
"""
|
|
481
482
|
Set a tag with the given key and value.
|
|
482
483
|
If key is None or empty, the value is stored as a keyless tag.
|
|
@@ -485,7 +486,11 @@ class TagManager:
|
|
|
485
486
|
value (str): The tag value
|
|
486
487
|
replace (bool): If True, replaces all existing values for this key
|
|
487
488
|
If False, appends the value if it doesn't exist
|
|
489
|
+
normalize (bool): If True, applies tag normalization using the configured normalizer
|
|
488
490
|
"""
|
|
491
|
+
if normalize and self._normalizer:
|
|
492
|
+
value = self._normalizer(value)
|
|
493
|
+
|
|
489
494
|
if not key:
|
|
490
495
|
key = self._keyless
|
|
491
496
|
|
|
@@ -498,13 +503,14 @@ class TagManager:
|
|
|
498
503
|
# Invalidate the cache since tags have changed
|
|
499
504
|
self._cached_tag_list = None
|
|
500
505
|
|
|
501
|
-
def set_tags_from_list(self, tag_list: List[str], replace: bool = False) -> None:
|
|
506
|
+
def set_tags_from_list(self, tag_list: List[str], replace: bool = False, normalize: bool = False) -> None:
|
|
502
507
|
"""
|
|
503
508
|
Set multiple tags from a list of strings.
|
|
504
509
|
Strings can be in "key:value" format or just "value" format.
|
|
505
510
|
Args:
|
|
506
511
|
tag_list (List[str]): List of tags in "key:value" format or just "value"
|
|
507
512
|
replace (bool): If True, replaces all existing tags with the new tags list
|
|
513
|
+
normalize (bool): If True, applies tag normalization using the configured normalizer
|
|
508
514
|
"""
|
|
509
515
|
if replace:
|
|
510
516
|
self._tags.clear()
|
|
@@ -513,11 +519,11 @@ class TagManager:
|
|
|
513
519
|
for tag in tag_list:
|
|
514
520
|
if ':' in tag:
|
|
515
521
|
key, value = tag.split(':', 1)
|
|
516
|
-
self.set_tag(key, value)
|
|
522
|
+
self.set_tag(key, value, normalize=normalize)
|
|
517
523
|
else:
|
|
518
|
-
self.set_tag(None, tag)
|
|
524
|
+
self.set_tag(None, tag, normalize=normalize)
|
|
519
525
|
|
|
520
|
-
def delete_tag(self, key: Optional[str], value: Optional[str] = None) -> bool:
|
|
526
|
+
def delete_tag(self, key: Optional[str], value: Optional[str] = None, normalize: bool = False) -> bool:
|
|
521
527
|
"""
|
|
522
528
|
Delete a tag or specific value for a tag.
|
|
523
529
|
For keyless tags, use None or empty string as the key.
|
|
@@ -525,9 +531,13 @@ class TagManager:
|
|
|
525
531
|
key (str): The tag key to delete, or None/empty for keyless tags
|
|
526
532
|
value (str, optional): If provided, only deletes this specific value for the key.
|
|
527
533
|
If None, deletes all values for the key.
|
|
534
|
+
normalize (bool): If True, applies tag normalization to the value for lookup
|
|
528
535
|
Returns:
|
|
529
536
|
bool: True if something was deleted, False otherwise
|
|
530
537
|
"""
|
|
538
|
+
if normalize and self._normalizer and value:
|
|
539
|
+
value = self._normalizer(value)
|
|
540
|
+
|
|
531
541
|
if not key:
|
|
532
542
|
key = self._keyless
|
|
533
543
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datadog-checks-base
|
|
3
|
-
Version: 37.
|
|
3
|
+
Version: 37.21.0
|
|
4
4
|
Summary: The Datadog Check Toolkit
|
|
5
5
|
Project-URL: Source, https://github.com/DataDog/integrations-core
|
|
6
6
|
Author-email: Datadog <packages@datadoghq.com>
|
|
@@ -10,7 +10,7 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
11
|
Classifier: Intended Audience :: System Administrators
|
|
12
12
|
Classifier: License :: OSI Approved :: BSD License
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
14
|
Classifier: Topic :: System :: Monitoring
|
|
15
15
|
Provides-Extra: db
|
|
16
16
|
Requires-Dist: mmh3==5.2.0; extra == 'db'
|
|
@@ -3,9 +3,9 @@ datadog_checks/config.py,sha256=PrAXGdlLnoV2VMQff_noSaSJJ0wg4BAiGnw7jCQLSik,196
|
|
|
3
3
|
datadog_checks/errors.py,sha256=eFwmnrX-batIgbu-iJyseqAPNO_4rk1UuaKK89evLhg,155
|
|
4
4
|
datadog_checks/log.py,sha256=orvOgMKGNEsqSTLalCAQpWP-ouorpG1A7Gn-j2mRD80,301
|
|
5
5
|
datadog_checks/py.typed,sha256=la67KBlbjXN-_-DfGNcdOcjYumVpKG_Tkw-8n5dnGB4,8
|
|
6
|
-
datadog_checks/base/__about__.py,sha256=
|
|
6
|
+
datadog_checks/base/__about__.py,sha256=pvycJFU0hkYwQYew20pwmnwFDOFZoWPr3etBDGeoKzI,139
|
|
7
7
|
datadog_checks/base/__init__.py,sha256=yWegSLE-TZWIGSvAiJj9PSrUxzlOo_UVJLt2zORZ8Ek,363
|
|
8
|
-
datadog_checks/base/__init__.pyi,sha256=
|
|
8
|
+
datadog_checks/base/__init__.pyi,sha256=a4Y1JIcPJ8pz9tRkBAvjWdtvSQwZxbMZBuRmIiSs_4E,1031
|
|
9
9
|
datadog_checks/base/agent.py,sha256=nX9x_BYYizRKGNYfXq5z7S0FZ9xcX_wd2tuxpGe3_8k,350
|
|
10
10
|
datadog_checks/base/config.py,sha256=qcAA4X9sXQZRdwQe8DgiGd2980VBp1SQA0d695tX_tU,604
|
|
11
11
|
datadog_checks/base/constants.py,sha256=cR19tAqVysMFbdBWqIGZoHIKk1kGTyqRsCn9FfFQOnw,197
|
|
@@ -13,9 +13,10 @@ datadog_checks/base/errors.py,sha256=fPcFaR3zHpSkMo8epvF3lRe9KrEnS8g4J0dXM_nvzsw
|
|
|
13
13
|
datadog_checks/base/log.py,sha256=gSfzYimmg0z3Dgmn8NpXuyMNjgXwmTbn0NcyUX8B1ls,6283
|
|
14
14
|
datadog_checks/base/types.py,sha256=anajZS0W0TsxUHJQw-JHOP2NSeuC9BisXSy9mAStlxQ,1623
|
|
15
15
|
datadog_checks/base/checks/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
|
|
16
|
-
datadog_checks/base/checks/__init__.pyi,sha256=
|
|
16
|
+
datadog_checks/base/checks/__init__.pyi,sha256=ydetl6kEFCSChppYQhs8mvIP5l6vnZD5AbLABGhbFcM,309
|
|
17
17
|
datadog_checks/base/checks/_config_ast.py,sha256=v1rAhwORF80b3kfZKhf6zXZ7S5D3A2QPUK4tSo8eo-Y,3268
|
|
18
18
|
datadog_checks/base/checks/base.py,sha256=xP56kjtCvW-CMWrdVN3ZC1yAhQr4jad9ORPDuOdz-eM,60654
|
|
19
|
+
datadog_checks/base/checks/db.py,sha256=HzEOH4uZaMDAaUTJYy0K5wV9FryNQDXsSMAOHXPVaf4,794
|
|
19
20
|
datadog_checks/base/checks/network.py,sha256=UkgqkVHaoX7Hqi0WKEx-TvaFiF6-37VyF9A3m2aSaJM,1966
|
|
20
21
|
datadog_checks/base/checks/kube_leader/__init__.py,sha256=q7V6v-FwQWkQC1QWaVzKaPjZMaxPJHJcLd71C0uM7bA,211
|
|
21
22
|
datadog_checks/base/checks/kube_leader/__init__.pyi,sha256=UGDywoRwmCIz3Zii1uHsp7jiFGWRdn5fFMZZxgGGlQs,398
|
|
@@ -139,7 +140,7 @@ datadog_checks/base/utils/concurrency/limiter.py,sha256=is2ZpUEjfsI4nBGtXG2D0Zgv
|
|
|
139
140
|
datadog_checks/base/utils/db/__init__.py,sha256=EVTc2FtnHWLHXI3M79jyMn9ypZAMa9eqG3EKLAiMF-M,211
|
|
140
141
|
datadog_checks/base/utils/db/__init__.pyi,sha256=ewmGxxyJ52wAaYxNZahi2koEUnddfvHcn3HYxQ3RUr0,240
|
|
141
142
|
datadog_checks/base/utils/db/core.py,sha256=bYanwXIqBzsSxK7b-Ofb0W1WiHbFBtKyYdUBonBLe_Q,11165
|
|
142
|
-
datadog_checks/base/utils/db/health.py,sha256=
|
|
143
|
+
datadog_checks/base/utils/db/health.py,sha256=rdcZPdlLMT4g9tepkietuViKtmP4gwPsjMGCvqC5s54,2366
|
|
143
144
|
datadog_checks/base/utils/db/query.py,sha256=-PyxdqpbShkQ78h7sWnghQZVtjdLGVrm71n8OpHuPW4,14432
|
|
144
145
|
datadog_checks/base/utils/db/sql.py,sha256=oiEzQa_vC_w3U65VFrFCoQHWj5GQLLRlSO0CfiSlp4A,2490
|
|
145
146
|
datadog_checks/base/utils/db/sql_commenter.py,sha256=r_efK6TGRQxM_-Qj-ndEJdECk47J4nCFjkVyxu1XmvU,1522
|
|
@@ -147,7 +148,7 @@ datadog_checks/base/utils/db/statement_metrics.py,sha256=U7EtERkmFzfCtfyd3094fBa
|
|
|
147
148
|
datadog_checks/base/utils/db/timed_cache.py,sha256=a9Ks5KKUvExB6GOATXTSCLamVtLD919Dn6HpweGKtFw,2114
|
|
148
149
|
datadog_checks/base/utils/db/transform.py,sha256=H3JN8_MF0Pk0HaXvIZeX1A8iQrP8KBgS741MPeBiWDo,23969
|
|
149
150
|
datadog_checks/base/utils/db/types.py,sha256=OLX2Oq58JQPFBD4oqUpCLkAP7ovRGN_i1vFk1E0N8Lg,267
|
|
150
|
-
datadog_checks/base/utils/db/utils.py,sha256=
|
|
151
|
+
datadog_checks/base/utils/db/utils.py,sha256=g6GAG1OGvo4O-GrTB6nETvUZGfVUSpqYYJMBuhLs2pM,23130
|
|
151
152
|
datadog_checks/base/utils/discovery/__init__.py,sha256=vPCOdsThBcBjFJRPhDm6IsZGOwk8HlvciwCe_l8dKLk,211
|
|
152
153
|
datadog_checks/base/utils/discovery/__init__.pyi,sha256=ScVLU1Njj9ekZmewltb0cULI6BylssVHfn4CcPNeyr8,173
|
|
153
154
|
datadog_checks/base/utils/discovery/cache.py,sha256=f9L3A7YZpZ-mpZpFIwjsa5ab9cZMGkqdetdr9EpalbI,887
|
|
@@ -221,6 +222,6 @@ datadog_checks/utils/tracing.py,sha256=HQbQakKM-Lw75MDkItaYJYipS6YO24Z_ymDVxDsx5
|
|
|
221
222
|
datadog_checks/utils/prometheus/__init__.py,sha256=8WwXnM9g1sfS5267QYCJX_hd8MZl5kRgBgQ_SzdNdXs,161
|
|
222
223
|
datadog_checks/utils/prometheus/functions.py,sha256=4vWsTGLgujHwdYZo0tlAQkqDPHofqUJM3k9eItJqERQ,197
|
|
223
224
|
datadog_checks/utils/prometheus/metrics_pb2.py,sha256=xg3UdUHe4TjeR4s13LUKZ2U1WVSt6U6zjsVRG6lX6dc,173
|
|
224
|
-
datadog_checks_base-37.
|
|
225
|
-
datadog_checks_base-37.
|
|
226
|
-
datadog_checks_base-37.
|
|
225
|
+
datadog_checks_base-37.21.0.dist-info/METADATA,sha256=RngK4W5OJrfoUb7udQ1t_kuEqdSP0_6Mk6FecbRTVyo,4245
|
|
226
|
+
datadog_checks_base-37.21.0.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
|
227
|
+
datadog_checks_base-37.21.0.dist-info/RECORD,,
|
|
File without changes
|