Categorygithub.com/fgouteroux/loki2tf
modulepackage
0.0.1
Repository: https://github.com/fgouteroux/loki2tf.git
Documentation: pkg.go.dev

# README

loki2tf - Loki YAML Prometheus-compatible Rules to Terraform HCL converter

A tool for converting Loki Prometheus-compatible Rules (in YAML format) into HashiCorp's Terraform configuration language.

The converted .tf files are suitable for use with the Terraform Loki Provider

Installation

Pre-built Binaries

Download Binary from GitHub releases page.

YAML to HCL

Convert a single YAML file and write generated Terraform config to Stdout

$ loki2tf -f test-fixtures/rules.yaml

resource "loki_rule_group_alerting" "should_fire" {
  name = "should_fire"

  rule {
    alert = "HighPercentageError"

    expr = <<EOT
sum(rate({app="foo", env="production"} |= "error" [5m])) by (job)
  /
sum(rate({app="foo", env="production"}[5m])) by (job)
  > 0.05
EOT

    for = "10m"

    labels = {
      severity = "page"
    }

    annotations = {
      summary = "High request latency"
    }
  }
}

resource "loki_rule_group_alerting" "credentials_leak" {
  name = "credentials_leak"

  rule {
    alert = "http-credentials-leaked"
    expr  = "sum by (cluster, job, pod) (count_over_time({namespace=\"prod\"} |~ \"http(s?)://(\\w+):(\\w+)@\" [5m]) > 0)"
    for   = "10m"

    labels = {
      severity = "critical"
    }

    annotations = {
      message = "{{ $labels.job }} is leaking http basic auth credentials."
    }
  }
}

resource "loki_rule_group_recording" "NginxRules" {
  name = "NginxRules"

  rule {
    record = "nginx:requests:rate1m"

    expr = <<EOT
sum(
  rate({container="nginx"}[1m])
)
EOT

    labels = {
      cluster = "us-central1"
    }
  }
}

Convert a single YAML file and write output to file

$ loki2tf -f test-fixtures/rules.yaml -o rules.tf

Convert a directory of Loki YAML files and write output to stdout

$ loki2tf -f test-fixtures/

Convert a directory of Loki YAML files and write output to file

$ loki2tf -f test-fixtures/ -o /tmp/rules.tf

HCL to YAML

Convert a single HCL file and write yaml output to file

$ loki2tf -r -f test-fixtures/rules.tf -o /tmp/rules.yaml

Convert a directory of Loki HCL files to YAML file

$ loki2tf -r -f test-fixtures -o /tmp/rules.yaml

Building

NOTE Requires a working Golang build environment.

This project uses Golang modules for dependency management, so it can be cloned outside of the $GOPATH.

Clone the repository

$ git clone https://github.com/fgouteroux/loki2tf.git

Build

$ cd loki2tf
$ make build

# Functions

Bytes takes the contents of an HCL file, as bytes, and converts them into a JSON representation of the HCL file.
No description provided by the author
File takes an HCL file and converts it to its JSON representation.
No description provided by the author
No description provided by the author
No description provided by the author

# Structs

No description provided by the author

# Type aliases

No description provided by the author