detectkit 0.3.0__tar.gz → 0.3.1__tar.gz
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.
- {detectkit-0.3.0/detectkit.egg-info → detectkit-0.3.1}/PKG-INFO +20 -12
- {detectkit-0.3.0 → detectkit-0.3.1}/README.md +19 -11
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/run.py +29 -13
- {detectkit-0.3.0 → detectkit-0.3.1/detectkit.egg-info}/PKG-INFO +20 -12
- {detectkit-0.3.0 → detectkit-0.3.1}/pyproject.toml +1 -1
- {detectkit-0.3.0 → detectkit-0.3.1}/LICENSE +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/MANIFEST.in +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/base.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/email.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/factory.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/mattermost.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/slack.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/telegram.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/webhook.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/orchestrator.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/init.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/test_alert.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/main.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/metric_config.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/profile.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/project_config.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/validator.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/core/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/core/interval.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/core/models.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/clickhouse_manager.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/internal_tables.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/manager.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/tables.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/base.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/factory.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/iqr.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/mad.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/manual_bounds.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/zscore.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/loaders/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/loaders/metric_loader.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/loaders/query_template.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/orchestration/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/orchestration/task_manager.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/utils/__init__.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/utils/stats.py +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/SOURCES.txt +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/dependency_links.txt +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/entry_points.txt +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/requires.txt +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/top_level.txt +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/requirements.txt +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/setup.cfg +0 -0
- {detectkit-0.3.0 → detectkit-0.3.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: detectkit
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Metric monitoring with automatic anomaly detection
|
|
5
5
|
Author: detectkit team
|
|
6
6
|
License: MIT
|
|
@@ -68,12 +68,19 @@ Dynamic: license-file
|
|
|
68
68
|
|
|
69
69
|
## Status
|
|
70
70
|
|
|
71
|
-
✅ **Production Ready** - Version 0.
|
|
71
|
+
✅ **Production Ready** - Version 0.3.0
|
|
72
72
|
|
|
73
73
|
Published to PyPI: https://pypi.org/project/detectkit/
|
|
74
74
|
|
|
75
75
|
Complete rewrite with modern architecture and full documentation (2025).
|
|
76
76
|
|
|
77
|
+
### What's New in v0.3.0
|
|
78
|
+
|
|
79
|
+
🎯 **Alert Cooldown** - Prevent alert spam from persistent anomalies
|
|
80
|
+
- Configure minimum time between alerts (`alert_cooldown: "30min"`)
|
|
81
|
+
- Automatic recovery detection (`cooldown_reset_on_recovery: true`)
|
|
82
|
+
- Stops duplicate alerts during long-running issues
|
|
83
|
+
|
|
77
84
|
## Features
|
|
78
85
|
|
|
79
86
|
- ✅ **Pure numpy arrays** - No pandas dependency in core logic
|
|
@@ -225,13 +232,14 @@ This project is currently in active development. Contributions are welcome once
|
|
|
225
232
|
|
|
226
233
|
## Changelog
|
|
227
234
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
|
|
237
|
-
|
|
235
|
+
See [CHANGELOG.md](CHANGELOG.md) for complete version history.
|
|
236
|
+
|
|
237
|
+
### Recent Releases
|
|
238
|
+
|
|
239
|
+
**[0.3.0]** (2025-11-10) - Alert cooldown system, spam prevention
|
|
240
|
+
**[0.2.8]** (2025-11-10) - Fix incomplete interval detection
|
|
241
|
+
**[0.2.7]** (2025-11-10) - Add _dtk_metrics table
|
|
242
|
+
**[0.2.0]** (2025-11-06) - Detector preprocessing and value weighting
|
|
243
|
+
**[0.1.0]** (2025-11-03) - Initial release
|
|
244
|
+
|
|
245
|
+
[Full changelog →](CHANGELOG.md)
|
|
@@ -6,12 +6,19 @@
|
|
|
6
6
|
|
|
7
7
|
## Status
|
|
8
8
|
|
|
9
|
-
✅ **Production Ready** - Version 0.
|
|
9
|
+
✅ **Production Ready** - Version 0.3.0
|
|
10
10
|
|
|
11
11
|
Published to PyPI: https://pypi.org/project/detectkit/
|
|
12
12
|
|
|
13
13
|
Complete rewrite with modern architecture and full documentation (2025).
|
|
14
14
|
|
|
15
|
+
### What's New in v0.3.0
|
|
16
|
+
|
|
17
|
+
🎯 **Alert Cooldown** - Prevent alert spam from persistent anomalies
|
|
18
|
+
- Configure minimum time between alerts (`alert_cooldown: "30min"`)
|
|
19
|
+
- Automatic recovery detection (`cooldown_reset_on_recovery: true`)
|
|
20
|
+
- Stops duplicate alerts during long-running issues
|
|
21
|
+
|
|
15
22
|
## Features
|
|
16
23
|
|
|
17
24
|
- ✅ **Pure numpy arrays** - No pandas dependency in core logic
|
|
@@ -163,13 +170,14 @@ This project is currently in active development. Contributions are welcome once
|
|
|
163
170
|
|
|
164
171
|
## Changelog
|
|
165
172
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
See [CHANGELOG.md](CHANGELOG.md) for complete version history.
|
|
174
|
+
|
|
175
|
+
### Recent Releases
|
|
176
|
+
|
|
177
|
+
**[0.3.0]** (2025-11-10) - Alert cooldown system, spam prevention
|
|
178
|
+
**[0.2.8]** (2025-11-10) - Fix incomplete interval detection
|
|
179
|
+
**[0.2.7]** (2025-11-10) - Add _dtk_metrics table
|
|
180
|
+
**[0.2.0]** (2025-11-06) - Detector preprocessing and value weighting
|
|
181
|
+
**[0.1.0]** (2025-11-03) - Initial release
|
|
182
|
+
|
|
183
|
+
[Full changelog →](CHANGELOG.md)
|
|
@@ -369,17 +369,26 @@ def find_metrics_by_tag(metrics_dir: Path, tag: str) -> List[Path]:
|
|
|
369
369
|
|
|
370
370
|
matching_metrics = []
|
|
371
371
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
372
|
+
# Search both .yml and .yaml extensions (consistent with find_metric_by_name)
|
|
373
|
+
for pattern in ["**/*.yml", "**/*.yaml"]:
|
|
374
|
+
for metric_file in metrics_dir.glob(pattern):
|
|
375
|
+
try:
|
|
376
|
+
with open(metric_file) as f:
|
|
377
|
+
config = yaml.safe_load(f)
|
|
378
|
+
|
|
379
|
+
if config and "tags" in config:
|
|
380
|
+
if tag in config["tags"]:
|
|
381
|
+
matching_metrics.append(metric_file)
|
|
382
|
+
except Exception as e:
|
|
383
|
+
# Warn about unparseable files but continue searching
|
|
384
|
+
click.echo(
|
|
385
|
+
click.style(
|
|
386
|
+
f"Warning: Skipping {metric_file.relative_to(metrics_dir.parent)}: {e}",
|
|
387
|
+
fg="yellow"
|
|
388
|
+
),
|
|
389
|
+
err=True
|
|
390
|
+
)
|
|
391
|
+
continue
|
|
383
392
|
|
|
384
393
|
return matching_metrics
|
|
385
394
|
|
|
@@ -406,8 +415,15 @@ def find_metric_by_name(metrics_dir: Path, name: str) -> Optional[Path]:
|
|
|
406
415
|
|
|
407
416
|
if config and config.get("name") == name:
|
|
408
417
|
return metric_file
|
|
409
|
-
except Exception:
|
|
410
|
-
#
|
|
418
|
+
except Exception as e:
|
|
419
|
+
# Warn about unparseable files but continue searching
|
|
420
|
+
click.echo(
|
|
421
|
+
click.style(
|
|
422
|
+
f"Warning: Skipping {metric_file.relative_to(metrics_dir.parent)}: {e}",
|
|
423
|
+
fg="yellow"
|
|
424
|
+
),
|
|
425
|
+
err=True
|
|
426
|
+
)
|
|
411
427
|
continue
|
|
412
428
|
|
|
413
429
|
return None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: detectkit
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Metric monitoring with automatic anomaly detection
|
|
5
5
|
Author: detectkit team
|
|
6
6
|
License: MIT
|
|
@@ -68,12 +68,19 @@ Dynamic: license-file
|
|
|
68
68
|
|
|
69
69
|
## Status
|
|
70
70
|
|
|
71
|
-
✅ **Production Ready** - Version 0.
|
|
71
|
+
✅ **Production Ready** - Version 0.3.0
|
|
72
72
|
|
|
73
73
|
Published to PyPI: https://pypi.org/project/detectkit/
|
|
74
74
|
|
|
75
75
|
Complete rewrite with modern architecture and full documentation (2025).
|
|
76
76
|
|
|
77
|
+
### What's New in v0.3.0
|
|
78
|
+
|
|
79
|
+
🎯 **Alert Cooldown** - Prevent alert spam from persistent anomalies
|
|
80
|
+
- Configure minimum time between alerts (`alert_cooldown: "30min"`)
|
|
81
|
+
- Automatic recovery detection (`cooldown_reset_on_recovery: true`)
|
|
82
|
+
- Stops duplicate alerts during long-running issues
|
|
83
|
+
|
|
77
84
|
## Features
|
|
78
85
|
|
|
79
86
|
- ✅ **Pure numpy arrays** - No pandas dependency in core logic
|
|
@@ -225,13 +232,14 @@ This project is currently in active development. Contributions are welcome once
|
|
|
225
232
|
|
|
226
233
|
## Changelog
|
|
227
234
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
235
|
-
-
|
|
236
|
-
|
|
237
|
-
|
|
235
|
+
See [CHANGELOG.md](CHANGELOG.md) for complete version history.
|
|
236
|
+
|
|
237
|
+
### Recent Releases
|
|
238
|
+
|
|
239
|
+
**[0.3.0]** (2025-11-10) - Alert cooldown system, spam prevention
|
|
240
|
+
**[0.2.8]** (2025-11-10) - Fix incomplete interval detection
|
|
241
|
+
**[0.2.7]** (2025-11-10) - Add _dtk_metrics table
|
|
242
|
+
**[0.2.0]** (2025-11-06) - Detector preprocessing and value weighting
|
|
243
|
+
**[0.1.0]** (2025-11-03) - Initial release
|
|
244
|
+
|
|
245
|
+
[Full changelog →](CHANGELOG.md)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|