Class: Kanshi
- Inherits:
-
Object
show all
- Defined in:
- lib/kanshi.rb
Defined Under Namespace
Classes: Collector, ScrollsReporter
Constant Summary
collapse
- Queries =
"SELECT\n pg_database_size(d.datname) AS size,\n numbackends,\n xact_commit,\n xact_rollback,\n blks_read,\n blks_hit,\n blks_read + blks_hit AS blks_total,\n tup_fetched,\n tup_returned,\n tup_inserted,\n tup_updated,\n tup_deleted\nFROM\n pg_stat_database d\nWHERE\n d.datname = ?;\n\nSELECT\n SUM(seq_scan)::bigint AS seq_scan,\n SUM(seq_tup_read)::bigint AS seq_tup_read,\n SUM(idx_scan)::bigint AS idx_scan,\n SUM(idx_tup_fetch)::bigint AS idx_tup_fetch\nFROM\n pg_stat_user_tables;\n\nSELECT\n SUM(heap_blks_read)::bigint AS heap_blks_read,\n SUM(heap_blks_hit)::bigint AS heap_blks_hit,\n SUM(idx_blks_read)::bigint AS idx_blks_read,\n SUM(idx_blks_hit)::bigint AS idx_blks_hit\nFROM\n pg_statio_user_tables;\n\nSELECT\n COUNT(*) AS locks_waiting\nFROM\n pg_locks\nWHERE\n granted = 'f';\n\nSELECT\n EXTRACT('epoch' from SUM(NOW() - xact_start)) AS total_open_xact_time\nFROM\n pg_stat_activity\nWHERE\n xact_start IS NOT NULL;\n\nSELECT\n COUNT(*) AS xact_waiting\nFROM\n pg_stat_activity\nWHERE\n waiting = 't';\n\nSELECT\n COUNT(*) AS xact_idle\nFROM\n pg_stat_activity\nWHERE\n current_query = '<IDLE> in transaction';\n".split(/\s*;\s*/)
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(options = {}) ⇒ Kanshi
Returns a new instance of Kanshi.
12
13
14
15
16
17
18
19
20
|
# File 'lib/kanshi.rb', line 12
def initialize(options = {})
@options = {
:databases => {},
:delay => 60,
:reporter => ScrollsReporter
}
@options.merge!(options)
@reporter = @options[:reporter].new
end
|
Class Method Details
.run(*args) ⇒ Object
8
9
10
|
# File 'lib/kanshi.rb', line 8
def self.run(*args)
self.new(*args).run
end
|
Instance Method Details
#report ⇒ Object
29
30
31
32
33
34
35
36
|
# File 'lib/kanshi.rb', line 29
def report
@options[:databases].each do |name, database_url|
@reporter.report(
name,
database_url,
Collector.collect(database_url))
end
end
|
#run ⇒ Object
22
23
24
25
26
27
|
# File 'lib/kanshi.rb', line 22
def run
loop do
report
sleep(@options[:delay])
end
end
|