Last active
August 29, 2015 14:05
-
-
Save kris-lab/06d38265ed8037d8f1b3 to your computer and use it in GitHub Desktop.
Pulsar task example for mms-api client
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'mms' | |
namespace :mongo do | |
set :mms_settings, { | |
:username => 'username', | |
:apikey => 'apikey', | |
:group_id => 'group-id', | |
:cluster_id => 'cluster-id' | |
} | |
filter_mms_backup = {:filter => -> (server) { server.mongo.mms_backup? }} | |
filter_mms_monitoring = {:filter => -> (server) { server.mongo.mms_monitoring? }} | |
filter_arbiters = {:skip_hostfilter => true, :filter => -> (server) { server.mongo.arbiter? }} | |
namespace :mms do | |
# @return MMS::Agent | |
def agent | |
MMS::Agent.new(mms_settings[:username], mms_settings[:apikey]) | |
end | |
# @return MMS::Resource::Group | |
def group | |
agent.findGroup(mms_settings[:group_id]) | |
end | |
# @return MMS::Resource::Cluster | |
def cluster | |
group.cluster(mms_settings[:cluster_id]) | |
end | |
# @return MMS::Resource::Snapshot | |
def snapshot(id) | |
group.cluster(mms_settings[:cluster_id]).snapshot(id) | |
end | |
def health(asserter) | |
last_heartbeat = cluster.last_heartbeat.nil? ? 0 : DateTime.parse(cluster.last_heartbeat) | |
heartbeat_ok = (last_heartbeat + (30/1440.0)) > DateTime.now | |
host_list = group.hosts | |
host_alert_disabled = host_list.reject { |host| host.alerts_enabled } | |
host_profiler_enabled = host_list.reject { |host| !host.profiler_enabled } | |
host_logs_enabled = host_list.reject { |host| !host.logs_enabled } | |
host_unreachable = host_list.reject { |host| (host.last_ping.nil? or (DateTime.parse(host.last_ping) + (30/1440.0)) > DateTime.now) } | |
snapshot_list = cluster.snapshots 1, 1 | |
unless snapshot_list.empty? | |
snapshot_date = snapshot_list.empty? ? DateTime.new : DateTime.parse(snapshot_list.first.created_date) | |
snapshot_ok = (snapshot_date + (6/24.0)) > DateTime.now | |
asserter.call "MMS snapshot for cluster `#{cluster.name}`", snapshot_ok, "snapshot is outdated. last #{snapshot_date}" | |
end | |
asserter.call "MMS agent for `#{cluster.name}`", heartbeat_ok, "is not active since #{cluster.last_heartbeat}" | |
asserter.call "MMS alerts enabled for all hosts of `#{cluster.name}`", host_alert_disabled.empty?, "is not enabled for #{host_alert_disabled.map { |host| host.name }}" | |
asserter.call "MMS profiler disabled for all hosts of `#{cluster.name}`", host_profiler_enabled.empty?, "is not disabled for #{host_profiler_enabled.map { |host| host.name }}" | |
asserter.call "MMS logs disabled for all hosts of `#{cluster.name}`", host_logs_enabled.empty?, "is not disabled for #{host_logs_enabled.map { |host| host.name }}" | |
asserter.call "MMS hosts reachable by agent of `#{cluster.name}`", host_unreachable.empty?, "is unreachable for #{host_unreachable.map { |host| host.name }}" | |
end | |
desc 'Snapshots list' | |
task :snapshots do | |
snapshot_list = cluster.snapshots 1, 10 | |
snapshot_list.each do |snapshot| | |
parts_info = snapshot.parts.map { |part| (part['replicaSetName'].nil? ? part['typeName'] : part['replicaSetName']) } | |
puts "#{snapshot.name} #{snapshot.id} parts: #{parts_info.uniq}" | |
end | |
end | |
desc 'Restorejobs list' | |
task :jobs do | |
job_list = cluster.restorejobs 1, 10 | |
job_list.each do |job| | |
puts "#{job.name} #{job.id} #{job.status_name}" | |
puts "url: #{job.delivery_url}" if job.status_name == 'READY' | |
end | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment