nix/pkgs: add prometheus-snmp-config
This commit is contained in:
parent
a763c85e3d
commit
a71f4a47f9
3 changed files with 96 additions and 0 deletions
|
@ -25,5 +25,6 @@
|
|||
hp-rom = import ./hp-rom.nix args;
|
||||
enigma = import ./enigma.nix args;
|
||||
alertmanager-discord = pkgs.callPackage ./alertmanager-discord.nix {};
|
||||
prometheus-snmp-config = import ./prometheus-snmp-config args;
|
||||
} // (import ./heptapod-runner.nix args)
|
||||
// (import ./lightspeed args)
|
||||
|
|
84
nix/pkgs/prometheus-snmp-config/default.nix
Normal file
84
nix/pkgs/prometheus-snmp-config/default.nix
Normal 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
|
||||
'';
|
||||
}
|
11
nix/pkgs/prometheus-snmp-config/generator.yml
Normal file
11
nix/pkgs/prometheus-snmp-config/generator.yml
Normal 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
|
Loading…
Reference in a new issue