diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/monitoring/prometheus/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/monitoring/prometheus/default.nix | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/default.nix new file mode 100644 index 000000000000..b511faf42fb6 --- /dev/null +++ b/nixpkgs/pkgs/servers/monitoring/prometheus/default.nix @@ -0,0 +1,134 @@ +{ stdenv +, lib +, go +, buildGoModule +, fetchFromGitHub +, fetchurl +, nixosTests +, enableAWS ? true +, enableAzure ? true +, enableConsul ? true +, enableDigitalOcean ? true +, enableDNS ? true +, enableEureka ? true +, enableGCE ? true +, enableHetzner ? true +, enableIONOS ? true +, enableKubernetes ? true +, enableLinode ? true +, enableMarathon ? true +, enableMoby ? true +, enableNomad ? true +, enableOpenstack ? true +, enableOVHCloud ? true +, enablePuppetDB ? true +, enableScaleway ? true +, enableTriton ? true +, enableUyuni ? true +, enableVultr ? true +, enableXDS ? true +, enableZookeeper ? true +}: + +let + version = "2.49.1"; + webUiStatic = fetchurl { + url = "https://github.com/prometheus/prometheus/releases/download/v${version}/prometheus-web-ui-${version}.tar.gz"; + hash = "sha256-cHMzu7/WquRvbCUlAs4U6PrLP4PAigdYOyNbvxNoeIA="; + }; +in +buildGoModule rec { + pname = "prometheus"; + inherit version; + + outputs = [ "out" "doc" "cli" ]; + + src = fetchFromGitHub { + owner = "prometheus"; + repo = "prometheus"; + rev = "v${version}"; + hash = "sha256-cqUyjRL+T7ARGcUWMCaeWMo7DR1gvPp08maNz9a3RG0="; + }; + + vendorHash = "sha256-fDT7YrnUfS93yseo+1mLrSGPBewm7CpcHPCz1kxM6Uo="; + + excludedPackages = [ "documentation/prometheus-mixin" ]; + + postPatch = '' + tar -C web/ui -xzf ${webUiStatic} + + patchShebangs scripts + + # Enable only select service discovery to shrink binaries. + ( + true # prevent bash syntax error when all plugins are disabled + ${lib.optionalString enableAWS "echo - github.com/prometheus/prometheus/discovery/aws"} + ${lib.optionalString enableAzure "echo - github.com/prometheus/prometheus/discovery/azure"} + ${lib.optionalString enableConsul "echo - github.com/prometheus/prometheus/discovery/consul"} + ${lib.optionalString enableDigitalOcean "echo - github.com/prometheus/prometheus/discovery/digitalocean"} + ${lib.optionalString enableDNS "echo - github.com/prometheus/prometheus/discovery/dns"} + ${lib.optionalString enableEureka "echo - github.com/prometheus/prometheus/discovery/eureka"} + ${lib.optionalString enableGCE "echo - github.com/prometheus/prometheus/discovery/gce"} + ${lib.optionalString enableHetzner "echo - github.com/prometheus/prometheus/discovery/hetzner"} + ${lib.optionalString enableIONOS "echo - github.com/prometheus/prometheus/discovery/ionos"} + ${lib.optionalString enableKubernetes "echo - github.com/prometheus/prometheus/discovery/kubernetes"} + ${lib.optionalString enableLinode "echo - github.com/prometheus/prometheus/discovery/linode"} + ${lib.optionalString enableMarathon "echo - github.com/prometheus/prometheus/discovery/marathon"} + ${lib.optionalString enableMoby "echo - github.com/prometheus/prometheus/discovery/moby"} + ${lib.optionalString enableNomad "echo - github.com/prometheus/prometheus/discovery/nomad"} + ${lib.optionalString enableOpenstack "echo - github.com/prometheus/prometheus/discovery/openstack"} + ${lib.optionalString enableOVHCloud "echo - github.com/prometheus/prometheus/discovery/ovhcloud"} + ${lib.optionalString enablePuppetDB "echo - github.com/prometheus/prometheus/discovery/puppetdb"} + ${lib.optionalString enableScaleway "echo - github.com/prometheus/prometheus/discovery/scaleway"} + ${lib.optionalString enableTriton "echo - github.com/prometheus/prometheus/discovery/triton"} + ${lib.optionalString enableUyuni "echo - github.com/prometheus/prometheus/discovery/uyuni"} + ${lib.optionalString enableVultr "echo - github.com/prometheus/prometheus/discovery/vultr"} + ${lib.optionalString enableXDS "echo - github.com/prometheus/prometheus/discovery/xds"} + ${lib.optionalString enableZookeeper "echo - github.com/prometheus/prometheus/discovery/zookeeper"} + ) > plugins.yml + ''; + + preBuild = '' + if [[ -d vendor ]]; then GOARCH= make -o assets assets-compress plugins; fi + ''; + + tags = [ "builtinassets" ]; + + ldflags = + let + t = "github.com/prometheus/common/version"; + in + [ + "-s" + "-w" + "-X ${t}.Version=${version}" + "-X ${t}.Revision=unknown" + "-X ${t}.Branch=unknown" + "-X ${t}.BuildUser=nix@nixpkgs" + "-X ${t}.BuildDate=unknown" + "-X ${t}.GoVersion=${lib.getVersion go}" + ]; + + preInstall = '' + mkdir -p "$out/share/doc/prometheus" "$out/etc/prometheus" + cp -a $src/documentation/* $out/share/doc/prometheus + cp -a $src/console_libraries $src/consoles $out/etc/prometheus + ''; + + postInstall = '' + moveToOutput bin/promtool $cli + ''; + + # https://hydra.nixos.org/build/130673870/nixlog/1 + # Test mock data uses 64 bit data without an explicit (u)int64 + doCheck = !(stdenv.isDarwin || stdenv.hostPlatform.parsed.cpu.bits < 64); + + passthru.tests = { inherit (nixosTests) prometheus; }; + + meta = with lib; { + description = "Service monitoring system and time series database"; + homepage = "https://prometheus.io"; + license = licenses.asl20; + maintainers = with maintainers; [ fpletz willibutz Frostman ]; + }; +} |