From 7287f35c168780f5bc945348977aad628ef83010 Mon Sep 17 00:00:00 2001 From: Robert Fratto Date: Wed, 27 Mar 2024 14:11:48 -0400 Subject: [PATCH] syntax: add README.md Add a basic README.md to explain what the syntax submodule is. --- syntax/README.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 syntax/README.md diff --git a/syntax/README.md b/syntax/README.md new file mode 100644 index 0000000000..14fdf0ef33 --- /dev/null +++ b/syntax/README.md @@ -0,0 +1,60 @@ +# Alloy configuration syntax + +

+ API + User documentation +

+ +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 + +```grafana-alloy +// 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.