munin icon indicating copy to clipboard operation
munin copied to clipboard

Defining a virtual node breaks munin-update

Open ssm opened this issue 9 years ago • 1 comments

The following configuration fragment:

 [virtual.example.com]
  update no
  contacts no
  foo.update no
  foo.graph_title something

makes munin-update stop with:

[...]
2015-12-31 00:08:25 [debug][006619]: Work done
2015-12-31 00:08:25 [debug][006619]: munin_set_var_path: Setting var "example.com;virtual.example.com:foo.graph_title" = "something"
2015-12-31 00:08:25 [debug][006619]: munin_set_var_path: Setting var "example.com;virtual.example.com:foo.update" = "0"
2015-12-31 00:08:25 [debug][006619]: Writing sql to /var/lib/munin/datafile.sqlite.6619
DBD::SQLite::st execute failed: called with 3 bind variables when 6 are needed at /usr/share/perl5/Munin/Master/Update.pm line 282.
Can't use string ("foo.update") as an ARRAY ref while "strict refs" in use at /usr/share/perl5/Munin/Master/Update.pm line 303.

As soon as I add the "foo.graph_title", munin-update stops, leaving a sqlite datafile with defined tables, some node definitions, but no values:

# echo .dump | sqlite3 /var/lib/munin/datafile.sqlite.6619 | sed -e 's/^/     /g'
 PRAGMA foreign_keys=OFF;
 BEGIN TRANSACTION;
 CREATE TABLE param (name VARCHAR PRIMARY KEY, value VARCHAR);
 INSERT INTO "param" VALUES('tls_verify_depth','5');
 INSERT INTO "param" VALUES('max_processes','16');
 INSERT INTO "param" VALUES('dbdir','/var/lib/munin');
 INSERT INTO "param" VALUES('config_file','/etc/munin/munin.conf');
 INSERT INTO "param" VALUES('timeout','180');
 INSERT INTO "param" VALUES('logdir','/var/log/munin');
 INSERT INTO "param" VALUES('tls_verify_certificate','0');
 INSERT INTO "param" VALUES('tls','disabled');
 INSERT INTO "param" VALUES('graph_data_size','normal');
 INSERT INTO "param" VALUES('cgitmpdir','/var/cache/munin');
 INSERT INTO "param" VALUES('local_address','0');
 INSERT INTO "param" VALUES('tmpldir','/etc/munin/templates');
 INSERT INTO "param" VALUES('rundir','/var/run/munin');
 INSERT INTO "param" VALUES('includedir','/etc/munin/munin-conf.d');
 INSERT INTO "param" VALUES('version','2.999.1');
 INSERT INTO "param" VALUES('tls_ca_certificate','/etc/munin/cacert.pem');
 INSERT INTO "param" VALUES('fork','1');
 INSERT INTO "param" VALUES('tls_private_key','/etc/munin/munin.pem');
 INSERT INTO "param" VALUES('carbon_port','');
 INSERT INTO "param" VALUES('staticdir','/etc/munin/static');
 INSERT INTO "param" VALUES('tls_certificate','/etc/munin/munin.pem');
 INSERT INTO "param" VALUES('carbon_prefix','');
 INSERT INTO "param" VALUES('contact.syslog.command','dd if=/dev/stdin of=/tmp/munin-limits.log');
 INSERT INTO "param" VALUES('carbon_server','');
 INSERT INTO "param" VALUES('debug','1');
 INSERT INTO "param" VALUES('graph_strategy','cron');
 INSERT INTO "param" VALUES('screen','1');
 CREATE TABLE grp (id INTEGER PRIMARY KEY, p_id INTEGER REFERENCES grp(id), name VARCHAR, path VARCHAR);
 INSERT INTO "grp" VALUES(1,NULL,'fnord.no','fnord.no');
 INSERT INTO "grp" VALUES(2,NULL,'example.com','example.com');
 CREATE TABLE node (id INTEGER PRIMARY KEY, grp_id INTEGER REFERENCES grp(id), name VARCHAR, path VARCHAR);
 INSERT INTO "node" VALUES(1,1,'dhole.fnord.no','fnord.no;dhole.fnord.no');
 INSERT INTO "node" VALUES(2,2,'virtual.example.com','example.com;virtual.example.com');
 CREATE TABLE node_attr (id INTEGER REFERENCES node(id), name VARCHAR, value VARCHAR);
 CREATE TABLE service (id INTEGER PRIMARY KEY, node_id INTEGER REFERENCES node(id), name VARCHAR, path VARCHAR, service_title VARCHAR, graph_info VARCHAR, subgraphs INTEGER);
 CREATE TABLE service_attr (id INTEGER REFERENCES service(id), name VARCHAR, value VARCHAR);
 CREATE TABLE service_categories (id INTEGER REFERENCES service(id), category VARCHAR NOT NULL, PRIMARY KEY (id,category));
 CREATE TABLE ds (id INTEGER PRIMARY KEY, service_id INTEGER REFERENCES service(id), name VARCHAR, path VARCHAR,
        type VARCHAR DEFAULT 'GAUGE',
        ordr INTEGER DEFAULT 0,
        unknown INTEGER DEFAULT 0, warning INTEGER DEFAULT 0, critical INTEGER DEFAULT 0);
 CREATE TABLE ds_attr (id INTEGER REFERENCES ds(id), name VARCHAR, value VARCHAR);
 CREATE TABLE url (id INTEGER NOT NULL, type VARCHAR NOT NULL, path VARCHAR NOT NULL, PRIMARY KEY(id,type));
 INSERT INTO "url" VALUES(1,'group','fnord.no');
 INSERT INTO "url" VALUES(1,'node','fnord.no/dhole.fnord.no');
 INSERT INTO "url" VALUES(2,'group','example.com');
 INSERT INTO "url" VALUES(2,'node','example.com/virtual.example.com');
 INSERT INTO "url" VALUES(4,'service','example.com/virtual.example.com/foo');
 CREATE TABLE state (id INTEGER, type VARCHAR,
        last_epoch INTEGER, last_value VARCHAR,
        prev_epoch INTEGER, prev_value VARCHAR,
        alarm VARCHAR
        );
 CREATE INDEX r_g_grp ON grp (p_id);
 CREATE UNIQUE INDEX pk_node_attr ON node_attr (id, name);
 CREATE INDEX r_n_grp ON node (grp_id);
 CREATE UNIQUE INDEX pk_service_attr ON service_attr (id, name);
 CREATE INDEX r_s_node ON service (node_id);
 CREATE UNIQUE INDEX pk_ds_attr ON ds_attr (id, name);
 CREATE INDEX r_d_service ON ds (service_id);
 CREATE UNIQUE INDEX u_url_path ON url (path);
 CREATE UNIQUE INDEX pk_state ON state (type, id);
 COMMIT;

ssm avatar Dec 30 '15 23:12 ssm

+1 that one is hitting hard, as most of my useful munin stats are based on virtual nodes :)

phaidros7 avatar Apr 01 '16 21:04 phaidros7