I’m starting to investigate migrating from Promtail to Alloy - given that the former is being deprecated in favour of the latter. However, as a newcomer to Alloy (but having previously done some work with OTel Collector) I’m struggling to understand exactly what Alloy is.
At Grafana Alloy | Grafana Alloy documentation it says:
Grafana Alloy is a vendor-neutral distribution of the OpenTelemetry (OTel) Collector.
That immediately begs several questions:
- Is Alloy a fork of OTel Collector?
- What are the differences between Grafana Alloy and the standard distribution of OTel Collector?
- Why should I use Alloy instead of OTel Collector?
- In what sense is Alloy “vendor neutral”? Is this implying that somehow the standard OTel Collector is not?
- To what extent are they compatible, or configurations interchangeable?
It looks to me like they’re completely different. The OTel Collector configurations are in YAML with a particular structure (receivers, processors, exporters, service pipelines to connect them). The configuration snippets for Alloy look like HCL to me, although I can’t find anywhere that actually says so. Rather it is described as “Alloy configuration syntax”. [EDIT: I found the older Grafana Agent documentation called it River and says it’s HCL-inspired, but it’s now officially “Grafana Alloy configuration syntax.”]
It has a different structure with “configuration blocks” and “components”, where each component has “forward_to” to connect it to the next, and introduces its own concepts such as “capsules”.
Hence I’m struggling to see the relationship between Alloy and OTel Collector.
Another issue is: I’m currently using promtail to receive syslog and forward to loki. If I search for “syslog” in the Grafana documentation, I find loki.source.syslog.
- Why is this module specific to loki? Is it essentially an import of the promtail syslog receiver code?
- Is it only compatible with other loki components? For example, can I only modify the message using
loki.process
? - How does this differ from the OTel collector’s own syslogreceiver?
- I can’t see the OTel syslog receiver in the otelcol components of Alloy, so is
loki.source.syslog
the only choice available in Alloy? (If so, that would tie Alloy rather closely to Loki, which seems to go against the “vendor neutral” claim)
Sorry if I’m being dense here. If there’s a more detailed description of how Alloy relates to OTel Collector, please point me at it (I couldn’t find one).
Thanks, Brian.