aboutsummaryrefslogtreecommitdiff
path: root/pkgs/check_aws_rds
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/check_aws_rds')
-rw-r--r--pkgs/check_aws_rds/check_aws_rds32
-rw-r--r--pkgs/check_aws_rds/check_aws_rds.conf41
-rw-r--r--pkgs/check_aws_rds/default.nix47
3 files changed, 120 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..916cdf6
--- /dev/null
+++ b/pkgs/check_aws_rds/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, pkgs, fetchurl, python27Packages }:
+let
+
+ rev = "7f4a9852a0e470698d90afc0036d2738a4906477";
+
+ 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 = "1ps7ag2hmbbzg3w6h76l6j4ijigfhlvmirj8h7v9qyrdcgzlsjma";
+ };
+
+ 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" ];
+
+ phases = [ "installPhase" "fixupPhase" ];
+ nativeBuildInputs = with pkgs; [ makeWrapper ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+
+ cp ${./check_aws_rds} $out/bin/check_aws_rds
+ cp ${./check_aws_rds.conf} $conf
+
+ chmod +x "$out/bin/"*
+
+ substituteInPlace "$conf" \
+ --replace check_aws_rds "$out/bin/check_aws_rds"
+
+ wrapProgram "$out/bin/check_aws_rds" \
+ --prefix PATH : "${pmp-check-aws-rds}/bin:${pkgs.bind.dnsutils}/bin"
+ '';
+}