Guest User

Untitled

a guest
Mar 9th, 2015
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.15 KB | None | 0 0
  1. servers = [{name: 'dion-direct-01', url: 'dion-direct-01', method: 'ping'},
  2.                 {name: 'dion-edge-01', url: 'dion-edge-01', method: 'ping'},
  3.                 {name: 'dion-caweb-01', url: 'dion-caweb-01', method: 'ping'},
  4.                 {name: 'dion-cadb-01', url: 'dion-cadb-01', method: 'ping'},
  5.                 {name: 'dion-viewdb-01', url: 'dion-viewdb-01', method: 'ping'},
  6.                 {name: 'dion-docker-01', url: 'dion-docker-01', method: 'ping'}
  7.         ]
  8.  
  9. SCHEDULER.every '30s', :first_in => 0 do |job|
  10.  
  11.         statuses = Array.new
  12.  
  13.         # check status for each server
  14.         servers.each do |server|
  15.                 if server[:method] == 'http'
  16.                         uri = URI.parse(server[:url])
  17.                         http = Net::HTTP.new(uri.host, uri.port)
  18.                         if uri.scheme == "https"
  19.                                 http.use_ssl=true
  20.                                 http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  21.                         end
  22.                         request = Net::HTTP::Get.new(uri.request_uri)
  23.  
  24.                         if response.code == "200"
  25.                                 result = 1
  26.                          else
  27.                                 result = 0
  28.                          end
  29.                 elsif server[:method] == 'ping'
  30.                         ping_count = 10
  31.                         result = `ping -q -c #{ping_count} #{server[:url]}`
  32.                         if ($?.exitstatus == 0)
  33.                                 result = 1
  34.                         else
  35.                                 result = 0
  36.                         end
  37.                 end
  38.  
  39.                 if result == 1
  40.                         arrow = "icon-ok-sign"
  41.                         color = "green"
  42.                 else
  43.                         arrow = "icon-warning-sign"
  44.                         color = "red"
  45.                 end
  46.  
  47.                 statuses.push({label: server[:name], value: result, arrow: arrow, color: color})
  48.         end
  49.  
  50.         # print statuses to dashboard
  51.         send_event('server_status', {items: statuses})
  52. end
Advertisement
Add Comment
Please, Sign In to add comment