Munin is lacking many features that other graphing suites have but when it comes to creating custom graphs it excels.To create a custom graph all you need is a script written in any language that outputs the value you are trying to graph and when you supply the config argument it should return its configuration.In this example I’ll create a graph from a MySQL query.The query is returning the total number delayed jobs in our queue.run script with no argument to get the value:
$ ./delayed_jobs_totaltotaljobs.value 228964
run the script with the config argument:
$ ./delayed_jobs_total configgraph_title Total Delayed Jobstotaljobs.type GAUGEtotaljobs.label TotalJobs graph_category delayed_jobsgraph_args --base 1000 -l 0graph_scale no
The code:
#!/usr/local/bin/ruby require 'rubygems' require 'mysql' hostname = '127.0.0.1' username = 'REMOVED' password = 'REMOVED' databasename = 'delayed_job' my = Mysql.new(hostname, username, password, databasename) def total_count(my) rs = my.query('select count(*) from delayed_jobs') row = rs.fetch_row return row end def config() puts 'graph_title Total Delayed Jobs' puts 'totaljobs.type GAUGE' puts 'totaljobs.label TotalJobs' puts 'graph_category delayed_jobs' puts 'graph_args --base 1000 -l 0' puts 'graph_scale no' end argu = ARGV[0] if argu == 'config' config() else total = total_count(my) puts "totaljobs.value " + total[0].to_s end my.close