feat(logging-apps): add charts for opentelemetry-collector#1426
feat(logging-apps): add charts for opentelemetry-collector#1426
Conversation
Signed-off-by: Carlo Field <carlo.field@adfinis.com>
Signed-off-by: Carlo Field <carlo.field@adfinis.com>
Signed-off-by: Carlo Field <carlo.field@adfinis.com>
Signed-off-by: Carlo Field <carlo.field@adfinis.com>
|
otel-col is already in tracing-apps if you need it twice, you can deploy tracing-apps twice the usualy reference architecture lets one instance handle a full cluster tho |
Since we want otel-col for different use-cases (in this case for instance for log/event collection), does it make sense to keep it in tracing-apps? This PR would be here specifically to act as a replacement for promtail instances, which are currently in logging-apps.
My gut feeling is I don't really like that approach, as it duplicates our installed app-of-apps charts in a rather nontransparent way. Especially since if we install one, we usually also need to install the other - I don't see a big use-case for just having logs or events, but not both.
According to docs, we'd need to then configure some sort of event deduplication. Log collection needs a daemonset as it fetches the logs from the node, but then you'd have multiple instances scraping the Kubernetes API for events. |
|
Currently the
This would expand considerably on that since the charts would now suddenly contain opinions on much more. I feel like this is a considerable change that we would want to weight carefully (and also document properly in
Does it really tho? It feels like this is a purely cosmetic concern? |
From a user perspective, we currently usually create one logging-apps (or tracing-apps, w/e) manifest with whatever features we want to enable: With the otelcol changes with just one chart, we'd end up with three files semantically: The naming can be substituted but the principle remains. We could also only have two apps, something like this: But that also looks weird to me. It would also cause argocd to show multiple logging-apps (renamed, of course) app-of-apps charts. You're right, it's mostly a cosmetic change. Throwing another idea out there, seeing as we have the infrastructure to maintain our own charts, we could do something like this: With this we could also set sane default values like setting the otelcol image flavour to k8s and the deployment modes for each chart to default to DaemonSet / Deployment respectively. The downside of this is having to maintain yet another helm chart. And finally, we could put some more time into figuring out how hard it'd actually be to do event deduplication - I haven't looked into this a lot since it seems like it'll come with a rats tail of other constraints, but perhaps there is a documented path for this? If we can deduplicate events we could just go the DaemonSet route and entirely do away with the Deployment. |
I like this approach. Although we would maintain yet another chart, we won't need to update otelcol in three different spots. Now the question remains, we would put it in logging-apps or tracing-apps? or deprecate those two and start a new obervability-apps or even move it to infra-apps? |
|
how about using an ApplicationSet instead of the version from logging-apps? |
Do we use ApplicationSets elsewhere at the moment (excluding potential customer workloads)? What do you think about the idea of maintaining the combination as a helm chart as suggested in the comment above yours? |
It what prompted me to suggest an ApplicationSet because that might already cover a lot of bases. It's pretty clear that we would need a solution that support an n amount of otel-collectors, so the chart would probably need to do some magick to support something aloong the lines of We could also investigate if there is any potential to use an operator to manage the otel-col instances, maybe by leveraging https://github.com/open-telemetry/opentelemetry-operator. |
Description
Introduces two references to opentelemetry-collector for use for log and event scraping
Issues
#1425
Checklist
artifacthub.io/changesannotation inChart.yaml, check the example in the documentation.pre-commit rundocs/