- Update ports for Alloy, Grafana, Loki, Prometheus, Promtail, Tempo, and Uptime Kuma to new ranges - Add Arrtrix content management commands and subscriptions - Implement Radarr and Sonarr client logic for movie and series management - Add matrix commands for download and subscription management - Add subscription repository with database schema and logic - Update Arrtrix config and example config for content section - Update help text and command processor to include new commands - Update vendor hash for Arrtrix package
80 lines
1.9 KiB
Nix
80 lines
1.9 KiB
Nix
{ config, lib, namespace, ... }:
|
|
let
|
|
inherit (builtins) toString;
|
|
inherit (lib) mkEnableOption mkIf;
|
|
|
|
cfg = config.${namespace}.services.observability.alloy;
|
|
|
|
httpPort = 9700;
|
|
otlpGrpcPort = 9701;
|
|
otlpHttpPort = 9702;
|
|
tempoOtlpGrpcPort = 9602;
|
|
in
|
|
{
|
|
options.${namespace}.services.observability.alloy = {
|
|
enable = mkEnableOption "enable Grafana Alloy";
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
services.alloy = {
|
|
enable = true;
|
|
configPath = "/etc/alloy";
|
|
extraFlags = [
|
|
"--disable-reporting"
|
|
"--server.http.listen-addr=0.0.0.0:${toString httpPort}"
|
|
"--storage.path=/var/lib/alloy"
|
|
];
|
|
};
|
|
|
|
environment.etc."alloy/config.alloy".text = ''
|
|
otelcol.receiver.otlp "default" {
|
|
grpc {
|
|
endpoint = "127.0.0.1:${toString otlpGrpcPort}"
|
|
}
|
|
|
|
http {
|
|
endpoint = "127.0.0.1:${toString otlpHttpPort}"
|
|
}
|
|
|
|
output {
|
|
metrics = [otelcol.processor.batch.metrics.input]
|
|
traces = [otelcol.processor.batch.traces.input]
|
|
}
|
|
}
|
|
|
|
otelcol.processor.batch "metrics" {
|
|
output {
|
|
metrics = [otelcol.exporter.prometheus.default.input]
|
|
}
|
|
}
|
|
|
|
otelcol.processor.batch "traces" {
|
|
output {
|
|
traces = [otelcol.exporter.otlp.tempo.input]
|
|
}
|
|
}
|
|
|
|
otelcol.exporter.prometheus "default" {
|
|
forward_to = [prometheus.remote_write.local.receiver]
|
|
}
|
|
|
|
prometheus.remote_write "local" {
|
|
endpoint {
|
|
url = "http://127.0.0.1:${toString config.services.prometheus.port}/api/v1/write"
|
|
}
|
|
}
|
|
|
|
otelcol.exporter.otlp "tempo" {
|
|
client {
|
|
endpoint = "127.0.0.1:${toString tempoOtlpGrpcPort}"
|
|
|
|
tls {
|
|
insecure = true
|
|
}
|
|
}
|
|
}
|
|
'';
|
|
|
|
networking.firewall.allowedTCPPorts = [ httpPort ];
|
|
};
|
|
}
|