Skip to content
Snippets Groups Projects
Commit 23d2642a authored by Fynn Becker's avatar Fynn Becker :crab:
Browse files

Add monitor-postgrest local check

parent 555c96ef
Branches
No related tags found
No related merge requests found
#!/usr/bin/env bash
instance_names=()
instance_admin_ports=()
{% for instance_name, instance_conf in instances.items() %}
instance_names+=("{{ instance_name }}")
instance_admin_ports+=("{{ instance_conf['config']['admin-server-port'] }}")
{% endfor %}
function check_endpoint() {
admin_port="$1"
endpoint="$2"
url="127.0.0.1:$admin_port/$endpoint"
response=$(wget --quiet --spider --server-response --output-document - "$url" 2>&1)
wget_exit_code=$?
if [ $wget_exit_code -ne 0 ]; then
return $wget_exit_code
fi
status_code=$(awk 'NR==1{print $2}' <<<"$response")
echo "$status_code"
}
function get_status_detail() {
status_code="$1"
good="$2"
bad="$3"
if [ "$status_code" = 200 ]; then
echo "$good"
else
echo "$bad"
fi
}
function get_checkmk_status() {
status_codes=("$@")
for code in "${status_codes[@]}"; do
if [ "$code" != 200 ]; then
echo 2
return
fi
done
echo 0
}
function crit_on_non_zero() {
instance_name="$1"
exit_code="$2"
if [ "$exit_code" != 0 ]; then
echo "2 \"$instance_name PostgREST Status\" - Failed to connect (wget exit code: $exit_code)"
exit 0
fi
}
function check_instance() {
instance_name="$1"
instance_port="$2"
live_status_code=$(check_endpoint "$instance_port" "live")
crit_on_non_zero "$instance_name" $?
ready_status_code=$(check_endpoint "$instance_port" "ready")
crit_on_non_zero "$instance_name" $?
status_codes=("$live_status_code" "$ready_status_code")
checkmk_status=$(get_checkmk_status "${status_codes[@]}")
live_status_detail=$(get_status_detail "$live_status_code" "running" "dead")
ready_status_detail=$(get_status_detail "$ready_status_code" "correct" "invalid")
checkmk_status_detail="PostgREST $live_status_detail (status: $live_status_code)"
checkmk_status_detail+=", internal state $ready_status_detail (status: $ready_status_code)"
echo "$checkmk_status \"$instance_name PostgREST Status\" - $checkmk_status_detail"
}
for i in "${!instance_names[@]}"; do
check_instance "${instance_names[$i]}" "${instance_admin_ports[$i]}"
done
{% set instances = salt['pillar.get']("postgrest:instances") %}
hsh_checkmk_monitor_postgrest_plugin:
file.managed:
- name: /usr/lib/check_mk_agent/local/monitor-postgrest
- source: salt://checkmk/custom-files/local/monitor-postgrest
- template: jinja
- context:
instances: {{ instances }}
- mode: 755
- user: root
- group: root
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment