50 lines
1.7 KiB
Text
50 lines
1.7 KiB
Text
#!/usr/bin/env nu
|
|
# Derived variables for vector bundle rendering.
|
|
# Generates vector_config_toml from params.sources and params.sinks.
|
|
|
|
def main [component_json: string]: nothing -> nothing {
|
|
let d = ($component_json | from json)
|
|
|
|
let workspace = ($d | get -o params.sinks.loki.labels.workspace | default "libre-wuji")
|
|
let deploy_env = ($d | get -o params.sinks.loki.labels.env | default "production")
|
|
let loki_url = ($d | get -o params.sinks.loki.endpoint | default "http://loki.observability.svc.cluster.local:3100")
|
|
let prom_url = ($d | get -o params.sinks.prometheus_remote.endpoint
|
|
| default "http://prometheus.observability.svc.cluster.local:9090/api/v1/write")
|
|
let label_sel = ($d | get -o params.sources.kubernetes_logs.extra_label_selector
|
|
| default "")
|
|
|
|
let source_extra = if ($label_sel | is-not-empty) {
|
|
$"extra_label_selector = \"($label_sel)\"\n"
|
|
} else { "" }
|
|
|
|
let vector_config_toml = $"[api]
|
|
enabled = true
|
|
address = \"0.0.0.0:8686\"
|
|
|
|
[sources.kubernetes_logs]
|
|
type = \"kubernetes_logs\"
|
|
($source_extra)
|
|
[transforms.add_labels]
|
|
type = \"remap\"
|
|
inputs = [\"kubernetes_logs\"]
|
|
source = '''
|
|
.workspace = \"($workspace)\"
|
|
.env = \"($deploy_env)\"
|
|
'''
|
|
|
|
[sinks.loki]
|
|
type = \"loki\"
|
|
inputs = [\"add_labels\"]
|
|
endpoint = \"($loki_url)\"
|
|
encoding.codec = \"json\"
|
|
|
|
[sinks.loki.labels]
|
|
workspace = \"{{ .workspace }}\"
|
|
env = \"{{ .env }}\"
|
|
namespace = \"{{ kubernetes.namespace_labels.name }}\"
|
|
pod = \"{{ kubernetes.pod_name }}\"
|
|
container = \"{{ kubernetes.container_name }}\"
|
|
node = \"{{ kubernetes.pod_node_name }}\""
|
|
|
|
{ vector_config_toml: $vector_config_toml } | to json --raw | print
|
|
}
|