resque-info 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 3c00e4ae07f3b8411edb5a31fa18cca3871b3377fb67feb820d1ff987454954a
4
+ data.tar.gz: 8137b55e2200a20b8fdccdd282416da467877f31b8c15a9fe96db7471d0b77c8
5
+ SHA512:
6
+ metadata.gz: 99f84c627d34ac5abd9f1dc35faf0edc564904b0ec313400a9d70235fea50f088bd94c6ce14d83dad514877cf53754c56272c40abd10336bf0b908db71b66325
7
+ data.tar.gz: a4de273c6e69ab855a987584413eca42f945e9a3a024dd23e4b29b15867b0d7ef5970625ed39b04feb3cf3e6a29a9bb99f0442f6c25cfbdc5a232bb87154cd0d
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in date_format.gemspec
4
+ #gemspec
5
+ gem 'rubygems-update'
6
+ gem 'resque'
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # ResqueInfo
2
+
3
+ ResqueInfo gem will help to .
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'resque-info'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install resque-info
18
+
19
+ ## Usage
20
+
21
+ Try this snippet of code on ruby irb
22
+
23
+ require 'resque-info'
24
+ puts ResqueInfo.info # => 44323547714622714350878229787161
25
+
26
+
27
+ ## Contributing
28
+
29
+ 1. Fork it ( https://github.com/[my-github-username]/resque-info/fork )
30
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
31
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
32
+ 4. Push to the branch (`git push origin my-new-feature`)
33
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,41 @@
1
+ module ResqueInfo
2
+ # BATCH_SIZE = Constants::BATCH_SIZE
3
+
4
+ def self.queues
5
+ Resque.queues
6
+ end
7
+
8
+ def self.failed_jobs
9
+ Resque::Failure
10
+ end
11
+
12
+ def self.failed_jobs_count
13
+ failed_jobs.count
14
+ end
15
+
16
+ def self.failed_jobs_count_by_class
17
+ klass_name = []
18
+ (0...failed_jobs_count).step(BATCH_SIZE) do |start|
19
+ failed_jobs.all(start, BATCH_SIZE).each do |job|
20
+ next if job.nil?
21
+ klass_name << job['payload']['class'].to_s
22
+ rescue StandardError => error
23
+ logger_rescue('Failed-Job-Count-By-Class', error)
24
+ end
25
+ end
26
+ klass_name.group_by(&:itself).transform_values(&:count)
27
+ end
28
+
29
+ def self.failed_jobs_count_by_queue
30
+ job_queue = []
31
+ (0...failed_jobs_count).step(BATCH_SIZE) do |start|
32
+ failed_jobs.all(start, BATCH_SIZE).each do |job|
33
+ next if job.nil?
34
+ job_queue << job['queue'].to_s
35
+ rescue StandardError => error
36
+ logger_rescue('Failed-Job-Count-By-Queue', error)
37
+ end
38
+ end
39
+ job_queue.group_by(&:itself).transform_values(&:count)
40
+ end
41
+ end
@@ -0,0 +1,8 @@
1
+ module ResqueInfo
2
+ def self.logger_rescue(log_title, error)
3
+ puts '----------------------------------------------------'
4
+ puts "==> [ResqueInfo] [ #{log_title.upcase} ]"
5
+ puts "==> [ErrorMessage] [ #{error.message} ]"
6
+ puts '----------------------------------------------------'
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module ResqueInfo
2
+ BATCH_SIZE = 500
3
+ end
@@ -0,0 +1,44 @@
1
+ module ResqueInfo
2
+ class << self
3
+ def queues
4
+ Resque.queues
5
+ end
6
+
7
+ def total_jobs
8
+ Resque.info[:total_jobs]
9
+ end
10
+
11
+ def failed_jobs
12
+ Resque.info[:failed]
13
+ end
14
+
15
+ def processed_jobs
16
+ Resque.info[:processed]
17
+ end
18
+
19
+ def processed_jobs_per_minute
20
+ processed_jobs / (Time.now.to_i - Time.now.beginning_of_minute.to_i)
21
+ end
22
+
23
+ def processed_jobs_per_hour
24
+ processed_jobs / (Time.now.to_i - Time.now.beginning_of_hour.to_i)
25
+ end
26
+
27
+ def processed_jobs_per_day
28
+ processed_jobs / (Time.now.to_i - Time.now.beginning_of_day.to_i)
29
+ end
30
+
31
+ def processed_jobs_per_week
32
+ processed_jobs / (Time.now.to_i - Time.now.beginning_of_week.to_i)
33
+ end
34
+
35
+ def processed_jobs_per_month
36
+ processed_jobs / (Time.now.to_i - Time.now.beginning_of_month.to_i)
37
+ end
38
+
39
+ def processed_jobs_per_year
40
+ processed_jobs / (Time.now.to_i - Time.now.beginning_of_year.to_i)
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,107 @@
1
+ module ResqueInfo
2
+ class << self
3
+
4
+ def redis_info
5
+ Resque.redis.redis.info
6
+ end
7
+ def redis_version
8
+ redis_info['redis_version']
9
+ end
10
+
11
+ def redis_ping
12
+ Resque.redis.redis.ping
13
+ end
14
+
15
+ def redis_connected?
16
+ redis_ping == 'PONG'
17
+ end
18
+
19
+ def redis_details
20
+ details_array = %w[redis_version redis_build_id redis_mode arch_bits monotonic_clock multiplexing_api tcp_port os].freeze
21
+ search_from_redis_info(details_array)
22
+ end
23
+
24
+ def redis_uptime
25
+ uptime_seconds = redis_info["uptime_in_seconds"]
26
+ {
27
+ "uptime_seconds": uptime_seconds,
28
+ "uptime_hours": "#{uptime_seconds.to_i / 60} hours",
29
+ "uptime_days": "#{redis_info["uptime_in_days"]} days"
30
+ }
31
+ end
32
+
33
+ def redis_used_memory
34
+ used_memory_array = %w[used_memory used_memory_human used_memory_rss used_memory_rss_human used_memory_peak used_memory_peak_human used_memory_peak_perc used_memory_overhead used_memory_startup used_memory_dataset used_memory_dataset_perc used_memory_lua used_memory_vm_eval used_memory_lua_human used_memory_scripts_eval].freeze
35
+ search_from_redis_info(used_memory_array)
36
+ end
37
+
38
+ def redis_allocator
39
+ allocator_array = %w[allocator_allocated allocator_active allocator_resident allocator_frag_ratio allocator_frag_bytes allocator_rss_ratio allocator_rss_bytes].freeze
40
+ search_from_redis_info(allocator_array)
41
+ end
42
+
43
+ def redis_memory
44
+ memory_array = %w[total_system_memory total_system_memory_human used_memory_vm_functions used_memory_vm_total used_memory_vm_total_human used_memory_functions used_memory_scripts used_memory_scripts_human maxmemory maxmemory_human maxmemory_policy].freeze
45
+ search_from_redis_info(memory_array)
46
+ end
47
+
48
+ def redis_mem
49
+ mem_array = %w[mem_fragmentation_ratio mem_fragmentation_bytes mem_not_counted_for_evict mem_replication_backlog mem_total_replication_buffers mem_clients_slaves mem_clients_normal mem_cluster_links mem_aof_buffer mem_allocator].freeze
50
+ search_from_redis_info(mem_array)
51
+ end
52
+
53
+ def redis_rdb
54
+ rdb_array = %w[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 rdb_saves rdb_last_cow_size rdb_last_load_keys_expired rdb_last_load_keys_loaded].freeze
55
+ search_from_redis_info(rdb_array)
56
+ end
57
+
58
+ def redis_aof
59
+ aof_array = %w[aof_enabled aof_rewrite_in_progress aof_rewrite_scheduled aof_last_rewrite_time_sec aof_current_rewrite_time_sec aof_last_bgrewrite_status aof_rewrites aof_rewrites_consecutive_failures aof_last_write_status aof_last_cow_size].freeze
60
+ search_from_redis_info(aof_array)
61
+ end
62
+
63
+ def redis_total_net
64
+ net_array = %w[total_net_input_bytes total_net_output_bytes total_net_repl_input_bytes total_net_repl_output_bytes].freeze
65
+ search_from_redis_info(net_array)
66
+ end
67
+
68
+ def redis_instantaneous
69
+ inst_array = %w[instantaneous_ops_per_sec instantaneous_input_kbps instantaneous_output_kbps instantaneous_input_repl_kbps instantaneous_output_repl_kbps instantaneous_eventloop_cycles_per_sec instantaneous_eventloop_duration_usec].freeze
70
+ search_from_redis_info(inst_array)
71
+ end
72
+
73
+ def redis_defrag
74
+ defrag_array = %w[active_defrag_hits active_defrag_misses active_defrag_key_hits active_defrag_key_misses total_active_defrag_time current_active_defrag_time ].freeze
75
+ search_from_redis_info(defrag_array)
76
+ end
77
+
78
+ def redis_acl_access_denied
79
+ acl_array = %w[acl_access_denied_auth acl_access_denied_cmd acl_access_denied_key acl_access_denied_channel].freeze
80
+ search_from_redis_info(acl_array)
81
+ end
82
+
83
+ def redis_master_repl
84
+ master_repl_array = %w[master_failover_state master_replid master_replid2 master_repl_offset second_repl_offset repl_backlog_active repl_backlog_size repl_backlog_first_byte_offset repl_backlog_histlen].freeze
85
+ search_from_redis_info(master_repl_array)
86
+ end
87
+
88
+ def redis_used_cpu
89
+ used_cpu_array = %w[used_cpu_sys used_cpu_user used_cpu_sys_children used_cpu_user_children].freeze
90
+ search_from_redis_info(used_cpu_array)
91
+ end
92
+
93
+ def redis_other_details
94
+ other_details_array = %w[executable number_of_cached_scripts number_of_functions number_of_libraries rss_overhead_ratio rss_overhead_bytes active_defrag_running lazyfree_pending_objects lazyfreed_objects loading async_loading current_cow_peak current_cow_size current_cow_size_age current_fork_perc current_save_keys_processed current_save_keys_total module_fork_in_progress module_fork_last_cow_size total_connections_received total_commands_processed rejected_connections sync_full sync_partial_ok sync_partial_err expired_keys expired_stale_perc expired_time_cap_reached_count expire_cycle_cpu_milliseconds evicted_keys evicted_clients total_eviction_exceeded_time current_eviction_exceeded_time keyspace_hits keyspace_misses pubsub_channels pubsub_patterns pubsubshard_channels latest_fork_usec total_forks migrate_cached_sockets slave_expires_tracked_keys tracking_total_keys tracking_total_items tracking_total_prefixes unexpected_error_replies total_error_replies dump_payload_sanitizations total_reads_processed total_writes_processed io_threaded_reads_processed io_threaded_writes_processed reply_buffer_shrinks reply_buffer_expands eventloop_cycles eventloop_duration_sum eventloop_duration_cmd_sum role connected_slaves cluster_enabled db0].freeze
95
+ search_from_redis_info(other_details_array)
96
+ end
97
+
98
+ def search_from_redis_info(array_listing)
99
+ output = {}
100
+ array_listing.each do |element|
101
+ output["#{element}"] = redis_info["#{element}"]
102
+ end
103
+ output
104
+ end
105
+
106
+ end
107
+ end
@@ -0,0 +1,3 @@
1
+ module ResqueInfo
2
+ VERSION = '0.0.1'.freeze
3
+ end
@@ -0,0 +1,10 @@
1
+ require_relative './resque-info/constants.rb'
2
+ require_relative './resque-info/version.rb'
3
+ require_relative './resque-info/common.rb'
4
+ require_relative './resque-info/base.rb'
5
+ require_relative './resque-info/queues.rb'
6
+ require_relative './resque-info/redis.rb'
7
+
8
+ require 'time'
9
+ require 'digest'
10
+ require 'resque'
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: resque-info
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Rahul Patil
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-12-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: Resque Info
42
+ email:
43
+ - rahupatil_scs@yahoo.co.in
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - Gemfile
49
+ - README.md
50
+ - Rakefile
51
+ - lib/resque-info.rb
52
+ - lib/resque-info/base.rb
53
+ - lib/resque-info/common.rb
54
+ - lib/resque-info/constants.rb
55
+ - lib/resque-info/queues.rb
56
+ - lib/resque-info/redis.rb
57
+ - lib/resque-info/version.rb
58
+ homepage: https://github.com/rpatil/resque-info
59
+ licenses:
60
+ - MIT
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 2.7.6
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: Resque Info
82
+ test_files: []