aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2016-06-07 08:01:46 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2016-06-07 08:01:46 +0300
commit757b835af8984c1fa796aec1789b484bd307bb8a (patch)
tree7f37eec457262277ff2fe856eb2907155fded780
parentec36698ad30b99a05104952f011cf471faf83e56 (diff)
downloadmysqlstat-757b835af8984c1fa796aec1789b484bd307bb8a.tar.gz
mysqlstat-757b835af8984c1fa796aec1789b484bd307bb8a.tar.bz2
Keep MySQL connection open as long as possible. Implement new OIDs.
* src/MYSQL-STAT-MIB.txt: New OIDs: processTotalCount, processActiveCount, and processSlaveCount * src/mysqlstat.c (mysqlstat_connect): Keep connection open. (mysqlstat_disconnect): Remove. (get_process_list, process_first, process_next): New functions. Keep a cached list of processes and iterate through it. All functions updated. (process_total_count,process_active_count) (process_slave_count): New functions. * src/mysqlstat.h (process_total_count,process_active_count) (process_slave_count): New protos. * src/mysqlstat_mib.mib2c (handle_$i): Update.
-rw-r--r--src/MYSQL-STAT-MIB.txt127
-rw-r--r--src/mysqlstat.c220
-rw-r--r--src/mysqlstat.h27
-rw-r--r--src/mysqlstat_mib.mib2c114
4 files changed, 204 insertions, 284 deletions
diff --git a/src/MYSQL-STAT-MIB.txt b/src/MYSQL-STAT-MIB.txt
index 8fbc0e6..3c05db2 100644
--- a/src/MYSQL-STAT-MIB.txt
+++ b/src/MYSQL-STAT-MIB.txt
@@ -15,18 +15,18 @@ IMPORTS
15 OBJECT-GROUP, MODULE-COMPLIANCE 15 OBJECT-GROUP, MODULE-COMPLIANCE
16 FROM SNMPv2-CONF 16 FROM SNMPv2-CONF
17 InetAddress, InetAddressType, InetPortNumber 17 InetAddress, InetAddressType, InetPortNumber
18 FROM INET-ADDRESS-MIB; 18 FROM INET-ADDRESS-MIB;
19 19
20mysql MODULE-IDENTITY 20mysql MODULE-IDENTITY
21 LAST-UPDATED "201606061638Z" 21 LAST-UPDATED "201606070800Z"
22 ORGANIZATION "Gray Software" 22 ORGANIZATION "Gray Software"
23 CONTACT-INFO "Sergey Poznyakoff <gray@gnu.org>" 23 CONTACT-INFO "Sergey Poznyakoff <gray@gnu.org>"
24 DESCRIPTION 24 DESCRIPTION
25 "This MIB module defines objects for MySQL statistics." 25 "This MIB module defines objects for MySQL statistics."
26 REVISION "201606061638Z" 26 REVISION "201606070800Z"
27 DESCRIPTION 27 DESCRIPTION
28 "First revision." 28 "First revision."
29 ::= { enterprises 9163 101 } 29 ::= { enterprises 9163 101 }
30 30
31replication OBJECT IDENTIFIER ::= { mysql 1 } 31replication OBJECT IDENTIFIER ::= { mysql 1 }
32processList OBJECT IDENTIFIER ::= { mysql 2 } 32processList OBJECT IDENTIFIER ::= { mysql 2 }
@@ -458,118 +458,22 @@ replMasterSSLVerifyServerCert OBJECT-TYPE
458 STATUS current 458 STATUS current
459 DESCRIPTION 459 DESCRIPTION
460 "Whether to verify server SSL certificate." 460 "Whether to verify server SSL certificate."
461 ::= { replSlaveStatusEntry 38 } 461 ::= { replSlaveStatusEntry 38 }
462 462
463-- 463--
464-- Table of Replication Slave Servers
465--
466
467-- replSlaveCount OBJECT-TYPE
468-- SYNTAX Counter32
469-- MAX-ACCESS read-only
470-- STATUS current
471-- DESCRIPTION
472-- "Number of active replication slaves."
473-- ::= { replSlave 1 }
474
475-- replSlaveTable OBJECT-TYPE
476-- SYNTAX SEQUENCE OF ReplSlaveEntry
477-- MAX-ACCESS not-accessible
478-- STATUS current
479-- DESCRIPTION
480-- "A table of active replication slaves."
481-- ::= { replSlave 2 }
482
483-- replSlaveEntry OBJECT-TYPE
484-- SYNTAX ReplSlaveEntry
485-- MAX-ACCESS not-accessible
486-- STATUS current
487-- DESCRIPTION
488-- "An entry (conceptual row) describing a replication
489-- slave server."
490-- INDEX { replSlaveIndex }
491-- ::= { replSlaveTable 1 }
492
493-- ReplSlaveEntry ::= SEQUENCE {
494-- replSlaveIndex Integer32,
495-- replSlaveHost DisplayString,
496-- replSlaveUser DisplayString,
497-- replSlaveCommand DisplayString,
498-- replSlaveState DisplayString,
499-- replSlaveTime TimeStamp,
500-- replSlaveInfo DisplayString
501-- }
502
503-- replSlaveIndex OBJECT-TYPE
504-- SYNTAX Integer32 (0..65535)
505-- MAX-ACCESS not-accessible
506-- STATUS current
507-- DESCRIPTION
508-- "A number uniquely identifying each slave server."
509-- ::= { replSlaveEntry 1 }
510
511-- replSlaveHost OBJECT-TYPE
512-- SYNTAX DisplayString
513-- MAX-ACCESS read-only
514-- STATUS current
515-- DESCRIPTION
516-- "Hostname of the server."
517-- ::= { replSlaveEntry 2 }
518
519-- replSlaveUser OBJECT-TYPE
520-- SYNTAX DisplayString
521-- MAX-ACCESS read-only
522-- STATUS current
523-- DESCRIPTION
524-- "User name used by that server."
525-- ::= { replSlaveEntry 3 }
526
527-- replSlaveCommand OBJECT-TYPE
528-- SYNTAX DisplayString
529-- MAX-ACCESS read-only
530-- STATUS current
531-- DESCRIPTION
532-- "Command being run."
533-- ::= { replSlaveEntry 4 }
534
535-- replSlaveState OBJECT-TYPE
536-- SYNTAX DisplayString
537-- MAX-ACCESS read-only
538-- STATUS current
539-- DESCRIPTION
540-- "State of the connection."
541-- ::= { replSlaveEntry 5 }
542
543-- replSlaveTime OBJECT-TYPE
544-- SYNTAX TimeStamp
545-- MAX-ACCESS read-only
546-- STATUS current
547-- DESCRIPTION
548-- "Timestamp of the last status change."
549-- ::= { replSlaveEntry 6 }
550
551-- replSlaveInfo OBJECT-TYPE
552-- SYNTAX DisplayString
553-- MAX-ACCESS read-only
554-- STATUS current
555-- DESCRIPTION
556-- "Additional info about the connection."
557-- ::= { replSlaveEntry 7 }
558
559--
560-- Process List 464-- Process List
561-- 465--
562 466
563processListTable OBJECT-TYPE 467processListTable OBJECT-TYPE
564 SYNTAX SEQUENCE OF ProcessListEntry 468 SYNTAX SEQUENCE OF ProcessListEntry
565 MAX-ACCESS not-accessible 469 MAX-ACCESS not-accessible
566 STATUS current 470 STATUS current
567 DESCRIPTION 471 DESCRIPTION
568 "A table of active threads." 472 "A table of active threads."
569 ::= { processList 2 } 473 ::= { processList 1 }
570 474
571processListEntry OBJECT-TYPE 475processListEntry OBJECT-TYPE
572 SYNTAX ProcessListEntry 476 SYNTAX ProcessListEntry
573 MAX-ACCESS not-accessible 477 MAX-ACCESS not-accessible
574 STATUS current 478 STATUS current
575 DESCRIPTION 479 DESCRIPTION
@@ -657,12 +561,37 @@ processInfo OBJECT-TYPE
657 SYNTAX DisplayString 561 SYNTAX DisplayString
658 MAX-ACCESS read-only 562 MAX-ACCESS read-only
659 STATUS current 563 STATUS current
660 DESCRIPTION 564 DESCRIPTION
661 "Information about the process." 565 "Information about the process."
662 ::= { processListEntry 9 } 566 ::= { processListEntry 9 }
567
568processTotalCount OBJECT-TYPE
569 SYNTAX Counter32
570 MAX-ACCESS read-only
571 STATUS current
572 DESCRIPTION
573 "Total number of processes (threads)."
574 ::= { processList 2 }
575
576processActiveCount OBJECT-TYPE
577 SYNTAX Counter32
578 MAX-ACCESS read-only
579 STATUS current
580 DESCRIPTION
581 "Number of active processes (threads)."
582 ::= { processList 3 }
583
584processSlaveCount OBJECT-TYPE
585 SYNTAX Counter32
586 MAX-ACCESS read-only
587 STATUS current
588 DESCRIPTION
589 "Number of replication slaves"
590 ::= { processList 4 }
591
663END 592END
664 593
665-- Local variables: 594-- Local variables:
666-- eval: (add-hook 'write-file-hooks 'time-stamp) 595-- eval: (add-hook 'write-file-hooks 'time-stamp)
667-- time-stamp-start: "\\(LAST-UPDATED\\|REVISION\\) *\"" 596-- time-stamp-start: "\\(LAST-UPDATED\\|REVISION\\) *\""
668-- time-stamp-end: "\"" 597-- time-stamp-end: "\""
diff --git a/src/mysqlstat.c b/src/mysqlstat.c
index 938439a..2ffd0dd 100644
--- a/src/mysqlstat.c
+++ b/src/mysqlstat.c
@@ -51,40 +51,35 @@ xstrdup(char const *s)
51 return p; 51 return p;
52} 52}
53 53
54mysqlstat_connection_t 54mysqlstat_connection_t
55mysqlstat_connect(void) 55mysqlstat_connect(void)
56{ 56{
57 struct mysqlstat_connection *conn; 57 static struct mysqlstat_connection *conn;
58 my_bool t = 1; 58 my_bool t = 1;
59 59
60 conn = xcalloc(1, sizeof(*conn)); 60 if (!conn) {
61 mysql_init(&conn->mysql); 61 conn = xcalloc(1, sizeof(*conn));
62 if (access(config_file, F_OK) == 0) 62 mysql_init(&conn->mysql);
63