feat(octoprint): metrics

This commit is contained in:
arcnmx 2024-07-13 14:08:37 -07:00
parent 1ead7f237e
commit 2c9219ba87
8 changed files with 91 additions and 18 deletions

View file

@ -37,6 +37,9 @@ in {
packages.x86_64-linux.openwebrxplus
# TODO: packages.aarch64-linux.openwebrxplus
];
print.inputs = [
legacyPackages.x86_64-linux.pkgs.cura-octoprint
];
systemd2mqtt.inputs = [
packages.x86_64-linux.systemd2mqtt
];

View file

@ -22,7 +22,9 @@
portName,
}: let
port = service.ports.${portName};
in "${mkAddress6 (access.getAddressFor system.name "lan")}:${toString port.port}";
# TODO: this properly
getAddressFor = if port.status.gatus.client.network or "ip" == "ip4" then "getAddress4For" else "getAddressFor";
in "${mkAddress6 (access.${getAddressFor} system.name "lan")}:${toString port.port}";
mkServiceConfig = system: serviceName: let
inherit (service.prometheus) exporter;
service = system.exports.services.${serviceName};

View file

@ -9,6 +9,7 @@ in {
config.exports.services.octoprint = {config, ...}: {
displayName = mkAlmostOptionDefault "OctoPrint";
id = mkAlmostOptionDefault "print";
prometheus.exporter.metricsPath = "/plugin/prometheus_exporter/metrics";
nixos = {
serviceAttr = "octoprint";
assertions = let
@ -33,6 +34,7 @@ in {
enable = mkAlmostOptionDefault true;
gatus.client.network = mkAlmostOptionDefault "ip4";
};
prometheus.exporter.enable = mkAlmostOptionDefault true;
};
};
};

View file

@ -1,4 +1,5 @@
{
pkgs,
config,
access,
lib,
@ -12,6 +13,18 @@ in {
services.octoprint = {
enable = mkDefault true;
# host = mkIf config.networking.enableIPv6 "::";
plugins = python3Packages: with python3Packages; [
prometheus-exporter
abl-expert
bedlevelvisualizer
#displayprogress / displaylayerprogress?
marlingcodedocumentation
printtimegenius
stlviewer
#octoklipper?
#octolapse?
#dashboard?
];
extraConfig = mkMerge [
# https://docs.octoprint.org/en/master/configuration/config_yaml.html
{

View file

@ -1,15 +0,0 @@
final: prev: {
cura-octoprint = final.cura.override {
plugins = [ final.curaPlugins.octoprint ];
};
curaengine = prev.curaengine.override {
inherit (final.python311Packages) libarcus;
};
cura = prev.cura.override {
python3 = final.python311;
};
curaPlugins = prev.curaPlugins.override {
python3Packages = final.python311Packages;
};
}

View file

@ -4,22 +4,22 @@ in rec {
default = nixlib.composeManyExtensions [
barcodebuddy
builders
cura
krb5
minecraft
nfs
nginx
openwebrx
print
samba
];
barcodebuddy = import ./barcodebuddy.nix;
cura = import ./cura.nix;
krb5 = import ./krb5.nix;
minecraft = import ./minecraft.nix;
nfs = import ./nfs.nix;
nginx = import ./nginx.nix;
samba = import ./samba.nix;
openwebrx = import ./openwebrxplus.nix;
print = import ./print.nix;
builders = import ./builders.nix;
deploy-rs = inputs.deploy-rs.overlays.default or inputs.deploy-rs.overlay;
systemd2mqtt = inputs.systemd2mqtt.overlays.default;

44
overlays/print.nix Normal file
View file

@ -0,0 +1,44 @@
final: prev: let
inherit (final) lib;
in {
cura-octoprint = final.cura.override {
plugins = [ final.curaPlugins.octoprint ];
};
octoprint = let
mapPlugin = python3Packages: _: plugin: plugin.override {
inherit python3Packages;
inherit (python3Packages) buildPlugin;
};
packageOverrides = python3Packages: python3Packages'prev: lib.mapAttrs (mapPlugin python3Packages) {
inherit (final.octoprintPlugins) prometheus-exporter;
};
octoprint = prev.octoprint.override (old: {
packageOverrides = lib.composeExtensions old.packageOverrides or (_: _: {}) packageOverrides;
});
in octoprint;
octoprintPlugins = let
pythonPackages = final.octoprint.python.pkgs;
octoprintPlugins'overlay = final.callPackage (final.path + "/pkgs/applications/misc/octoprint/plugins.nix") { };
octoprintPlugins'nixpkgs = octoprintPlugins'overlay pythonPackages pythonPackages;
octoprintPlugins = prev.octoprintPlugins or octoprintPlugins'nixpkgs;
callPackage = final.newScope {
inherit (final.octoprintPlugins) buildPlugin;
};
in octoprintPlugins // {
callPackage = prev.octoprintPlugins.callPackage or callPackage;
prometheus-exporter = callPackage ../packages/octoprint/prometheus-exporter.nix { };
};
curaengine = prev.curaengine.override {
inherit (final.python311Packages) libarcus;
};
cura = prev.cura.override {
python3 = final.python311;
};
curaPlugins = prev.curaPlugins.override {
python3Packages = final.python311Packages;
};
}

View file

@ -0,0 +1,24 @@
{ buildPlugin
, python3Packages
, fetchFromGitHub
}: let
version = "0.2.3";
in buildPlugin {
pname = "OctoPrint-Prometheus-Exporter";
inherit version;
src = fetchFromGitHub {
owner = "tg44";
repo = "OctoPrint-Prometheus-Exporter";
rev = version;
sha256 = "sha256-pw5JKMWQNAkFkUADR2ue6R4FOmFIeapw2k5FLqJ6NQg=";
};
propagatedBuildInputs = with python3Packages; [
prometheus-client
];
meta = {
homepage = "https://github.com/tg44/OctoPrint-Prometheus-Exporter";
};
}