Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- servers = [{name: 'dion-direct-01', url: 'dion-direct-01', method: 'ping'},
- {name: 'dion-edge-01', url: 'dion-edge-01', method: 'ping'},
- {name: 'dion-caweb-01', url: 'dion-caweb-01', method: 'ping'},
- {name: 'dion-cadb-01', url: 'dion-cadb-01', method: 'ping'},
- {name: 'dion-viewdb-01', url: 'dion-viewdb-01', method: 'ping'},
- {name: 'dion-docker-01', url: 'dion-docker-01', method: 'ping'}
- ]
- SCHEDULER.every '30s', :first_in => 0 do |job|
- statuses = Array.new
- # check status for each server
- servers.each do |server|
- if server[:method] == 'http'
- uri = URI.parse(server[:url])
- http = Net::HTTP.new(uri.host, uri.port)
- if uri.scheme == "https"
- http.use_ssl=true
- http.verify_mode = OpenSSL::SSL::VERIFY_NONE
- end
- request = Net::HTTP::Get.new(uri.request_uri)
- if response.code == "200"
- result = 1
- else
- result = 0
- end
- elsif server[:method] == 'ping'
- ping_count = 10
- result = `ping -q -c #{ping_count} #{server[:url]}`
- if ($?.exitstatus == 0)
- result = 1
- else
- result = 0
- end
- end
- if result == 1
- arrow = "icon-ok-sign"
- color = "green"
- else
- arrow = "icon-warning-sign"
- color = "red"
- end
- statuses.push({label: server[:name], value: result, arrow: arrow, color: color})
- end
- # print statuses to dashboard
- send_event('server_status', {items: statuses})
- end
Advertisement
Add Comment
Please, Sign In to add comment