diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2016-09-23 12:41:01 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2016-09-23 12:41:49 +0300 |
commit | af337a12e6f084556400fa93c71304ad63f1efa6 (patch) | |
tree | ad5125cbfb2e812f4a507b182b875526b2a2d0e9 /pkgs/check_aws_rds | |
download | nixsap-af337a12e6f084556400fa93c71304ad63f1efa6.tar.gz |
Initial commit
Diffstat (limited to 'pkgs/check_aws_rds')
-rw-r--r-- | pkgs/check_aws_rds/check_aws_rds | 32 | ||||
-rw-r--r-- | pkgs/check_aws_rds/check_aws_rds.conf | 41 | ||||
-rw-r--r-- | pkgs/check_aws_rds/default.nix | 46 |
3 files changed, 119 insertions, 0 deletions
diff --git a/pkgs/check_aws_rds/check_aws_rds b/pkgs/check_aws_rds/check_aws_rds new file mode 100644 index 0000000..d4fd965 --- /dev/null +++ b/pkgs/check_aws_rds/check_aws_rds @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +set -euo pipefail + +cmd=( pmp-check-aws-rds ) + +getId () { + local endpoint="$1" + local c=0 + while [[ "$endpoint" != *.*.*.rds.amazonaws.com* ]]; do + endpoint=$(dig "$endpoint" CNAME +short) + (( ++c )) + if (( c > 10 )); then + echo "failed to resolve '$1'" >&2 + exit 255 + fi + done + + cmd+=( -r $(echo "$endpoint" | cut -d. -f3) ) + cmd+=( -i $(echo "$endpoint" | cut -d. -f1) ) +} + +while [ $# -gt 0 ]; do + case "$1" in + -m|-w|-c) cmd+=( $1 $2 ); shift 2;; + -f) export BOTO_CONFIG="$2"; shift 2;; + -h) getId "$2"; shift 2;; + *) echo "$0: unsupported argument: $1" >&2; exit 1;; + esac +done +exec "${cmd[@]}" + diff --git a/pkgs/check_aws_rds/check_aws_rds.conf b/pkgs/check_aws_rds/check_aws_rds.conf new file mode 100644 index 0000000..2f6a84e --- /dev/null +++ b/pkgs/check_aws_rds/check_aws_rds.conf @@ -0,0 +1,41 @@ +template CheckCommand "aws-rds-common" { + import "plugin-check-command" + + command = [ "check_aws_rds" ] + + arguments = { + "-h" = "$aws_rds_address$" + "-f" = "$aws_rds_boto_config$" + "-m" = "$aws_rds_metric$" + "-w" = "$aws_rds_warning$" + "-c" = "$aws_rds_critical$" + } + vars.aws_rds_address = "$address$" +} + +object CheckCommand "aws-rds-status" { + import "aws-rds-common" + vars.aws_rds_metric = "status" +} + +object CheckCommand "aws-rds-load" { + import "aws-rds-common" + vars.aws_rds_metric = "load" + vars.aws_rds_critical = "99,97,95" + vars.aws_rds_warning = "95,93,90" +} + +object CheckCommand "aws-rds-memory" { + import "aws-rds-common" + vars.aws_rds_metric = "memory" + vars.aws_rds_critical = "5" + vars.aws_rds_warning = "9" +} + +object CheckCommand "aws-rds-storage" { + import "aws-rds-common" + vars.aws_rds_metric = "storage" + vars.aws_rds_critical = "5" + vars.aws_rds_warning = "15" +} + diff --git a/pkgs/check_aws_rds/default.nix b/pkgs/check_aws_rds/default.nix new file mode 100644 index 0000000..5e91b33 --- /dev/null +++ b/pkgs/check_aws_rds/default.nix @@ -0,0 +1,46 @@ +{ stdenv, pkgs, fetchurl, python27Packages }: +let + + rev = "556191f6d775f0505fb142c02f13a60ba7829ed9"; + + pmp-check-aws-rds = stdenv.mkDerivation rec { + name = "pmp-check-aws-rds"; + src = fetchurl { + url = "https://raw.githubusercontent.com/percona/percona-monitoring-plugins/${rev}/nagios/bin/pmp-check-aws-rds.py"; + sha256 = "0ghq6nl2529llxz1icf5hyg75k2hjzdkzfwgrs0d69r3f62w4q5y"; + }; + + buildInputs = with python27Packages; [ python wrapPython ]; + pythonPath = with python27Packages; [ boto ]; + phases = [ "installPhase" "fixupPhase" ]; + + installPhase = '' + mkdir -p $out/bin + cp $src $out/bin/${name} + chmod +x $out/bin/${name} + wrapPythonPrograms + ''; + + }; + +in stdenv.mkDerivation { + name = "check_aws_rds"; + outputs = [ "out" "conf" ]; + unpackPhase = ":"; + installPhase = '' + mkdir -p $out/bin + + cp ${./check_aws_rds} $out/bin/check_aws_rds + cp ${./check_aws_rds.conf} $conf + + substituteInPlace "$out/bin/"* \ + --replace pmp-check-aws-rds '${pmp-check-aws-rds}/bin/pmp-check-aws-rds' \ + --replace dig '${pkgs.bind}/bin/dig' + + substituteInPlace "$conf" \ + --replace check_aws_rds "$out/bin/check_aws_rds" + + chmod +x "$out/bin/"* + + ''; +} |