prometheus: Optionally remove service discovery.
I read this hilarious blog post: https://wejick.wordpress.com/2022/01/29/can-i-have-a-smaller-prometheus/ We can have a smaller Prometheus too. This patch allows users to remove service discovery for five public clouds (AWS, Azure, DigitalOcean, GCP, and Linode) and also Kubernetes, simply by setting the corresponding enable-flag to `false`. I have tested building with each flag as I added it to the list. I also tested running with all six flags set to `false`, and the resulting Prometheus can still handle my orthogonal service-discovery configuration (files). To meet Adam Savage's definition of science, I measured the size of the `prometheus` and `promtool` binaries after adding each flag with `ls -h`. flag | prometheus | promtool --------------|------------|---------- starting size | 84M | 74M AWS | 72M | 61M Azure | 71M | 61M GCE | 64M | 53M k8s | 40M | 53M DO | 39M | 52M Linode | 38M | 51M I did not go as far as the blog post. If folks want, I'll make the rest of the service discovery optional too. I did not shrink the build closure, just the output closure; we still pull all of the various vendored modules into the Nix store during builds. I don't see how to do this in a neat or easy way.
This commit is contained in:
parent
e87db3c8c3
commit
175cc7efd2
1 changed files with 20 additions and 0 deletions
|
@ -9,6 +9,12 @@
|
||||||
, mkYarnPackage
|
, mkYarnPackage
|
||||||
, nixosTests
|
, nixosTests
|
||||||
, fetchpatch
|
, fetchpatch
|
||||||
|
, enableAWS ? true
|
||||||
|
, enableAzure ? true
|
||||||
|
, enableDigitalOcean ? true
|
||||||
|
, enableGCE ? true
|
||||||
|
, enableKubernetes ? true
|
||||||
|
, enableLinode ? true
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -92,6 +98,20 @@ buildGoModule rec {
|
||||||
# webui-codemirror
|
# webui-codemirror
|
||||||
ln -s ${codemirror}/dist web/ui/module/codemirror-promql/dist
|
ln -s ${codemirror}/dist web/ui/module/codemirror-promql/dist
|
||||||
ln -s ${codemirror}/lib web/ui/module/codemirror-promql/lib
|
ln -s ${codemirror}/lib web/ui/module/codemirror-promql/lib
|
||||||
|
|
||||||
|
# Disable some service discovery to shrink binaries.
|
||||||
|
${lib.optionalString (!enableAWS)
|
||||||
|
"sed -i -e '/register aws/d' discovery/install/install.go"}
|
||||||
|
${lib.optionalString (!enableAzure)
|
||||||
|
"sed -i -e '/register azure/d' discovery/install/install.go"}
|
||||||
|
${lib.optionalString (!enableDigitalOcean)
|
||||||
|
"sed -i -e '/register digitalocean/d' discovery/install/install.go"}
|
||||||
|
${lib.optionalString (!enableGCE)
|
||||||
|
"sed -i -e '/register gce/d' discovery/install/install.go"}
|
||||||
|
${lib.optionalString (!enableKubernetes)
|
||||||
|
"sed -i -e '/register kubernetes/d' discovery/install/install.go"}
|
||||||
|
${lib.optionalString (!enableLinode)
|
||||||
|
"sed -i -e '/register linode/d' discovery/install/install.go"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
tags = [ "builtinassets" ];
|
tags = [ "builtinassets" ];
|
||||||
|
|
Loading…
Reference in a new issue