-
Notifications
You must be signed in to change notification settings - Fork 86
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
feat: add tail sampling for traces #467
base: main
Are you sure you want to change the base?
Conversation
charts/k8s-monitoring/templates/alloy_config/_processors.alloy.txt
Outdated
Show resolved
Hide resolved
- also remove default value, as they have to be defined anyway based on reviews from @t00mas
charts/k8s-monitoring/templates/alloy_config/_processors.alloy.txt
Outdated
Show resolved
Hide resolved
@t00mas I applied your reviews :) Could you have another look if you find some time please 🙏 ? |
I'm OK with this, just take into account @rlankfo 's recommendation here #443 (comment) |
I'd be concerned about adding the tail sampling processor at this stage of the pipeline. It won't be scalable -- to scale the tail sampling processor we recommend introducing a load balancing exporter in a separate layer that can route traces by trace ID. @petewall do you have any thoughts here? |
I am hitting the need for this now and have some issues with the solution proposed in #443 (comment). It doesn't integrate well with the k8s-monitoring chart because k8s-monitoring supports a variety of authentication mechanisms for different backends that the grafana-sampling chart does not. Additionally the grafana-sampling chart has no built-in support for OTTL metric/datapoint filtering like this chart does. If sampling within this k8s-monitoring chart is not encouraged due to scalability concerns then instead of including sampling templates, a suitable alternative could be a way to add an alloy Alternatively, and I have no idea how possible this is, it would be interesting if this chart and the grafana-sampling chart could interop such that spans and OTEL metrics arrive at the k8s-monitoring statefulset, Traces are forwarded to grafana-sampling load balancing endpoint for processing, then the grafana-sampling configuration points its outputs back to k8s-monitoring which handles final output/export to backends. This would allow k8s-monitoring to handle the routing of metric, log, and trace data to its various supported backend datasources while still providing a tail sampler that can scale with load. |
Add tail sampling for traces. Useful when dropping health probes from your traces for instance, as they can be quite noisy 💸.
Documentation: https://grafana.com/docs/grafana-cloud/monitor-applications/application-observability/setup/sampling/tail/
Related issues:
Comments:
examples/tail-sampling/*.alloy
files.helm template k8s-monitoring charts/k8s-monitoring -f examples/tail-sampling/values.yaml > examples/tail-sampling/output.yaml
), but didn't tested it would work correctly.extraConfig
is working, just let the user pass any string?Note: It is really painful to work with these
alloy_config/*.alloy.txt
files 😅