From 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 30 Sep 2013 00:03:24 +0200 Subject: Import Nagios Plugins site Import the Nagios Plugins web site, Cronjobs, infrastructure scripts, and configuration files. --- web/attachments/268575-patch.check_mysql.c | 289 +++++++++++++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 web/attachments/268575-patch.check_mysql.c (limited to 'web/attachments/268575-patch.check_mysql.c') diff --git a/web/attachments/268575-patch.check_mysql.c b/web/attachments/268575-patch.check_mysql.c new file mode 100644 index 0000000..cbcc110 --- /dev/null +++ b/web/attachments/268575-patch.check_mysql.c @@ -0,0 +1,289 @@ +68,87d67 +< int strIndexOf(char *string1, char *string2); +< char *strSubstring(char *string1, char *string2, int StartingPos, int EndPos); +< char *GetThreadsPerfdata(char *stringtoparse); +< char *GetQuestionsPerfdata(char *stringtoparse); +< char *GetSQPerfdata(char *stringtoparse); +< char *GetOpensPerfdata(char *stringtoparse); +< char *GetFTPerfdata(char *stringtoparse); +< char *GetOTPerfdata(char *stringtoparse); +< char *GetQPSAPerfdata(char *stringtoparse); +< +< struct mysql_statistics +< { +< char *ThreadsPerfdata; +< char *QuestionsPerfdata; +< char *SQPerfdata; +< char *OpensPerfdata; +< char *FTPerfdata; +< char *OTPerfdata; +< char *QPSAPerfdata; +< }; +102,105d81 +< +< /* variables needed to parse */ +< char *StringToParse; +< struct mysql_statistics Stats; +138,154d113 +< /* parse the server stats */ +< strcpy(StringToParse, result); +< +< Stats.ThreadsPerfdata = GetThreadsPerfdata(StringToParse); +< strcpy(StringToParse, result); +< Stats.QuestionsPerfdata = GetQuestionsPerfdata(StringToParse); +< strcpy(StringToParse, result); +< Stats.SQPerfdata = GetSQPerfdata(StringToParse); +< strcpy(StringToParse, result); +< Stats.OpensPerfdata = GetOpensPerfdata(StringToParse); +< strcpy(StringToParse, result); +< Stats.FTPerfdata = GetFTPerfdata(StringToParse); +< strcpy(StringToParse, result); +< Stats.OTPerfdata = GetOTPerfdata(StringToParse); +< strcpy(StringToParse, result); +< Stats.QPSAPerfdata = GetQPSAPerfdata(StringToParse); +< +270c229 +< printf ("%s %s | %s %s %s %s %s %s %s\n", result, slaveresult, Stats.ThreadsPerfdata, Stats.SQPerfdata, Stats.OpensPerfdata, Stats.FTPerfdata, Stats.OTPerfdata, Stats.QPSAPerfdata); +--- +> printf ("%s %s\n", result, slaveresult); +272c231 +< printf ("%s | %s %s %s %s %s %s %s\n", result, Stats.ThreadsPerfdata, Stats.QuestionsPerfdata, Stats.SQPerfdata, Stats.OpensPerfdata, Stats.FTPerfdata, Stats.OTPerfdata, Stats.QPSAPerfdata); +--- +> printf ("%s\n", result); +278,512d236 +< char +< *GetQPSAPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *qpsa; +< char *output; +< Start = strIndexOf("Queries per second avg\0", stringtoparse); +< End = strlen(stringtoparse); +< +< qpsa = strSubstring(qpsa, stringtoparse, Start, End); +< qpsa = strSubstring(qpsa, qpsa, strIndexOf(" \0", qpsa) + 1, strlen(qpsa)); +< qpsa = strSubstring(qpsa, qpsa, strIndexOf(" \0", qpsa) + 1, strlen(qpsa)); +< qpsa = strSubstring(qpsa, qpsa, strIndexOf(" \0", qpsa) + 1, strlen(qpsa)); +< qpsa = strSubstring(qpsa, qpsa, strIndexOf(" \0", qpsa) + 1, strlen(qpsa)); +< printf("%s", qpsa); +< asprintf(&output, "%s", fperfdata("queries_per_second_avg", atof(qpsa), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< char +< *GetOTPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *ot; +< char *output; +< Start = strIndexOf("Open tables\0", stringtoparse); +< End = strIndexOf("Queries per second avg\0", stringtoparse); +< +< ot = strSubstring(ot, stringtoparse, Start, End - 2); +< ot = strSubstring(ot, ot, strIndexOf(" \0", ot) + 1, strlen(ot)); +< ot = strSubstring(ot, ot, strIndexOf(" \0", ot) + 1, strlen(ot)); +< asprintf(&output, "%s", perfdata("open_tables", atoi(ot), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< char +< *GetFTPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *ft; +< char *output; +< Start = strIndexOf("Flush tables\0", stringtoparse); +< End = strIndexOf("Open tables\0", stringtoparse); +< +< ft = strSubstring(ft, stringtoparse, Start, End - 2); +< ft = strSubstring(ft, ft, strIndexOf(" \0", ft) + 1, strlen(ft)); +< ft = strSubstring(ft, ft, strIndexOf(" \0", ft) + 1, strlen(ft)); +< asprintf(&output, "%s", perfdata("flush_tables", atoi(ft), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< char +< *GetOpensPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *opens; +< char *output; +< Start = strIndexOf("Opens\0", stringtoparse); +< End = strIndexOf("Flush tables\0", stringtoparse); +< +< opens = strSubstring(opens, stringtoparse, Start, End - 2); +< opens = strSubstring(opens, opens, strIndexOf(" \0", opens) + 1, strlen(opens)); +< asprintf(&output, "%s", perfdata("opens", atoi(opens), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< char +< *GetSQPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *slowqueries; +< char *output; +< Start = strIndexOf("Slow queries\0", stringtoparse); +< End = strIndexOf("Opens\0", stringtoparse); +< +< slowqueries = strSubstring(slowqueries, stringtoparse, Start, End - 2); +< slowqueries = strSubstring(slowqueries, slowqueries, strIndexOf(" \0", slowqueries) + 1, strlen(slowqueries)); +< slowqueries = strSubstring(slowqueries, slowqueries, strIndexOf(" \0", slowqueries) + 1, strlen(slowqueries)); +< asprintf(&output, "%s", perfdata("slow_queries", atoi(slowqueries), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< char +< *GetQuestionsPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *questions; +< char *output; +< Start = strIndexOf("Questions\0", stringtoparse); +< End = strIndexOf("Slow queries\0", stringtoparse); +< +< questions = strSubstring(questions, stringtoparse, Start, End - 2); +< questions = strSubstring(questions, questions, strIndexOf(" \0", questions) + 1, strlen(questions)); +< asprintf(&output, "%s", perfdata("questions", atoi(questions), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< char +< *GetThreadsPerfdata(char *stringtoparse) +< { +< int Start = 0; +< int End = 0; +< char *threads; +< char *output; +< +< Start = strIndexOf("Threads\0", stringtoparse); +< End = strIndexOf("Questions\0", stringtoparse); +< +< threads = strSubstring(threads, stringtoparse, Start, End - 2); +< threads = strSubstring(threads, threads, strIndexOf(" \0", threads) + 1, strlen(threads)); +< asprintf(&output, "%s", perfdata("threads", atoi(threads), "", +< FALSE, 0, +< FALSE, 0, +< TRUE, 0, +< FALSE, 0)); +< +< return output; +< } +< +< /* takes the substring from string1 between startingpos and the startingpos plus the length, +< all is returned */ +< char +< *strSubstring(char *string1, char *string2, int StartingPos, int EndPos) +< { +< /* current position in string2 */ +< int CurPos = 0; +< /* current position in string1 */ +< int String1Pos = 0; +< char *NULLChar = "\0"; +< +< for (CurPos = StartingPos; CurPos < EndPos; CurPos++) +< { +< string1[String1Pos] = string2[CurPos]; +< String1Pos++; +< } +< +< string1[String1Pos] = *NULLChar; +< +< return string1; +< } +< +< /* gets the starting position of string1 in string2, +< if string1 is not contained in string2 then the function returns -1 */ +< int +< strIndexOf (char *string1, char *string2) +< { +< /* current position in string2 */ +< int CurPos = 0; +< /* the amount of matches found after the startingposition was found */ +< int CharsFound = 0; +< /* the starting position of string1 in string2 */ +< int StartingPos = -1; +< /* length of string1 */ +< int Length1 = strlen(string1); +< /* Length of string2 */ +< int Length2 = strlen(string2); +< /* the maximum length of the search */ +< int MaxLength = 0; +< +< /* check if string2 is longer the string1, if not tell the program that something went wrong */ +< if (Length2 < Length1) +< { +< return -2; +< } +< +< /* calculate the max length of the search */ +< MaxLength = Length2; +< +< for (CurPos = 0; CurPos != MaxLength; CurPos++) +< { +< if (CharsFound == Length1) +< { +< return StartingPos; +< } +< +< if (StartingPos == -1) +< { +< if (string2[CurPos] == string1[CharsFound]) +< { +< StartingPos = CurPos; +< CharsFound++; +< } +< } +< else +< { +< if (string2[CurPos] == string1[CharsFound]) +< { +< CharsFound++; +< } +< else +< { +< CharsFound = 0; +< StartingPos = -1; +< } +< } +< } +< +< return -1; +< } + -- cgit v1.2.3-74-g34f1