Guest User

Untitled

a guest
Dec 24th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. ## mysqllag check script works! :)
  2.  
  3. [root@virtcent10:/usr/local/nagios/libexec] #./check_mysqllag
  4. + STATE_OK=0
  5. + STATE_WARNING=1
  6. + STATE_CRITICAL=2
  7. + STATE_UNKNOWN=3
  8. + STATE_DEPENDENT=4
  9. + mysqlpath=/usr/bin/
  10. + user=root
  11. + pass=secret
  12. + warn=30
  13. + crit=60
  14. + null=NULL
  15. + usage1='Usage: ./check_mysqllag -uroot -psecret [-w <warn>] [-c <crit>]'
  16. + usage2='<warn> is lag time, in seconds, to warn at. Default is 30.'
  17. + usage3='<crit> is lag time, in seconds, to be critical at. Default is 60.'
  18. + exitstatus=1
  19. + test -n ''
  20. ++ /usr/bin//mysql -uroot -psecret -e 'show slave status\G'
  21. ++ /bin/grep Seconds_Behind_Master
  22. ++ /bin/cut -f2 -d:
  23. + seconds=' 0'
  24. + '[' 0 = NULL ']'
  25. + '[' 0 -lt 60 ']'
  26. + '[' 0 -ge 30 ']'
  27. + '[' 0 -ge 60 ']'
  28. + '[' 0 -lt 30 ']'
  29. + echo OK - Slave is 0 seconds behind
  30. OK - Slave is 0 seconds behind
  31. + exit 0
  32.  
  33. ## mysql on client
  34.  
  35. [root@virtcent10:/usr/local/nagios/libexec] #which mysql
  36.  
  37. /usr/bin/mysql
  38.  
  39.  
  40.  
  41. ## ls -l of script on nagios client
  42.  
  43.  
  44. [root@virtcent10:/usr/local/nagios/libexec] #ls -l check_mysqllag*
  45. lrwxrwxrwx 1 nagios nagios 17 May 1 11:12 check_mysqllag -> check_mysqllag.sh
  46. -rwx------ 1 nagios nagios 1908 May 1 13:20 check_mysqllag.sh
  47.  
  48.  
  49. ## mysqllag service definition
  50.  
  51. define service{
  52. use generic-service ; Name of service template to use
  53. host_name db2
  54. service_description MySQL Lag
  55. check_command check_mysqllag
  56. notifications_enabled 0
  57. }
  58.  
  59.  
  60. ## mysqllag command definition
  61.  
  62. define command{
  63. command_name check_mysqllag
  64. command_line $USER1$/check_mysqllag -H $HOSTADDRESS$ -p 3306 -v $ARG1$ $ARG2$
  65. }
  66.  
  67.  
  68.  
  69.  
  70. ## mysqllag script
  71.  
  72.  
  73. #! /bin/sh -x
  74.  
  75. STATE_OK=0
  76. STATE_WARNING=1
  77. STATE_CRITICAL=2
  78. STATE_UNKNOWN=3
  79. STATE_DEPENDENT=4
  80. mysqlpath='/usr/bin/'
  81. user='root'
  82. pass='secret'
  83. warn=30
  84. crit=60
  85. null="NULL"
  86. usage1="Usage: $0 -u$user -p$pass [-w <warn>] [-c <crit>]"
  87. usage2="<warn> is lag time, in seconds, to warn at. Default is 30."
  88. usage3="<crit> is lag time, in seconds, to be critical at. Default is 60."
  89.  
  90. exitstatus=$STATE_WARNING #default
  91. while test -n "$1"; do
  92. case "$1" in
  93. -c)
  94. crit=$2
  95. shift
  96. ;;
  97. -w)
  98. warn=$2
  99. shift
  100. ;;
  101. -u)
  102. user=$2
  103. shift
  104. ;;
  105. -p)
  106. pass=$2
  107. shift
  108. ;;
  109. -h)
  110. echo $usage1;
  111. echo
  112. echo $usage2;
  113. echo $usage3;
  114. exit $STATE_UNKNOWN
  115. ;;
  116. -H)
  117. host=$2
  118. shift
  119. ;;
  120. *)
  121. echo "Unknown argument: $1"
  122. echo $usage1;
  123. echo
  124. echo $usage2;
  125. echo $usage3;
  126. exit $STATE_UNKNOWN
  127. ;;
  128. esac
  129. shift
  130. done
  131.  
  132. seconds=`$mysqlpath/mysql -u$user -p$pass -e 'show slave status\G' | /bin/grep Seconds_Behind_Master | /bin/cut -f2 -d:`
  133.  
  134. # on the number line, we need to test 6 cases:
  135. # 0-----w-----c----->
  136. # 0, 0<lag<w, w, w<lag<c, c, c<lag
  137. # which we simplify to
  138. # lag>=c, w<=lag<c, 0<=lag<warn
  139.  
  140. # if null, critical
  141. if [ $seconds = $null ]; then
  142. echo CRITICAL - Slave is $seconds seconds behind
  143. exit $STATE_CRITICAL;
  144. fi
  145.  
  146. #w<=lag<c
  147. if [ $seconds -lt $crit ]; then
  148. if [ $seconds -ge $warn ]; then
  149. echo WARNING - Slave is $seconds seconds behind
  150. exit $STATE_WARNING;
  151. fi
  152. fi
  153.  
  154. if [ $seconds -ge $crit ]; then
  155. echo CRITICAL - Slave is $seconds seconds behind
  156. exit $STATE_CRITICAL;
  157. fi
  158.  
  159. # 0<=lag<warn
  160. if [ $seconds -lt $warn ]; then
  161. echo OK - Slave is $seconds seconds behind
  162. exit $STATE_OK;
  163. fi
Add Comment
Please, Sign In to add comment