-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[workloadmeta/collectors/ecs] Leave runtime empty #33857
Conversation
Uncompressed package size comparisonComparison with ancestor Diff per package
Decision✅ Passed |
Test changes on VMUse this command from test-infra-definitions to manually test this PR changes on a VM: inv aws.create-vm --pipeline-id=55379107 --os-family=ubuntu Note: This applies to commit 597adfb |
Static quality checks ✅Please find below the results from static quality gates Info
|
Regression DetectorRegression Detector ResultsMetrics dashboard Baseline: 3863354 Optimization Goals: ✅ No significant changes detected
|
perf | experiment | goal | Δ mean % | Δ mean % CI | trials | links |
---|---|---|---|---|---|---|
➖ | uds_dogstatsd_to_api_cpu | % cpu utilization | +0.97 | [+0.11, +1.84] | 1 | Logs |
➖ | tcp_syslog_to_blackhole | ingress throughput | +0.64 | [+0.56, +0.72] | 1 | Logs |
➖ | quality_gate_idle | memory utilization | +0.45 | [+0.42, +0.49] | 1 | Logs bounds checks dashboard |
➖ | quality_gate_logs | % cpu utilization | +0.39 | [-2.68, +3.47] | 1 | Logs |
➖ | file_to_blackhole_1000ms_latency_linear_load | egress throughput | +0.22 | [-0.25, +0.68] | 1 | Logs |
➖ | quality_gate_idle_all_features | memory utilization | +0.21 | [+0.15, +0.27] | 1 | Logs bounds checks dashboard |
➖ | file_to_blackhole_500ms_latency | egress throughput | +0.08 | [-0.70, +0.86] | 1 | Logs |
➖ | file_to_blackhole_0ms_latency_http1 | egress throughput | +0.02 | [-0.89, +0.93] | 1 | Logs |
➖ | uds_dogstatsd_to_api | ingress throughput | +0.01 | [-0.24, +0.27] | 1 | Logs |
➖ | tcp_dd_logs_filter_exclude | ingress throughput | -0.00 | [-0.03, +0.02] | 1 | Logs |
➖ | file_to_blackhole_300ms_latency | egress throughput | -0.01 | [-0.64, +0.63] | 1 | Logs |
➖ | file_to_blackhole_100ms_latency | egress throughput | -0.01 | [-0.70, +0.69] | 1 | Logs |
➖ | file_to_blackhole_0ms_latency_http2 | egress throughput | -0.02 | [-0.92, +0.87] | 1 | Logs |
➖ | file_to_blackhole_0ms_latency | egress throughput | -0.03 | [-0.92, +0.87] | 1 | Logs |
➖ | file_tree | memory utilization | -0.20 | [-0.27, -0.13] | 1 | Logs |
➖ | file_to_blackhole_1000ms_latency | egress throughput | -0.88 | [-1.66, -0.09] | 1 | Logs |
Bounds Checks: ✅ Passed
perf | experiment | bounds_check_name | replicates_passed | links |
---|---|---|---|---|
✅ | file_to_blackhole_0ms_latency | lost_bytes | 10/10 | |
✅ | file_to_blackhole_0ms_latency | memory_usage | 10/10 | |
✅ | file_to_blackhole_0ms_latency_http1 | lost_bytes | 10/10 | |
✅ | file_to_blackhole_0ms_latency_http1 | memory_usage | 10/10 | |
✅ | file_to_blackhole_0ms_latency_http2 | lost_bytes | 10/10 | |
✅ | file_to_blackhole_0ms_latency_http2 | memory_usage | 10/10 | |
✅ | file_to_blackhole_1000ms_latency | memory_usage | 10/10 | |
✅ | file_to_blackhole_1000ms_latency_linear_load | memory_usage | 10/10 | |
✅ | file_to_blackhole_100ms_latency | lost_bytes | 10/10 | |
✅ | file_to_blackhole_100ms_latency | memory_usage | 10/10 | |
✅ | file_to_blackhole_300ms_latency | lost_bytes | 10/10 | |
✅ | file_to_blackhole_300ms_latency | memory_usage | 10/10 | |
✅ | file_to_blackhole_500ms_latency | lost_bytes | 10/10 | |
✅ | file_to_blackhole_500ms_latency | memory_usage | 10/10 | |
✅ | quality_gate_idle | intake_connections | 10/10 | bounds checks dashboard |
✅ | quality_gate_idle | memory_usage | 10/10 | bounds checks dashboard |
✅ | quality_gate_idle_all_features | intake_connections | 10/10 | bounds checks dashboard |
✅ | quality_gate_idle_all_features | memory_usage | 10/10 | bounds checks dashboard |
✅ | quality_gate_logs | intake_connections | 10/10 | |
✅ | quality_gate_logs | lost_bytes | 10/10 | |
✅ | quality_gate_logs | memory_usage | 10/10 |
Explanation
Confidence level: 90.00%
Effect size tolerance: |Δ mean %| ≥ 5.00%
Performance changes are noted in the perf column of each table:
- ✅ = significantly better comparison variant performance
- ❌ = significantly worse comparison variant performance
- ➖ = no significant change in performance
A regression test is an A/B test of target performance in a repeatable rig, where "performance" is measured as "comparison variant minus baseline variant" for an optimization goal (e.g., ingress throughput). Due to intrinsic variability in measuring that goal, we can only estimate its mean value for each experiment; we report uncertainty in that value as a 90.00% confidence interval denoted "Δ mean % CI".
For each experiment, we decide whether a change in performance is a "regression" -- a change worth investigating further -- if all of the following criteria are true:
-
Its estimated |Δ mean %| ≥ 5.00%, indicating the change is big enough to merit a closer look.
-
Its 90.00% confidence interval "Δ mean % CI" does not contain zero, indicating that if our statistical model is accurate, there is at least a 90.00% chance there is a difference in performance between baseline and comparison variants.
-
Its configuration does not mark it "erratic".
CI Pass/Fail Decision
✅ Passed. All Quality Gates passed.
- quality_gate_idle_all_features, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_idle_all_features, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_idle, bounds check intake_connections: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check lost_bytes: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check memory_usage: 10/10 replicas passed. Gate passed.
- quality_gate_logs, bounds check intake_connections: 10/10 replicas passed. Gate passed.
5f2b641
to
597adfb
Compare
/merge |
Devflow running:
|
(cherry picked from commit 9c2fc64)
What does this PR do?
Fixes issue where the "source" and "service" tags are incorrectly set to "kubernetes" in logs when the Agent runs on ECS EC2.
The PR #32668 set the runtime for containers collected by the ECS collector when using the v1 parser. The change made sense but broke the logs in a really unexpected way.
We need to leave the runtime empty as it was before the change. I'll try to explain the reason.
In ECS, the logs agent assigns the "source" and "service" tags based on the name of the container image. The ECS v1 collector does not gather container image information; only the Docker collector does. As a result, the information becomes complete only after the Docker collector has processed the container.
If the runtime is set by the the ECS collector, and it runs before the Docker collector, and the logs check configuration is generated before the Docker collector stores the information, the image details will be missing. As a result, the logs configuration will have an incorrect "source" and "service" tags. More specifically, it defaults to "kubernetes" for both, which doesn't make sense on ECS EC2.
Setting an empty runtime is a workaround (I don't know if it was like that before the PR mentioned above intentionally or not) to ensure that the "source" and "service" tags are correct. The reason is that autodiscovery is not expecting an empty runtime because it uses it to generate the AD identifiers and things like the service ID. Also, the logs agent rejects config with an empty service ID. As a result, with an empty runtime, the logs config will not be created until the Docker collector has run and the image info is available.
Some links in the code about this:
datadog-agent/pkg/logs/launchers/container/tailerfactory/defaults.go
Line 91 in 60a8883
datadog-agent/pkg/util/containers/entity.go
Line 22 in 60a8883
datadog-agent/comp/core/autodiscovery/listeners/service.go
Line 67 in 60a8883
datadog-agent/pkg/logs/schedulers/ad/scheduler.go
Line 242 in 60a8883
Note that this only applies to the case where the v1 endpoint is used which was the default when the issue was introduced, but it's no longer the case.
Also, the original bug addressed by #32668 no longer needs the runtime to be set thanks to this PR: #32769
Describe how you validated your changes
I deployed on ECS EC2. Deployed several tasks and verified that the "source" and "service" tags were correct.