2

I'm attempting to compare load averages from several severs using using Munin 1.4.6-3ubuntu3 by combining multiple hosts in a single graph.

My attempt:

[domain.com;Totals]
load.graph_title Load
load.graph_category System
load.graph_order s1=s1.domain.com:load.load \
    s2=s2.cisco.com:load.load \
    s3=s3.cisco.com:load.load \
    s4=s4.cisco.com:load.load \
    s5=s5.cisco.com:load.load \
    s6=s6.cisco.com:load.load \
    s7=s7.cisco.com:load.load

Results in:

[WARNING] munin_set_var_loc: Setting unknown option 'load' at domain.com;Totals;s2=s2;domain;com:load:
[WARNING] munin_set_var_loc: Setting unknown option 'load' at domain.com;Totals;s3=s2;domain;com:load:
[WARNING] munin_set_var_loc: Setting unknown option 'load' at domain.com;Totals;s4=s2;domain;com:load:

And no graphs generated in /var/cache/munin/www/domain.com/Totals, just index.html, and load.html

What's a working example to accomplish this?

Jon Skarpeteig
  • 951
  • 2
  • 14
  • 29

2 Answers2

4

I struggled with combined graphs myself for quite a while. I can tell from my experience that munin's input validation is really bad. Therefore it often silently fails if you forget to set a required option or you set too many options. Furthermore I encountered a really weird issue which made my combined graph disappear after a few minutes into server uptime. This issue got resolved by upgrading to Ubuntu 13.04 (munin 2.0.9-1ubuntu1).

A little bit of background about our setup

We currently have three production servers behind a load balancer. Each one of them counts the number incoming requests. All of these servers are monitored by munin and a custom plugin (myplugin) retrieves the request counter and exposes it as a single data source called 'requests'. Using this setup we had three different graphs for the three different servers. Now this obviously is a perfect usecase for combined graphs.

Here's my working configuration

[server-1.production]
    address xxx.xxx.xxx.xxx
    use_node_name yes
[server-2.production]
    address xxx.xxx.xxx.xxx
    use_node_name yes
[server-3.production]
    address xxx.xxx.xxx.xxx
    use_node_name yes
[aggregate.production]
    update no
    myplugin.update no
    myplugin.graph_args --base 1000 -l 0
    myplugin.graph_category myplugin
    myplugin.graph_vlabel requests/s
    myplugin.graph_title request rate
    myplugin.graph_order \
        total \
        server-1=server-1.production:myplugin.requests \
        server-2=server-2.production:myplugin.requests \
        server-3=server-3.production:myplugin.requests
    myplugin.total.sum \
        server-1.production:myplugin.requests \
        server-2.production:myplugin.requests \
        server-3.production:myplugin.requests
    myplugin.server-1.label server-1
    myplugin.server-2.label server-2
    myplugin.server-3.label server-3
    myplugin.total.label total

Important pitfalls

  • The label definitions in the very last part of the config are required. Omitting them leads to munin failing silently!
  • update no is required, although I'm not sure whether you need myplugin.update no.
  • Make sure you're using the latest version of munin since bugs are actively fixed.
0

This warning message you get is because of a syntax check that does not understand the multi line split with '\' and thus it considers that your variable 'load' is a valid keyword for the ending of a configuration command. I consider that this is a bug in the current munin.

Although they are processed correctly, you can avoid that Warning by removing the '\' and compacting all following lines into only one:

load.graph_order s1=s1.domain.com:load.load   s2=s2.cisco.com:load.load   s3=s3.cisco.com:load.load   s4=s4.cisco.com:load.load     s5=s5.cisco.com:load.load   s6=s6.cisco.com:load.load     s7=s7.cisco.com:load.load

Independently to the workaround above, you also need to add:

use_node_name no
update no
load.update no
Sitoplex
  • 36
  • 2