Commit 55da958f0520

Vincent Demeester <vincent@sbr.pm>
2025-12-01 13:20:28
feat: Add Prometheus exportarr metrics for *arr services
Configure native NixOS prometheus exporters for all *arr services on rhea: - Sonarr (port 9707) - Radarr (port 9708) - Lidarr (port 9709) - Prowlarr (port 9710) - Readarr (port 9711) - Bazarr (port 9712) Add corresponding Prometheus scrape configuration on sakhalin to collect metrics from all exportarr endpoints. Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 5735f39
secrets/rhea/exportarr-bazarr-apikey.age
@@ -0,0 +1,9 @@
+age-encryption.org/v1
+-> piv-p256 ItIHHA A9hwXCgs/ev1A8oWVj4dqCMmFCW6ITufhbi5KrOJs3lf
+A/rkK4BA2vv8rtQJTxAlhLZUOdSvIXh9b1iNiWoApQ0
+-> piv-p256 ViCCtQ AxrJTFH8M111zlDPeApvVVs7kkcMd7FC/xHYwjwQb7BI
+ETiUivhfvx24zJeWdUUCimnwAI8Ms3ieXRn4RAyj4yw
+-> ssh-ed25519 EboMJg 32TAFsUklnNe3vsNhFIglr3kMhOGU1cPurA8vEVZk1g
+l+jjTyr3uWr4IZJQ1NGEo5/9DOaTGEpQ/8EzkjFixx8
+--- 55L7DUbIb9ho3a6lXvSifluUX7WadH1LNpBcgjp5YYc
+��e&�ݗ�˟�H�ϩ�)ÒQ�%�!�D�6k�Y�a����(Pc}9����P�(ʒlC�
\ No newline at end of file
secrets/rhea/exportarr-lidarr-apikey.age
Binary file
secrets/rhea/exportarr-prowlarr-apikey.age
@@ -0,0 +1,9 @@
+age-encryption.org/v1
+-> piv-p256 ItIHHA AifGTye8OAWA92+wciVK0NJ2piPftyeC2l0uztu6mWHn
+WK7pCLidvOXJ6KEO38ov9qdTEWcTiTwsrxnHCOFDkAw
+-> piv-p256 ViCCtQ A/PR263rdhAzVO1JLHWTyuAxTRwKID42pOcTUq5SIDgc
+imsyCQiYwO2UQAa5r/7P20h07/9q9myLziLnYl9JAo0
+-> ssh-ed25519 EboMJg hkdN+xZMfhjGyZAMb9K8UCrWNPENtba++nM4UTmQg0M
+pUT1/om6gDTr3STicKVl/Cgp9w1XGFSIvQFFqTFqaxQ
+--- G5/1XXXNkgOy/dhWIemd7ZhAvRzGJhjjtQM3wBVAccI
+�E�\\��`:I=�6в
 �a�}���X��|�lU�4��x�E?���E�Hͽ%�r^�u�)�o��
\ No newline at end of file
secrets/rhea/exportarr-radarr-apikey.age
@@ -0,0 +1,9 @@
+age-encryption.org/v1
+-> piv-p256 ItIHHA AjLlinf9yxNQ4uzQZnAitJ+PdXEeW9bY28qx9+AAClVe
+90V0AgKBOAT5qlHCB0lqcBEM7eb3J5w8YnP3+5ugssU
+-> piv-p256 ViCCtQ Aymxx1ev3vX4Sd81zfUZayzVNr6liiDU8jh0zCiaHnFK
+MJxmIIqJ+hwxfuT8hvqIxvOyAXfU9eKeom+QJXmq+Bs
+-> ssh-ed25519 EboMJg aHuFMjLB113ZVJTc7dhZF6dF3+al620k6XuOF0fkgAI
+VX8Q3Wmx3795z/8Onzf0tKSqZam1spvj/mUsw7BYE/U
+--- EmC4YAYCLAZgJqyY06BZ5TV7bNJvaQF51QUetnAoZGE
+��ыoJ�l��)�حDZ�	c��h��|��Z
v����EPR*�a�l����"U2���'ȋ�
\ No newline at end of file
secrets/rhea/exportarr-readarr-apikey.age
@@ -0,0 +1,9 @@
+age-encryption.org/v1
+-> piv-p256 ItIHHA A8EmqA7bR5SUa7BO2cuZrVw7ovOKZ9ILb13CeGnYeuwW
+E1PWAEEXkvA0KviYCnpV9aWYTNxENROOEWM3wPrH1HE
+-> piv-p256 ViCCtQ AjPDYSaSDT51ny/xEoSveIw904NF+hhxc8mA55Bqyq1g
+A8REQgzGqGm19xPjBzq1kl2lFvWaHzLr7jE9tWtNqu4
+-> ssh-ed25519 EboMJg Zfd9ytyDyrrOT+eY/sPFlSTmqbpE+6VbRbOzg4t9qVY
+iQBRFWDhLwgNJCiTJOinMf9SYd5jBgmTTf4ssoQ7AW4
+--- 0YvPkUmpuHGisHWkhHXtmMH4T+u2FzR1u0azf84TfD8
+�r �$�f\��<�t�ȴao	�j@6&Ӕk��WzT��)�Q㺜�`>�#��&���*˰��9��
\ No newline at end of file
secrets/rhea/exportarr-sonarr-apikey.age
@@ -0,0 +1,9 @@
+age-encryption.org/v1
+-> piv-p256 ItIHHA Are5x/WoqbWK3V9FZkviHV7nVUzKzxMV6tDcs7HNdpxY
+VivQe60bjXjHAaMCSxmvsC+HmBgss5Zkrp4sXzy+X/8
+-> piv-p256 ViCCtQ AonSnFtXMRvGbcDnQegzeOgG70XZRP6fN9626tqmyOcU
+SH7Lc5x4VGjBY3fQrsRU7IhrOKUka5o1JmJaMSWshHM
+-> ssh-ed25519 EboMJg 399pJNll1BUzvD9Mg/Y1Z3ls1lSOQa9ZksSk67V4UxE
+2xe7sXh3kZ4hRCCgDgc45ldTnXYkhGI/CDtWGY9Mgxw
+--- 5zBjeGSauwvbxRpnlZ9OuGb06QZ4p/L1N/Fjpj1XhpQ
+UŽ��Dz�@ʃډD&�%R�/�e�]|�dP�E�/�Ɂ:T��]�t�����F���-"�a��
\ No newline at end of file
systems/rhea/extra.nix
@@ -18,6 +18,25 @@
     group = "traefik";
   };
 
