diff --git a/nginx/mdm-nginx-active.xml b/nginx/mdm-nginx-active.xml new file mode 100644 index 0000000..1ccc646 --- /dev/null +++ b/nginx/mdm-nginx-active.xml @@ -0,0 +1,607 @@ + + + 3.4 + 2021-06-14T11:47:45Z + + + MDM + + + MyTemplates + + + + + + + + {mdm_nginx_agent active:nginx[active,{$NGINX_STATS_URL}].last(0)}>{$NGINX_CON_NUM} + 0 + + Nginx: many active connections on {HOST.NAME} + 0 + + + 0 + 2 + + 0 + 0 + + + + + {mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].avg(240)}>{$NGINX_REQ_NUM} + 0 + + Nginx: many requests on {HOST.NAME} + 0 + + + 0 + 2 + + 0 + 0 + + + Nginx: too many requests on {HOST.NAME} + {mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].avg(240)}>{$NGINX_REQ_NUM}*1.5 + + + + + + + {mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].last(0)}>{$NGINX_REQ_NUM} + 0 + + Nginx: many requests on {HOSTNAME} + 0 + + + 0 + 2 + + 0 + 0 + + + Nginx: too many requests on {HOSTNAME} + {mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].last(0)}>{$NGINX_REQ_NUM}*1.3 + + + + + + + {mdm_nginx_agent active:proc.num[nginx].last(0)}<1 + 0 + + Nginx: nginx is not running on {HOST.NAME} + 0 + + + 0 + 5 + + 0 + 0 + + + + + {mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].avg(240)}>{$NGINX_REQ_NUM}*1.5 + 0 + + Nginx: too many requests on {HOST.NAME} + 0 + + + 0 + 3 + + 0 + 0 + + + + + {mdm_nginx_agent active:nginx[requests,{$NGINX_STATS_URL}].last(0)}>{$NGINX_REQ_NUM}*1.3 + 0 + + Nginx: too many requests on {HOSTNAME} + 0 + + + 0 + 3 + + 0 + 0 + + + + + + + Nginx: Connections + 600 + 200 + 0.0000 + 100.0000 + 0 + 1 + 0 + 1 + 0 + 0.0000 + 0.0000 + 0 + 0 + 0 + 0 + + + 0 + 4 + 3333FF + 1 + 2 + 0 + + mdm_nginx_agent active + nginx[active,{$NGINX_STATS_URL}] + + + + 1 + 0 + FF6666 + 1 + 2 + 0 + + mdm_nginx_agent active + nginx[writing,{$NGINX_STATS_URL}] + + + + 2 + 0 + EEEE00 + 1 + 2 + 0 + + mdm_nginx_agent active + nginx[reading,{$NGINX_STATS_URL}] + + + + 3 + 0 + 00CC00 + 1 + 2 + 0 + + mdm_nginx_agent active + nginx[waiting,{$NGINX_STATS_URL}] + + + + + + Nginx: Requests + 600 + 200 + 0.0000 + 100.0000 + 0 + 1 + 0 + 1 + 0 + 0.0000 + 0.0000 + 0 + 0 + 0 + 0 + + + 1 + 5 + FF3333 + 1 + 2 + 0 + + mdm_nginx_agent active + nginx[requests,{$NGINX_STATS_URL}] + + + + 2 + 2 + 00EE00 + 1 + 2 + 0 + + mdm_nginx_agent active + nginx[accepts,{$NGINX_STATS_URL}] + + + + + + diff --git a/nginx/nginx-stats.conf b/nginx/nginx-stats.conf new file mode 100755 index 0000000..36c57f1 --- /dev/null +++ b/nginx/nginx-stats.conf @@ -0,0 +1,2 @@ +UserParameter=nginx[*],/etc/zabbix/scripts/nginx-stats.sh "none" "$1" "$2" + diff --git a/nginx/nginx-stats.sh b/nginx/nginx-stats.sh new file mode 100755 index 0000000..766fa28 --- /dev/null +++ b/nginx/nginx-stats.sh @@ -0,0 +1,54 @@ +#!/bin/bash +##### OPTIONS VERIFICATION ##### +if [[ -z "$1" || -z "$2" || -z "$3" ]]; then + exit 1 +fi +##### PARAMETERS ##### +RESERVED="$1" +METRIC="$2" +STATSURL="$3" +CURL="/usr/bin/curl" +CACHE_TTL="55" +CACHE_FILE="/tmp/zabbix.nginx.`echo $STATSURL | md5sum | cut -d" " -f1`.cache" +EXEC_TIMEOUT="1" +NOW_TIME=`date '+%s'` +##### RUN ##### +if [ -s "${CACHE_FILE}" ]; then + CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"` +else + CACHE_TIME=0 +fi +DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME})) +# +if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then + sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME})) +elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then + echo "" >> "${CACHE_FILE}" # !!! + DATACACHE=`${CURL} --insecure -s "${STATSURL}" 2>&1` + echo "${DATACACHE}" > "${CACHE_FILE}" # !!! + chmod 640 "${CACHE_FILE}" +fi +# +if [ "${METRIC}" = "active" ]; then + cat "${CACHE_FILE}" | grep "Active connections" | cut -d':' -f2 +fi +if [ "${METRIC}" = "accepts" ]; then + cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f2 +fi +if [ "${METRIC}" = "handled" ]; then + cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f3 +fi +if [ "${METRIC}" = "requests" ]; then + cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f4 +fi +if [ "${METRIC}" = "reading" ]; then + cat "${CACHE_FILE}" | grep "Reading" | cut -d':' -f2 | cut -d' ' -f2 +fi +if [ "${METRIC}" = "writing" ]; then + cat "${CACHE_FILE}" | grep "Writing" | cut -d':' -f3 | cut -d' ' -f2 +fi +if [ "${METRIC}" = "waiting" ]; then + cat "${CACHE_FILE}" | grep "Waiting" | cut -d':' -f4 | cut -d' ' -f2 +fi +# +exit 0