[collectd] MySQL plugin: wrong metric types in 5.5 #1560

Pavel V. pavel2000 at ngs.ru
Thu Feb 25 09:14:31 CET 2016

Hi, Collectd community.

//I has created ticket https://github.com/collectd/collectd/issues/1560 at GitHub
//with same content as this mail, but copied this to list for discussion.

I had started upgrade from collectd-5.4 to collectd-5.5 and began to explore its new features.
One of features, which interested for me is mysql plugin. 

Collectd-5.5 introduces new feature/option "InnodbStats". 
As for me, types, proposed by this plugin in 5.5 is at alfa, not ever beta stage. 
I see logic of types assignment incorrect.

How these can be the same type 'mysql_innodb_log':

counter_submit ("mysql_innodb_log", "writes", val, db);   //operations
counter_submit ("mysql_innodb_log", "written", val, db);  //bytes

or, for example: the "mysql_innodb_data" type:

counter_submit ("mysql_innodb_data", "fsyncs", val, db);   //operations
counter_submit ("mysql_innodb_data", "read", val, db);     //BYTES
counter_submit ("mysql_innodb_data", "reads", val, db);    //operations
counter_submit ("mysql_innodb_data", "writes", val, db);   //operations
counter_submit ("mysql_innodb_data", "written", val, db);  //BYTES


As for me, "Innodb_data_read" and "Innodb_data_written" should produce "mysql_innodb_octets" type with rx/tx like "mysql_octets" type.

Another example:

counter_submit ("mysql_innodb_row_lock", "time", val, db);    //time - seconds
counter_submit ("mysql_innodb_row_lock", "waits", val, db);   //waits - operations

Why mix seconds and operations? Unable to understand.

And there are many many other examples of wrong types. 
All these makes "InnodbStats" option unuseable (as for me) and requires reworking.

Function mysql_read_innodb_stats() introduced in https://github.com/collectd/collectd/commit/b2b5f7e61afe2389acc9c6f638773cdaa41f878f also has these problems.

I think, "InnodbStats" option must be marked as beta with notice about types to be changed in future releases. Could this be done?

Another note is about "mysql_sort" type introduced by https://github.com/collectd/collectd/commit/7d1ee33e6e2250ab6c52be935c897ad8141fdea4
As specified in http://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html#statvar_Sort_range

Sort_rows - The number of sorted rows. (rows)
Sort_scan - The number of sorts that were done by scanning the table.   (sort operations)
Sort_range - The number of sorts that were done using ranges.  (sort operations)
Sort_merge_passes  - The number of merge passes that the sort algorithm has had to do. (merge passes, ie cycles count - separate type required) 

I think, type needs to be splitted too.

I can submit some patches. Should the project be interested in this? 
Also, please, explain me the policy about types change in this case.

Thanks for your work!

 Pavel                          mailto:pavel2000 at ngs.ru

More information about the collectd mailing list