nginx.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/bash
  2. ##### OPTIONS VERIFICATION #####
  3. if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
  4. exit 1
  5. fi
  6. ##### PARAMETERS #####
  7. RESERVED="$1"
  8. METRIC="$2"
  9. STATSURL="$3"
  10. CURL="/usr/bin/curl"
  11. CACHE_TTL="55"
  12. CACHE_FILE="/var/spool/zabbix/zabbix.nginx.`echo $STATSURL | md5sum | cut -d" " -f1`.cache"
  13. EXEC_TIMEOUT="1"
  14. NOW_TIME=`date '+%s'`
  15. ##### RUN #####
  16. if [ -s "${CACHE_FILE}" ]; then
  17. CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
  18. else
  19. CACHE_TIME=0
  20. fi
  21. DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
  22. #
  23. if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
  24. sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
  25. elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
  26. echo "" >> "${CACHE_FILE}" # !!!
  27. DATACACHE=`${CURL} --insecure -s "${STATSURL}" 2>&1`
  28. echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
  29. chmod 640 "${CACHE_FILE}"
  30. fi
  31. #
  32. if [ "${METRIC}" = "active" ]; then
  33. cat "${CACHE_FILE}" | grep "Active connections" | cut -d':' -f2
  34. fi
  35. if [ "${METRIC}" = "accepts" ]; then
  36. cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f2
  37. fi
  38. if [ "${METRIC}" = "handled" ]; then
  39. cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f3
  40. fi
  41. if [ "${METRIC}" = "requests" ]; then
  42. cat "${CACHE_FILE}" | sed -n '3p' | cut -d" " -f4
  43. fi
  44. if [ "${METRIC}" = "reading" ]; then
  45. cat "${CACHE_FILE}" | grep "Reading" | cut -d':' -f2 | cut -d' ' -f2
  46. fi
  47. if [ "${METRIC}" = "writing" ]; then
  48. cat "${CACHE_FILE}" | grep "Writing" | cut -d':' -f3 | cut -d' ' -f2
  49. fi
  50. if [ "${METRIC}" = "waiting" ]; then
  51. cat "${CACHE_FILE}" | grep "Waiting" | cut -d':' -f4 | cut -d' ' -f2
  52. fi
  53. #
  54. exit 0