I have corrected and the errors in units. Please see the attached diff,
which is against the original 3.6.9 code . I will send the complete file
to Nathan.
chandana@tardis:~/pmdamysql$ diff -u 3.6.9/pmdamysql.pl
2012-11-02/pmdamysql.pl
--- 3.6.9/pmdamysql.pl 2012-11-02 20:43:19.749170048 +1100
+++ 2012-11-02/pmdamysql.pl 2012-11-02 20:31:39.973700045 +1100
@@ -32,8 +32,8 @@
eval `cat $file` unless ! -f $file;
}
-use vars qw( $pmda %status %variables @processes );
-use vars qw( $dbh $sth_variables $sth_status $sth_processes );
+use vars qw( $pmda %status %variables @processes %slave_status );
+use vars qw( $dbh $sth_variables $sth_status $sth_processes
$sth_slave_status );
my $process_indom = 0;
my @process_instances;
@@ -48,6 +48,7 @@
$sth_variables = $dbh->prepare('show variables');
$sth_status = $dbh->prepare('show status');
$sth_processes = $dbh->prepare('show processlist');
+ $sth_slave_status = $dbh->prepare('show slave status');
}
}
}
@@ -101,6 +102,20 @@
$pmda->replace_indom($process_indom, \@process_instances);
}
+sub mysql_slave_status_refresh
+{
+ # $pmda->log("mysql_slave_status_refresh\n");
+
+ %slave_status = (); # clear any previous contents
+ if (defined($dbh)) {
+ $sth_slave_status->execute();
+ my $result = $sth_slave_status->fetchrow_hashref();
+ while ( my ($key, $value) = each(%$result) ) {
+ $slave_status{lc $key} = $value;
+ }
+ }
+}
+
sub mysql_refresh
{
my ($cluster) = @_;
@@ -109,6 +124,7 @@
if ($cluster == 0) { mysql_status_refresh; }
elsif ($cluster == 1) { mysql_variables_refresh; }
elsif ($cluster == 2) { mysql_process_refresh; }
+ elsif ($cluster == 3) { mysql_slave_status_refresh; }
}
sub mysql_fetch_callback
@@ -145,9 +161,17 @@
if (!defined($value)) { return (PM_ERR_APPVERSION, 0); }
return ($value, 1);
}
+ elsif ($cluster == 3) {
+ $mysql_name =~ s/^mysql\.slave_status\.//;
+ $value = $slave_status{$mysql_name};
+ if (!defined($value)) { return (PM_ERR_APPVERSION, 0); }
+ return ($value, 1);
+ }
return (PM_ERR_PMID, 0);
}
+# pmda_units(dim_space, dim_time, dim_count, scale_space, scale_time,
scale_count)
+
$pmda = PCP::PMDA->new('mysql', 66);
$pmda->add_metric(pmda_pmid(0,0), PM_TYPE_U32, PM_INDOM_NULL,
@@ -1632,6 +1656,103 @@
PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
'mysql.processlist.info', '', '');
+$pmda->add_metric(pmda_pmid(3,0), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.slave_io_state', '', '');
+$pmda->add_metric(pmda_pmid(3,1), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.slave_io_running', '', '');
+$pmda->add_metric(pmda_pmid(3,2), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.slave_sql_running', '', '');
+$pmda->add_metric(pmda_pmid(3,3), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,1,0,0,PM_TIME_SEC,0),
+ 'mysql.slave_status.seconds_behind_master', '', '');
+$pmda->add_metric(pmda_pmid(3,4), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_log_file', '', '');
+$pmda->add_metric(pmda_pmid(3,5), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,1,0,0,PM_COUNT_ONE),
+ 'mysql.slave_status.read_master_log_pos', '', '');
+$pmda->add_metric(pmda_pmid(3,6), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.relay_master_log_file', '', '');
+$pmda->add_metric(pmda_pmid(3,7), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,1,0,0,PM_COUNT_ONE),
+ 'mysql.slave_status.exec_master_log_pos', '', '');
+$pmda->add_metric(pmda_pmid(3,8), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.relay_log_file', '', '');
+$pmda->add_metric(pmda_pmid(3,9), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,1,0,0,PM_COUNT_ONE),
+ 'mysql.slave_status.relay_log_pos', '', '');
+$pmda->add_metric(pmda_pmid(3,10), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.until_log_file', '', '');
+$pmda->add_metric(pmda_pmid(3,11), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,1,0,0,PM_COUNT_ONE),
+ 'mysql.slave_status.until_log_pos', '', '');
+$pmda->add_metric(pmda_pmid(3,12), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_ssl_cipher', '', '');
+$pmda->add_metric(pmda_pmid(3,13), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_ssl_ca_file', '', '');
+$pmda->add_metric(pmda_pmid(3,14), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,1,0,0,PM_COUNT_ONE),
+ 'mysql.slave_status.skip_counter', '', '');
+$pmda->add_metric(pmda_pmid(3,15), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(1,0,0,PM_SPACE_BYTE,0,0),
+ 'mysql.slave_status.relay_log_space', '', '');
+$pmda->add_metric(pmda_pmid(3,16), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.until_condition', '', '');
+$pmda->add_metric(pmda_pmid(3,17), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,1,0,0,PM_TIME_SEC,0),
+ 'mysql.slave_status.connect_retry', '', '');
+$pmda->add_metric(pmda_pmid(3,18), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_host', '', '');
+$pmda->add_metric(pmda_pmid(3,19), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.last_errno', '', '');
+$pmda->add_metric(pmda_pmid(3,20), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_ssl_cert', '', '');
+$pmda->add_metric(pmda_pmid(3,21), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.replicate_do_db', '', '');
+$pmda->add_metric(pmda_pmid(3,22), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.replicate_ignore_db', '', '');
+$pmda->add_metric(pmda_pmid(3,23), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_user', '', '');
+$pmda->add_metric(pmda_pmid(3,24), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.replicate_do_table', '', '');
+$pmda->add_metric(pmda_pmid(3,25), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.replicate_wild_do_table', '', '');
+$pmda->add_metric(pmda_pmid(3,26), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.replicate_wild_ignore_table', '', '');
+$pmda->add_metric(pmda_pmid(3,27), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.replicate_ignore_table', '', '');
+$pmda->add_metric(pmda_pmid(3,28), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_ssl_allowed', '', '');
+$pmda->add_metric(pmda_pmid(3,29), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_ssl_ca_path', '', '');
+$pmda->add_metric(pmda_pmid(3,30), PM_TYPE_U32, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_port', '', '');
+$pmda->add_metric(pmda_pmid(3,31), PM_TYPE_STRING, PM_INDOM_NULL,
+ PM_SEM_DISCRETE, pmda_units(0,0,0,0,0,0),
+ 'mysql.slave_status.master_ssl_key', '', '');
+
$pmda->add_indom($process_indom, \@process_instances,
'Instance domain exporting each MySQL process', '');
|