nix/pkgs: add prometheus-snmp-config

This commit is contained in:
Luke Granger-Brown 2021-03-14 00:51:11 +00:00
parent a763c85e3d
commit a71f4a47f9
3 changed files with 96 additions and 0 deletions

View file

@ -25,5 +25,6 @@
hp-rom = import ./hp-rom.nix args; hp-rom = import ./hp-rom.nix args;
enigma = import ./enigma.nix args; enigma = import ./enigma.nix args;
alertmanager-discord = pkgs.callPackage ./alertmanager-discord.nix {}; alertmanager-discord = pkgs.callPackage ./alertmanager-discord.nix {};
prometheus-snmp-config = import ./prometheus-snmp-config args;
} // (import ./heptapod-runner.nix args) } // (import ./heptapod-runner.nix args)
// (import ./lightspeed args) // (import ./lightspeed args)

View file

@ -0,0 +1,84 @@
{ depot, pkgs, ... }:
let
inherit (pkgs) prometheus-snmp-exporter curl cacert unzip p7zip;
hpMibs = pkgs.stdenvNoCC.mkDerivation rec {
pname = "hp-mibs";
version = "11.50";
src = pkgs.fetchurl {
url = "https://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1580676047/v188074/upd11.50mib.tar.gz";
hash = "sha256:0jxxcirbvhlqrflj0j2vzddqaq7wl7v3g7xi0gcjmxlj6rfkk7i9";
};
sourceRoot = ".";
buildPhase = ":";
installPhase = ''
mkdir $out
cp $(ls | grep -i '\.mib$') $out
'';
};
mibsDrv = pkgs.stdenvNoCC.mkDerivation {
pname = "prometheus-snmp-mibs";
version = "lukegb-${prometheus-snmp-exporter.version}";
outputHashMode = "recursive";
outputHash = "sha256:164zv3cvxj9i1parww9nx8a7xihiklwyn7635r0xqdfj365g2fdh";
buildInputs = [
curl
p7zip
prometheus-snmp-exporter
unzip
];
passthru.hp = hpMibs;
CURL_OPTS = "--retry 3 --retry-delay 3 --compressed --location --fail";
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
src = prometheus-snmp-exporter.src;
unpackPhase = ''
mkdir $NIX_BUILD_TOP/build
cp $src/generator/Makefile $NIX_BUILD_TOP/build/Makefile
'';
buildPhase = ''
pushd $NIX_BUILD_TOP/build
make CURL_OPTS="$CURL_OPTS"
# Additional mibs...
cp ${hpMibs}/cpqhost.mib ./mibs/
awk 'BEGIN { p=1 } /INDEX\s+{.+cpqRackServerBladeRack,/ { print " INDEX { cpqRackServerBladeIndex }"; p=0 } /}/ { if (p==0) { p=2 } } { if (p==1) { print } if (p==2) { p=1 } }' ${hpMibs}/cpqrack.mib > ./mibs/cpqrack.mib
'';
installPhase = ''
cp -R $NIX_BUILD_TOP/build/mibs $out
'';
};
in
pkgs.stdenvNoCC.mkDerivation {
pname = "prometheus-snmp-config";
version = "lukegb";
src = prometheus-snmp-exporter.src;
passthru.mibs = mibsDrv;
buildInputs = [ prometheus-snmp-exporter ];
MIBDIRS = mibsDrv;
unpackPhase = ''
mkdir $NIX_BUILD_TOP/build
cat $src/generator/generator.yml ${./generator.yml} > $NIX_BUILD_TOP/build/generator.yml
'';
buildPhase = ''
pushd $NIX_BUILD_TOP/build
generator generate
'';
installPhase = ''
cp $NIX_BUILD_TOP/build/snmp.yml $out
'';
}

View file

@ -0,0 +1,11 @@
# This isn't really a proper YAML file; it is just appended to the generator.yml from upstream.
hpe:
walk:
- sysUpTime
- cpqRackPowerSupplyTable
- cpqRackServerBladeTable
lookups:
- source_indexes:
- cpqRackServerBladeIndex
lookup: cpqRackServerBladeName