Skip to content

starkross/augur

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


augur logo

Getting Started Β Β β€’Β Β  Getting Involved Β Β β€’Β Β  Getting In Touch

Build Status Go Report Card GitHub release (latest by date including pre-releases)

Rules Β Β β€’Β Β  Usage Β Β β€’Β Β  Custom Policies Β Β β€’Β Β  Package


augur

A fast, opinionated linter for OpenTelemetry Collector configurations. Catches misconfigurations, security issues, and performance pitfalls before they hit production.

Built with OPA/Rego β€” every rule is a plain .rego file you can read, override, or extend.

augur demo

Why

The OpenTelemetry Collector is flexible, but that flexibility makes it easy to ship configs that silently drop data, leak secrets, or OOM under load. augur encodes hard-won operational knowledge into automated checks:

  • No memory limiter? You'll OOM in production.
  • Hardcoded API key? It'll end up in version control.
  • Batch processor in the wrong position? You're leaving performance on the table.

Install

Homebrew

brew install starkross/tap/augur

Go

go install github.com/starkross/augur/cmd/augur@latest

Docker

docker run --rm -v "$(pwd):/work" ghcr.io/starkross/augur:latest config.yaml

Binary releases

Download from GitHub Releases β€” available for Linux, macOS, and Windows (amd64/arm64).

Quick start

augur otel-collector-config.yaml
otel-collector-config.yaml
  FAIL OTEL-001: memory_limiter processor is not configured. Required to prevent OOM in production.
  FAIL OTEL-003: batch processor is not configured. Required for efficient data export.
  WARN OTEL-011: health_check extension is not configured. Recommended for k8s liveness/readiness probes.

βœ— 2 failure(s), 1 warning(s)

Exit code 1 on any failure. Warnings are informational by default.

Rules

See docs/RULES.md for the full list of built-in rules.

Usage

augur [flags] <config.yaml> [config.yaml...]
Flag Description Default
-o, --output Output format: text, json, github text
-s, --strict Treat warnings as errors false
-q, --quiet Suppress warnings, show only failures false
-k, --skip Comma-separated rule IDs to skip
--no-color Disable colored output false
-p, --policy Additional policy directory (merged with built-in rules)

Examples

# Lint multiple files
augur gateway.yaml agent.yaml

# Strict mode β€” warnings become errors
augur --strict config.yaml

# JSON output for programmatic consumption
augur -o json config.yaml

# Skip specific rules
augur --skip OTEL-015,OTEL-016 config.yaml

# Use custom policies
augur --policy ./my-policies config.yaml

Custom policies

All built-in rules live in policy/ as standard Rego files. To add your own:

  1. Create a directory with your custom rules:
# my-policies/main/custom.rego
package main

import future.keywords.contains
import future.keywords.if

deny contains msg if {
    not input.processors.filter
    msg := "CUSTOM-001: filter processor is required by our platform team."
}
  1. Run with --policy:
augur --policy ./my-policies config.yaml

Custom policies are merged with the built-in rules β€” your rules run alongside all default checks.

About

πŸ‡ΊπŸ‡¦πŸ‡΅πŸ‡± A static analysis tool for OpenTelemetry Collector configurations. Built on OPA/Rego, it validates your pipelines, receivers, processors, and exporters against customizable policy rules – catching misconfigurations before they reach production

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors