diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2019-12-08 16:22:56 +0100 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2019-12-08 16:22:56 +0100 |
commit | 16b80abd57bb215d0e72f3983f997a007743b8fb (patch) | |
tree | 19b24a9c9e2334c069721671e4e2a5d53d8efaec /modules/private/monitoring/plugins | |
parent | 6015a3b52c3b155ac444aeb39950c38a5e653101 (diff) | |
download | Nix-16b80abd57bb215d0e72f3983f997a007743b8fb.tar.gz Nix-16b80abd57bb215d0e72f3983f997a007743b8fb.tar.zst Nix-16b80abd57bb215d0e72f3983f997a007743b8fb.zip |
Add openldap replication
Diffstat (limited to 'modules/private/monitoring/plugins')
-rwxr-xr-x | modules/private/monitoring/plugins/check_openldap_replication | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/modules/private/monitoring/plugins/check_openldap_replication b/modules/private/monitoring/plugins/check_openldap_replication new file mode 100755 index 0000000..b511ff2 --- /dev/null +++ b/modules/private/monitoring/plugins/check_openldap_replication | |||
@@ -0,0 +1,54 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | STATE_OK=0 | ||
4 | STATE_WARNING=1 | ||
5 | STATE_CRITICAL=2 | ||
6 | STATE_UNKNOWN=3 | ||
7 | |||
8 | distant_host="$1" | ||
9 | replication_dn="$2" | ||
10 | replication_pw="$3" | ||
11 | base="$4" | ||
12 | config="$5" | ||
13 | |||
14 | to_date() { | ||
15 | i="$1" | ||
16 | i=$(echo "$i" | grep contextCSN | cut -d":" -f2 | sed -e "s/\s//g") | ||
17 | i=$(echo "$i" | cut -d"#" -f1) | ||
18 | i=$(echo "$i" | cut -d"." -f1) | ||
19 | echo "$i" | ||
20 | } | ||
21 | |||
22 | # ldap | ||
23 | remote_ldap=$(ldapsearch -H $distant_host -D "$replication_dn" -y "$replication_pw" -b "$base" -s base -LLL contextCSN ) | ||
24 | exit_code_remote=$? | ||
25 | remote_ldap=$(to_date "$remote_ldap") | ||
26 | |||
27 | # slapcat | ||
28 | local_ldap=$(slapcat -b "$base" -f "$config" -a "(entryDN=$base)") | ||
29 | exit_code_local=$? | ||
30 | local_ldap=$(to_date "$local_ldap") | ||
31 | |||
32 | offset=$(($remote_ldap - $local_ldap)) | ||
33 | |||
34 | if [[ $exit_code_remote -ne 0 || $exit_code_local -ne 0 ]]; then | ||
35 | echo "UNKNOWN - Impossible to run ldap command" | ||
36 | exit $STATE_UNKNOWN | ||
37 | elif [[ -z "$offset" ]]; then | ||
38 | echo "UNKNOWN - No replication found" | ||
39 | exit $STATE_UNKNOWN | ||
40 | else | ||
41 | output="Replication lag for openldap is ${offset}s" | ||
42 | LC_ALL=C lag=$(printf "%.*f" 0 $lag) | ||
43 | |||
44 | if [[ $offset -lt 5 ]]; then | ||
45 | echo "OK - $output" | ||
46 | exit $STATE_OK | ||
47 | elif [[ $offset -lt 10 ]]; then | ||
48 | echo "WARNING - $output" | ||
49 | exit $STATE_WARNING | ||
50 | else | ||
51 | echo "CRITICAL - $output" | ||
52 | exit $STATE_CRITICAL | ||
53 | fi | ||
54 | fi | ||