mirror of
https://github.com/kmein/niveum
synced 2026-03-18 19:11:08 +01:00
Compare commits
5 Commits
2efb8d7d8a
...
d21ff3e731
| Author | SHA1 | Date | |
|---|---|---|---|
| d21ff3e731 | |||
| 7a918319b7 | |||
| 5524f3b92b | |||
| fe8af09148 | |||
| d9ca1e673d |
2
ci.nix
2
ci.nix
@@ -38,7 +38,7 @@ let
|
||||
"spotify/password"
|
||||
];
|
||||
systemSecrets = let basic = [ "retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem"]; in {
|
||||
zaatar = ensureFiles ([ "moodle.token" "telegram/moodle-dl.token" ] ++ basic);
|
||||
zaatar = ensureFiles ([ "moodle.token" "telegram/moodle-dl.token" "mpd-web.key" ] ++ basic);
|
||||
kabsa = ensureFiles basic;
|
||||
manakish = ensureFiles basic;
|
||||
makanek = ensureFiles ([
|
||||
|
||||
@@ -18,7 +18,6 @@ in {
|
||||
"x-systemd.device-timeout=1"
|
||||
"x-systemd.idle-timeout=1min"
|
||||
"x-systemd.requires=tinc.retiolum.service"
|
||||
"x-systemd.requires=wpa_supplicant.service"
|
||||
"user"
|
||||
"_netdev"
|
||||
];
|
||||
|
||||
6
flake.lock
generated
6
flake.lock
generated
@@ -158,11 +158,11 @@
|
||||
"retiolum": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1643137996,
|
||||
"narHash": "sha256-Fvmq2i8l9drzU91uvHmx0eeqr06/o+y28RgVmwcTYZ4=",
|
||||
"lastModified": 1643369411,
|
||||
"narHash": "sha256-FRfEQdRJxVF6w41jgjQXDtK5YxIjDh5S4acA0FbwPyE=",
|
||||
"owner": "krebs",
|
||||
"repo": "retiolum",
|
||||
"rev": "bbed4ffd74987bb9a577ae6290ed446c3f27f594",
|
||||
"rev": "23e04565a0360d31605a6c6cdc1becb5b9f76f32",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -6,7 +6,7 @@ let
|
||||
importJSON = path: builtins.fromJSON (builtins.readFile path);
|
||||
|
||||
di-fm-name = name: "${name} | DI.FM";
|
||||
di-fm = name: "http://prem2.di.fm/${name}_hi?${di-fm-key}";
|
||||
di-fm = name: "http://prem3.di.fm/${name}_hi?${di-fm-key}";
|
||||
|
||||
soma-fm-name = name: "${name} | soma.fm";
|
||||
soma-fm = name: "http://ice1.somafm.com/${name}-128-aac";
|
||||
|
||||
@@ -27,7 +27,7 @@ in
|
||||
alert = "ServiceDown";
|
||||
expr = ''node_systemd_unit_state{state="failed"} == 1'';
|
||||
annotations = {
|
||||
summary = "{{$labels.job}}: Service {{$labels.name}} failed to start.";
|
||||
summary = "{{$labels.name}} failed on {{$labels.job}}";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -35,8 +35,7 @@ in
|
||||
for = "10m";
|
||||
expr = ''(node_filesystem_free_bytes{mountpoint="/"} * 100) / node_filesystem_size_bytes{mountpoint="/"} < ${toString diskFreeThreshold}'';
|
||||
annotations = {
|
||||
summary = "{{ $labels.job }}: Filesystem is running out of space soon.";
|
||||
description = ''The root disk of {{ $labels.job }} has {{ $value | printf "%.2f" }}% free disk space (threshold at ${toString diskFreeThreshold}%).'';
|
||||
summary = ''{{ $labels.job }} running out of space: {{ $value | printf "%.2f" }}% < ${toString diskFreeThreshold}%'';
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -45,7 +44,7 @@ in
|
||||
expr = ''node_filesystem_free_bytes{mountpoint="/"} ''
|
||||
+ ''and predict_linear(node_filesystem_free_bytes{mountpoint="/"}[2d], 7*24*3600) <= 0'';
|
||||
annotations = {
|
||||
summary = "{{$labels.job}}: Filesystem is running out of space in 7 days.";
|
||||
summary = "{{$labels.job}} running out of space in 7 days";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -53,62 +52,62 @@ in
|
||||
expr = ''node_load15 / on(job) count(node_cpu_seconds_total{mode="system"}) by (job) >= 1.0'';
|
||||
for = "10m";
|
||||
annotations = {
|
||||
summary = "{{$labels.job}}: Running on high load: {{$value}}";
|
||||
summary = "{{$labels.job}} running on high load: {{$value}}";
|
||||
};
|
||||
}
|
||||
{
|
||||
alert = "HighRAM";
|
||||
expr = "node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes < node_memory_MemTotal_bytes * 0.1";
|
||||
for = "1h";
|
||||
annotations.summary = "{{$labels.job}}: Using lots of RAM.";
|
||||
annotations.summary = "{{$labels.job}} using lots of RAM";
|
||||
}
|
||||
{
|
||||
alert = "UptimeMonster";
|
||||
expr = "time() - node_boot_time_seconds > 2592000";
|
||||
annotations.summary = "{{$labels.job}}: up for more than 30 days.";
|
||||
annotations.summary = "uptime monster {{$labels.job}} up for more than 30 days";
|
||||
}
|
||||
{
|
||||
alert = "HostDown";
|
||||
expr = ''up == 0'';
|
||||
for = "5m";
|
||||
annotations = {
|
||||
summary = "Host {{ $labels.job }} down for 5 minutes.";
|
||||
summary = "{{ $labels.job }} seeming down since 5 minutes";
|
||||
};
|
||||
}
|
||||
{
|
||||
alert = "Reboot";
|
||||
expr = "time() - node_boot_time_seconds < 300";
|
||||
annotations.summary = "{{$labels.job}}: Reboot";
|
||||
annotations.summary = "{{$labels.job}} rebooted";
|
||||
}
|
||||
{
|
||||
alert = "ProbeFailed";
|
||||
expr = "probe_success == 0";
|
||||
for = "5m";
|
||||
annotations.summary = "{{$labels.instance}}: probe failed";
|
||||
annotations.summary = "HTTP probe failed for {{$labels.instance}}";
|
||||
}
|
||||
{
|
||||
alert = "SlowProbe";
|
||||
expr = "avg_over_time(probe_http_duration_seconds[1m]) > 1";
|
||||
for = "5m";
|
||||
annotations.summary = "{{$labels.instance}}: HTTP probe slow";
|
||||
annotations.summary = "HTTP probe slow for {{$labels.instance}}";
|
||||
}
|
||||
{
|
||||
alert = "HttpStatusCode";
|
||||
expr = "probe_http_status_code != 0 AND (probe_http_status_code <= 199 OR probe_http_status_code >= 400)";
|
||||
for = "5m";
|
||||
annotations.summary = "{{$labels.instance}}: status code {{$value}}";
|
||||
annotations.summary = "status code {{$value}} for {{$labels.instance}}";
|
||||
}
|
||||
{
|
||||
alert = "SslExpirySoon";
|
||||
expr = "probe_ssl_earliest_cert_expiry - time() < 86400 * 30";
|
||||
for = "5m";
|
||||
annotations.summary = "{{$labels.instance}}: SSL certificate expires in 30 days";
|
||||
annotations.summary = "SSL certificate for {{$labels.instance}} expires in 30 days";
|
||||
}
|
||||
{
|
||||
alert = "SslExpiry";
|
||||
expr = "probe_ssl_earliest_cert_expiry - time() <= 0";
|
||||
for = "5m";
|
||||
annotations.summary = "{{$labels.instance}}: SSL certificate has expired";
|
||||
annotations.summary = "SSL certificate for {{$labels.instance}} has expired";
|
||||
}
|
||||
];
|
||||
}];
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
user = config.users.extraUsers.kiosk.name;
|
||||
extraArguments = [ "-s" ]; # allow vt switching
|
||||
program =
|
||||
let startUrls = [ "https://open.spotify.com" "https://youtube.com" "http://bvg.kmein.r" ];
|
||||
let startUrls = [ "https://youtube.com" "http://radio.kmein.r" ];
|
||||
in pkgs.writers.writeDash "kiosk-browser" ''
|
||||
while true; do
|
||||
${pkgs.brave}/bin/brave \
|
||||
|
||||
@@ -81,6 +81,7 @@ in
|
||||
stations = lib.lists.imap0 (id: {desc ? "", logo ? "https://picsum.photos/seed/${builtins.hashString "md5" stream}/300", stream, station}: { inherit id desc logo stream station; }) streams;
|
||||
stationsJson = (pkgs.formats.json {}).generate "stations.json" stations;
|
||||
in {
|
||||
enable = false;
|
||||
wantedBy = [ "tuna.service" ];
|
||||
startAt = "hourly";
|
||||
script = ''
|
||||
@@ -95,7 +96,6 @@ in
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedGzipSettings = true;
|
||||
@@ -110,5 +110,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
*/
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user