# README
Alloy configuration syntax
The Alloy configuration syntax is a domain-specific language used by Grafana Alloy to define pipelines.
The syntax was designed with the following goals:
- Fast: The syntax must be fast so the component controller can quickly evaluate changes.
- Simple: The syntax must be easy to read and write to minimize the learning curve.
- Debuggable: The syntax must give detailed information when there's a mistake in the configuration file.
The syntax package is importable as a Go module so other projects can use it.
NOTE: The
syntax
submodule is versioned separately from the main module, and does not have a stable API.
Example
// Discover Kubernetes pods to collect metrics from.
discovery.kubernetes "pods" {
role = "pod"
}
// Collect metrics from Kubernetes pods.
prometheus.scrape "default" {
targets = discovery.kubernetes.pods.targets
forward_to = [prometheus.remote_write.default.receiver]
}
// Get an API key from disk.
local.file "apikey" {
filename = "/var/data/my-api-key.txt"
is_secret = true
}
// Send metrics to a Prometheus remote_write endpoint.
prometheus.remote_write "default" {
endpoint {
url = "http://localhost:9009/api/prom/push"
basic_auth {
username = "MY_USERNAME"
password = local.file.apikey.content
}
}
}
Limitations
The syntax
submodule only contains lower level concepts (attributes, blocks,
expressions). It does not contain any higher level concepts like components or
services.
# Packages
No description provided by the author
Package ast exposes AST elements used by Alloy syntax.
Package diag exposes error types used throughout Alloy and a method to pretty-print them to the screen.
No description provided by the author
Package parser implements utilities for parsing Alloy configuration files.
Package printer contains utilities for pretty-printing Alloy ASTs.
Package scanner implements a lexical scanner for Alloy source files.
Package token defines the lexical elements of an Alloy config and utilities surrounding their position.
Package vm provides an Alloy syntax expression evaluator.
# Functions
Marshal returns the pretty-printed encoding of v as a Alloy configuration file.
MarshalValue returns the pretty-printed encoding of v as an Alloy value.
NewDecoder returns a new Decoder which reads configuration from r.
NewEncoder returns a new Encoder which writes configuration to w.
Unmarshal converts the Alloy configuration file specified by in and stores it in the struct value pointed to by v.
UnmarshalValue converts the Alloy configuration file specified by in and stores it in the value pointed to by v.
# Variables
ErrNoConversion is returned by implementations of ConvertibleFromCapsule and ConvertibleToCapsule when a conversion with a specific type is unavailable.
# Interfaces
Capsule is an interface marker which tells Alloy syntax that a type should always be treated as a "capsule type" instead of the default type decoding would assign.
ConvertibleFromCapsule is a Capsule which supports custom conversion from any Go type which is not the same as the capsule type.
ConvertibleIntoCapsule is a Capsule which supports custom conversion into any Go type which is not the same as the capsule type.
The Defaulter interface allows a type to implement default functionality in Alloy configuration evaluation.
The Unmarshaler interface allows a type to hook into Alloy syntax decoding and decode into another type or provide pre-decoding logic.
The Validator interface allows a type to implement validation functionality in Alloy configuration evaluation.