Created
February 18, 2015 12:09
-
-
Save idlecool/bc3f6d2620d7ae672ea5 to your computer and use it in GitHub Desktop.
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
#!/usr/bin/env ruby | |
require 'socket' | |
require 'redis' | |
require 'aws-sdk' | |
ip_address = Socket.ip_address_list.select do |ip| | |
ip.ipv4_private? | |
end.first.ip_address | |
keys = %w(used_memory used_memory_rss used_memory_peak used_memory_lua | |
used_cpu_sys used_cpu_user used_cpu_sys_children used_cpu_user_children | |
rdb_changes_since_last_save rdb_bgsave_in_progress rdb_last_save_time | |
rdb_last_bgsave_status rdb_last_bgsave_time_sec rdb_current_bgsave_time_sec | |
connected_clients total_connections_received total_commands_processed | |
instantaneous_ops_per_sec rejected_connections expired_keys evicted_keys | |
keyspace_hits keyspace_misses) | |
redis = Redis.new | |
info = redis.info | |
filter_info = info.select {|k,v| keys.include? k} | |
begin | |
filter_info["rdb_last_bgsave_status"] = | |
filter_info["rdb_last_bgsave_status"].upcase.split("").map do |s| | |
s.ord.to_s | |
end.join | |
rescue StandardError | |
filter_info["rdb_last_bgsave_status"] = 100 | |
end | |
complete_payload = filter_info.map do |key, value| | |
{:metric_name => key, :value => value} | |
end | |
cloudwatch = Aws::CloudWatch::Client.new(region: 'us-east-1') | |
namespace = "redis/#{ip_address}" | |
complete_payload.each_slice(20) do |payload| | |
cloudwatch.put_metric_data( | |
:namespace => namespace, | |
:metric_data => payload | |
) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment