feat: massive refactoring...

This commit is contained in:
Xavier Morel
2025-11-09 00:45:00 +01:00
parent f9446df46d
commit 3245b6b89f
77 changed files with 3233 additions and 582 deletions

View File

@@ -0,0 +1,16 @@
{
tools,
...
}:
{
out = ''
logging {
level = "warn"
}
loki.write "grafana_loki" {
endpoint {
url = "http://${tools.loki_addr}/loki/api/v1/push"
}
}
'';
}

View File

@@ -0,0 +1,44 @@
{
tools,
container,
service,
additional_stages,
...
}:
let
hostname = tools.build_hostname container;
ip = tools.build_ip container;
prefix = "${container}_${service}";
in
{
out = ''
loki.relabel "${prefix}_journal" {
forward_to = []
rule {
source_labels = ["__journal__priority_keyword"]
target_label = "level"
}
rule {
source_labels = ["__journal__SYSLOG_IDENTIFIER"]
target_label = "app"
}
}
loki.source.journal "${prefix}_journal_scrape" {
forward_to = [loki.process.${prefix}_router.receiver]
matches = "_SYSTEMD_UNIT=${service}.service"
relabel_rules = loki.relabel.${prefix}_journal.rules
labels = {
service = "${service}",
host = "${hostname}",
host_ip = "${ip}",
}
}
loki.process "${prefix}_router" {
${additional_stages}
forward_to = [loki.write.grafana_loki.receiver]
}
'';
}

View File

@@ -0,0 +1,51 @@
{ ip, domainname, ... }:
{
out = ''
loki.relabel "mas_journal" {
forward_to = []
rule {
source_labels = ["__journal__priority_keyword"]
target_label = "level"
}
rule {
source_labels = ["__journal__SYSLOG_IDENTIFIER"]
target_label = "app"
}
}
loki.source.journal "mas_journal_scrape" {
forward_to = [loki.process.mas_router.receiver]
matches = "_SYSTEMD_UNIT=matrix-authentication-service.service"
relabel_rules = loki.relabel.mas_journal.rules
labels = {
service = "matrix-authentication-service",
host = "${domainname}",
host_ip = "${ip}",
}
}
loki.process "mas_router" {
stage.regex {
expression = "^(?P<timestamp>\\S+) (?P<level>\\S+) (?P<facility>\\S+) (?P<worker>\\S+) - (?P<message>.*)$"
}
stage.timestamp {
source = "timestamp"
format = "RFC3339Nano"
}
stage.labels {
values = {
level = "",
facility = "",
worker = "",
}
}
stage.output {
source = "message"
}
forward_to = [loki.write.grafana_loki.receiver]
}
'';
}

View File

@@ -0,0 +1,49 @@
{
config,
tools,
container,
...
}:
{
out = ''
prometheus.exporter.unix "default" {
include_exporter_metrics = true
disable_collectors = ["mdadm"]
}
prometheus.scrape "default" {
targets = array.concat(
prometheus.exporter.unix.default.targets,
[{
// Self-collect metrics
job = "alloy",
__address__ = "127.0.0.1:12345",
}],
)
forward_to = [prometheus.relabel.filter_metrics.receiver]
scrape_interval = "60s"
}
prometheus.relabel "filter_metrics" {
rule {
action = "drop"
source_labels = [ "env" ]
regex = "dev"
}
rule {
action = "replace"
regex = "127\\.0\\.0\\.1"
target_label = "instance"
replacement = "${tools.build_ip container}"
}
forward_to = [prometheus.remote_write.metrics_service.receiver]
}
prometheus.remote_write "metrics_service" {
endpoint {
url = "http://${tools.metrics_addr}/api/v1/write"
}
}
'';
}

View File

@@ -0,0 +1,54 @@
{ config, tools, ... }:
let
hostname = tools.build_hostname "proxy";
ip = tools.build_ip "proxy";
in
{
out = ''
loki.relabel "trf_journal" {
forward_to = []
rule {
source_labels = ["__journal__priority_keyword"]
target_label = "level"
}
rule {
source_labels = ["__journal__SYSLOG_IDENTIFIER"]
target_label = "app"
}
}
loki.source.journal "trf_journal_scrape" {
forward_to = [loki.process.trf_router.receiver]
matches = "_SYSTEMD_UNIT=traefik.service"
relabel_rules = loki.relabel.trf_journal.rules
labels = {
service = "traefik",
host = "${hostname}",
host_ip = "${ip}",
}
}
loki.process "trf_router" {
stage.regex {
expression = "^(?P<datetime>\\S+) (?P<level>\\w{3}) (?P<message>.*)$"
}
stage.timestamp {
source = "datetime"
format = "2006-01-02 15:04:05-07:00"
}
stage.replace {
source = "level"
expression = "INF"
replace = "INFO"
}
stage.labels {
values = {
level = "level",
}
}
stage.output {
source = "message"
}
forward_to = [loki.write.grafana_loki.receiver]
}
'';
}