+  age.secrets."exportarr-sonarr-apikey" = {
+    file = ../../secrets/rhea/exportarr-sonarr-apikey.age;
+  };
+  age.secrets."exportarr-radarr-apikey" = {
+    file = ../../secrets/rhea/exportarr-radarr-apikey.age;
+  };
+  age.secrets."exportarr-lidarr-apikey" = {
+    file = ../../secrets/rhea/exportarr-lidarr-apikey.age;
+  };
+  age.secrets."exportarr-prowlarr-apikey" = {
+    file = ../../secrets/rhea/exportarr-prowlarr-apikey.age;
+  };
+  age.secrets."exportarr-readarr-apikey" = {
+    file = ../../secrets/rhea/exportarr-readarr-apikey.age;
+  };
+  age.secrets."exportarr-bazarr-apikey" = {
+    file = ../../secrets/rhea/exportarr-bazarr-apikey.age;
+  };
+
   users.users.vincent.linger = true;
 
   services = {
@@ -397,6 +416,44 @@
       group = "users";
       openFirewall = true;
     };
+    prometheus.exporters = {
+      exportarr-sonarr = {
+        enable = true;
+        port = 9707;
+        url = "http://localhost:8989";
+        apiKeyFile = config.age.secrets."exportarr-sonarr-apikey".path;
+      };
+      exportarr-radarr = {
+        enable = true;
+        port = 9708;
+        url = "http://localhost:7878";
+        apiKeyFile = config.age.secrets."exportarr-radarr-apikey".path;
+      };
+      exportarr-lidarr = {
+        enable = true;
+        port = 9709;
+        url = "http://localhost:8686";
+        apiKeyFile = config.age.secrets."exportarr-lidarr-apikey".path;
+      };
+      exportarr-prowlarr = {
+        enable = true;
+        port = 9710;
+        url = "http://localhost:9696";
+        apiKeyFile = config.age.secrets."exportarr-prowlarr-apikey".path;
+      };
+      exportarr-readarr = {
+        enable = true;
+        port = 9711;
+        url = "http://localhost:8787";
+        apiKeyFile = config.age.secrets."exportarr-readarr-apikey".path;
+      };
+      exportarr-bazarr = {
+        enable = true;
+        port = 9712;
+        url = "http://localhost:6767";
+        apiKeyFile = config.age.secrets."exportarr-bazarr-apikey".path;
+      };
+    };
   };
 
   security.acme = {
systems/sakhalin/extra.nix
@@ -97,6 +97,21 @@
             }
           ];
         }
+        {
+          job_name = "exportarr";
+          static_configs = [
+            {
+              targets = [
+                "rhea.sbr.pm:9707" # sonarr
+                "rhea.sbr.pm:9708" # radarr
+                "rhea.sbr.pm:9709" # lidarr
+                "rhea.sbr.pm:9710" # prowlarr
+                "rhea.sbr.pm:9711" # readarr
+                "rhea.sbr.pm:9712" # bazarr
+              ];
+            }
+          ];
+        }
       ];
       exporters.node = {
         enable = true;
secrets.nix
@@ -93,5 +93,11 @@ in
   "secrets/minica.pem.age".publicKeys = users ++ systems;
   "secrets/shikoku/aria2rpcsecret.age".publicKeys = users ++ [ shikoku ];
   "secrets/rhea/gandi.env.age".publicKeys = users ++ [ rhea ];
+  "secrets/rhea/exportarr-sonarr-apikey.age".publicKeys = users ++ [ rhea ];
+  "secrets/rhea/exportarr-radarr-apikey.age".publicKeys = users ++ [ rhea ];
+  "secrets/rhea/exportarr-lidarr-apikey.age".publicKeys = users ++ [ rhea ];
+  "secrets/rhea/exportarr-prowlarr-apikey.age".publicKeys = users ++ [ rhea ];
+  "secrets/rhea/exportarr-readarr-apikey.age".publicKeys = users ++ [ rhea ];
+  "secrets/rhea/exportarr-bazarr-apikey.age".publicKeys = users ++ [ rhea ];
   "secrets/demeter/mosquitto-homeassistant-password.age".publicKeys = users ++ [ demeter ];
 }