Guest User

Untitled

a guest
Nov 29th, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require 'rubygems'
  3. require 'pg'
  4. require 'timeout'
  5. require 'nagios-probe'
  6.  
  7. def master_connection_string
  8. {:user => 'nagios', :dbname => 'nagios', :host => 'master', :password => 'nagios'}
  9. end
  10.  
  11. def slave_connection_string
  12. {:user => 'nagios', :dbname => 'nagios', :host => 'slave', :password => 'nagios'}
  13. end
  14.  
  15. $stamp = Random.rand(100)
  16.  
  17. class ReplicationProbe< Nagios::Probe
  18. def check_crit
  19. conn = PG.connect( master_connection_string )
  20. conn.transaction do |conn|
  21. conn.exec("drop table if exists lag_table; create table lag_table (stamp integer); insert into lag_table VALUES( '#{$stamp}' );")
  22. end
  23. status = Timeout::timeout(60) {
  24. slave_stamp = -1
  25. sleep 1 #ERROR: could not open relation with OID
  26. while (slave_stamp != $stamp)
  27. conn = PG.connect( slave_connection_string )
  28. conn.transaction do |conn|
  29. slave_stamp = conn.exec("select stamp from lag_table limit 1;").first["stamp"].to_i
  30. end
  31. sleep 1 #Timeout probe
  32. end
  33. }
  34. end
  35.  
  36. def check_warn
  37. false
  38. end
  39.  
  40. def crit_message
  41. "Lag is critical!"
  42. end
  43.  
  44. def warn_message
  45. "nothing to message"
  46. end
  47.  
  48. def ok_message
  49. "nothing to see here"
  50. end
  51. end
  52.  
  53. begin
  54. options = { }
  55. probe = ReplicationProbe.new(options)
  56. probe.run
  57. rescue Exception => e
  58. puts "unknown: #{e}"
  59. exit Nagios::UNKNOWN
  60. end
  61.  
  62. puts probe.message
  63. exit probe.retval
Add Comment
Please, Sign In to add comment