-
Notifications
You must be signed in to change notification settings - Fork 148
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
[OTel] Additional components for the Elastic Distro #5092
Comments
@strawgate @AlexanderWert What is the priority for this issue? Which release do we want to target it to? |
Looking at the list of components it seems like there are still many components that sound less relevant for our distro (like spanmetricsconnector, servicegraphconnector, etc.). As you wrote, I think we need to evaluate and come up with our own list inspired by that list.
I think 8.15.2 would be reasonable for that, since that's when we plan to have a broader k8s integration for OTel. |
What would the criteria be for deciding whether to include a component from the list in our distro vs. not include it? |
I would consider as required those that are defined by default in the upstream's Helm Charts: https://github.com/open-telemetry/opentelemetry-helm-charts/blob/main/charts/opentelemetry-collector/values.yaml With this users that already use the upstream charts could switch to the Elastic distro by just defining the image properly: helm install my-opentelemetry-collector open-telemetry/opentelemetry-collector --set mode=daemonset --set image.repository="docker.elastic.co/beats/elastic-agent" --set image.tag="8.15.0-SNAPSHOT" --set command.name="/usr/share/elastic-agent/elastic-agent" --set command.extraArgs="{otel, -c, --config=etc/elastic-agent/otel.yaml}" The above gives me the following in the failed Collector's Pod logs: Starting in otel mode
1 error occurred:
* failed to get config: cannot unmarshal the configuration: decoding failed due to the following error(s):
error decoding 'receivers': unknown type: "prometheus" for id: "prometheus" (valid values: [otlp filelog kubeletstats k8s_cluster hostmetrics httpcheck])
error decoding 'processors': unknown type: "memory_limiter" for id: "memory_limiter" (valid values: [transform filter k8sattributes elasticinframetrics resourcedetection batch resource attributes])
error decoding 'extensions': unknown type: "health_check" for id: "health_check" (valid values: [file_storage memory_limiter]) A working PoC: https://github.com/elastic/opentelemetry-dev/pull/331 |
As defined in the collector best practices docs, the |
[UPDATE] Chatting with @cmacknz off-issue, there's no reason not to include both the extension and the processor, if we need the processor for our collector distro to work on k8s, so will keep the |
@ycombinator I was checking the extension and from the docs it seems that in the future it should be used in favor of the processor:
But the extension is currently nop:
I suggested adding the processor because the upstream Helm Chart requires it. Opening an issue to remove the dependency in Helm open-telemetry/opentelemetry-helm-charts#1272 |
let's also monitor size of binary, difference between |
Including the collector has to make agent larger, and we need more functionality than what the core collector has, so this is really unavoidable. Be mindful of what components we include to make sure they have a purpose (e.g. we probably don't need everything in contrib) but there's not much else we can do in the short term. |
From the Helm deployment perspective, only the Meanwhile, the |
FYI a working example can be found at https://github.com/elastic/opentelemetry-dev/pull/331, which uses #5126. |
I'm trying to verify that the changes made in #5242 are sufficient to resolve this issue here. If I try the
@ChrsMark could you help me understand where the |
@ycombinator I believe it's a combination of a couple issues. To fix this, do the following two things:
Here's the output I had on my machine: $ helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
open-telemetry/opentelemetry-collector 0.92.0 0.101.0 OpenTelemetry Collector Helm chart for Kubernetes
open-telemetry/opentelemetry-demo 0.30.6 1.9.0 opentelemetry demo helm chart
open-telemetry/opentelemetry-ebpf 0.1.0 v0.10.0 OpenTelemetry eBPF Helm chart for Kubernetes
open-telemetry/opentelemetry-kube-stack 0.0.5 0.98.0 OpenTelemetry Quickstart chart for Kubernetes. ...
open-telemetry/opentelemetry-operator 0.60.0 0.100.1 OpenTelemetry Operator Helm chart for Kubernetes
$ helm repo update open-telemetry
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "open-telemetry" chart repository
Update Complete. ⎈Happy Helming!⎈
$ helm search repo
NAME CHART VERSION APP VERSION DESCRIPTION
open-telemetry/opentelemetry-collector 0.102.1 0.107.0 OpenTelemetry Collector Helm chart for Kubernetes
open-telemetry/opentelemetry-demo 0.32.6 1.11.1 opentelemetry demo helm chart
open-telemetry/opentelemetry-ebpf 0.1.1 v0.10.2 OpenTelemetry eBPF Helm chart for Kubernetes
open-telemetry/opentelemetry-kube-stack 0.2.0 0.107.0 OpenTelemetry Quickstart chart for Kubernetes. ...
open-telemetry/opentelemetry-operator 0.68.1 0.107.0 OpenTelemetry Operator Helm chart for Kubernetes
helm install elastic-otelcol open-telemetry/opentelemetry-collector --version=0.102.1 \
--set mode=daemonset \
--set image.repository="docker.elastic.co/beats/elastic-agent" \
--set image.tag="8.16.0-SNAPSHOT" \
--set image.pullPolicy=Always \
--set command.name="/usr/share/elastic-agent/elastic-agent" \
--set command.extraArgs="{otel, --config=otel.yml}" I have introduced the following changes compared to the command from your comment: a. Added the b. Added c. Corrected the path to the |
One problem I'm seeing when running the chart with this configuration is that the Health Check extension is not used in the |
Thanks for your guidance, @andrzej-stencel! Indeed, I had a (way) outdated version of the Helm chart!
And thanks for the fixes to the |
Thanks. Created #5369 to try and address this problem. |
Describe the enhancement:
K8s is one of the most used envs according to https://opentelemetry.io/blog/2024/otel-collector-survey/#deployment-scale-and-environment, hence it makes sense to consult what the community distro for k8s includes.
We can evaluate the list of the k8s-distro components and consider including them as well in the Elastic distro: https://github.com/open-telemetry/opentelemetry-collector-releases/blob/main/distributions/otelcol-k8s/manifest.yaml
/cc @elastic/otel-devs
Describe a specific use case for the enhancement or feature:
What is the definition of done?
Taken from #5092 (comment):
prometheus
receivermemory_limiter
processorhealth_check
extensionheml install ...
command mentioned in [OTel] Additional components for the Elastic Distro #5092 (comment) succeds.The text was updated successfully, but these errors were encountered: