summaryrefslogtreecommitdiffstats
path: root/web/attachments/416883-check_mysql.patch
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/416883-check_mysql.patch')
-rw-r--r--web/attachments/416883-check_mysql.patch70
1 files changed, 70 insertions, 0 deletions
diff --git a/web/attachments/416883-check_mysql.patch b/web/attachments/416883-check_mysql.patch
new file mode 100644
index 0000000..9643a98
--- /dev/null
+++ b/web/attachments/416883-check_mysql.patch
@@ -0,0 +1,70 @@
1--- a/nagios-plugins-1.4.15/plugins/check_mysql.c 2010-07-27 22:47:16.000000000 +0200
2+++ b/nagios-plugins-1.4.15/plugins/check_mysql.c 2011-06-30 11:12:09.000000000 +0200
3@@ -34,7 +34,7 @@
4 const char *copyright = "1999-2007";
5 const char *email = "nagiosplug-devel@lists.sourceforge.net";
6
7-#define SLAVERESULTSIZE 70
8+#define SLAVERESULTSIZE 120
9
10 #include "common.h"
11 #include "utils.h"
12@@ -158,7 +158,7 @@
13
14 } else {
15 /* mysql 4.x.x */
16- int slave_io_field = -1 , slave_sql_field = -1, seconds_behind_field = -1, i, num_fields;
17+ int slave_io_field = -1 , slave_sql_field = -1, seconds_behind_field = -1, until_cond_field = -1, last_errno_field = -1, i, num_fields;
18 MYSQL_FIELD* fields;
19
20 num_fields = mysql_num_fields(res);
21@@ -176,16 +176,25 @@
22 seconds_behind_field = i;
23 continue;
24 }
25+ if (strcmp(fields[i].name, "Until_Condition") == 0) {
26+ until_cond_field = i;
27+ continue;
28+ }
29+ if (strcmp(fields[i].name, "Last_Errno") == 0) {
30+ last_errno_field = i;
31+ continue;
32+ }
33 }
34
35- if ((slave_io_field < 0) || (slave_sql_field < 0) || (num_fields == 0)) {
36+ if ((slave_io_field < 0) || (slave_sql_field < 0) || (last_errno_field < 0) || (num_fields == 0)) {
37 mysql_free_result (res);
38 mysql_close (&mysql);
39 die (STATE_CRITICAL, "Slave status unavailable\n");
40 }
41
42- snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s Seconds Behind Master: %s", row[slave_io_field], row[slave_sql_field], seconds_behind_field!=-1?row[seconds_behind_field]:"Unknown");
43- if (strcmp (row[slave_io_field], "Yes") != 0 || strcmp (row[slave_sql_field], "Yes") != 0) {
44+ snprintf (slaveresult, SLAVERESULTSIZE, "Slave IO: %s Slave SQL: %s Seconds Behind Master: %s Until Condition: %s Last Errno: %s", row[slave_io_field], row[slave_sql_field], seconds_behind_field!=-1?row[seconds_behind_field]:"Unknown", row[until_cond_field], last_errno_field!=-1?row[last_errno_field]:"No Error");
45+
46+ if ((strcmp(row[until_cond_field], "None") == 0 && (strcmp (row[slave_io_field], "Yes") != 0 || strcmp (row[slave_sql_field], "Yes") != 0) ) || (strcmp(row[last_errno_field], "0") != 0)) {
47 mysql_free_result (res);
48 mysql_close (&mysql);
49 die (STATE_CRITICAL, "%s\n", slaveresult);
50@@ -197,9 +206,19 @@
51 } else {
52 printf ("seconds_behind_field(index %d)=%s\n", seconds_behind_field, row[seconds_behind_field]);
53 }
54+ if (until_cond_field == -1) {
55+ printf("until_cond_field not found\n");
56+ } else {
57+ printf ("until_cond_field(index %d)=%s\n", until_cond_field, row[until_cond_field]);
58+ }
59+ if (last_errno_field == -1) {
60+ printf("last_errno_field not found\n");
61+ } else {
62+ printf("last_errno_field(index %d)=%s\n", last_errno_field, row[last_errno_field]);
63+ }
64 }
65
66- if ((seconds_behind_field != -1) && (strcmp (row[seconds_behind_field], "NULL") != 0)) {
67+ if ((seconds_behind_field != -1) && (row[seconds_behind_field] != NULL && (strcmp (row[seconds_behind_field], "NULL") != 0)) && (strcmp(row[until_cond_field], "None") == 0)) {
68 double value = atof(row[seconds_behind_field]);
69 int status;
70