feat: massive refactoring...
This commit is contained in:
16
config/alloy/config.alloy.nix
Normal file
16
config/alloy/config.alloy.nix
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
tools,
|
||||
...
|
||||
}:
|
||||
{
|
||||
out = ''
|
||||
logging {
|
||||
level = "warn"
|
||||
}
|
||||
loki.write "grafana_loki" {
|
||||
endpoint {
|
||||
url = "http://${tools.loki_addr}/loki/api/v1/push"
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
44
config/alloy/default-journal-logger.alloy.nix
Normal file
44
config/alloy/default-journal-logger.alloy.nix
Normal 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]
|
||||
}
|
||||
'';
|
||||
}
|
||||
51
config/alloy/matrix-mas.alloy.nix
Normal file
51
config/alloy/matrix-mas.alloy.nix
Normal 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]
|
||||
}
|
||||
'';
|
||||
}
|
||||
49
config/alloy/metrics.alloy.nix
Normal file
49
config/alloy/metrics.alloy.nix
Normal 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"
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
54
config/alloy/proxy-traefik.alloy.nix
Normal file
54
config/alloy/proxy-traefik.alloy.nix
Normal 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]
|
||||
}
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user