add verifier stats

This commit is contained in:
whottgen 2004-11-08 11:35:34 +00:00
parent 06aaebadc4
commit 95d3897971
3 changed files with 178 additions and 8 deletions

View File

@ -19,7 +19,7 @@ deHottisSmmapdMIB MODULE-IDENTITY
" "
::= { deHottis 2 } ::= { deHottis 2 }
dhsMIBObjects OBJECT IDENTIFIER ::= { deHottisSmmapdMIB 1 } dhsSmmapdStats OBJECT IDENTIFIER ::= { deHottisSmmapdMIB 1 }
dhsNumber1 OBJECT-TYPE dhsNumber1 OBJECT-TYPE
SYNTAX Counter32 SYNTAX Counter32
@ -27,7 +27,7 @@ dhsNumber1 OBJECT-TYPE
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"number1" "number1"
::= { dhsMIBObjects 1 } ::= { dhsSmmapdStats 1 }
DhsServerStat ::= DhsServerStat ::=
@ -53,7 +53,7 @@ dhsServerStat OBJECT-TYPE
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Statistics of the server" "Statistics of the server"
::= { dhsMIBObjects 2 } ::= { dhsSmmapdStats 2 }
dhsAccepted OBJECT-TYPE dhsAccepted OBJECT-TYPE
@ -161,6 +161,127 @@ dhsNetStringFailure OBJECT-TYPE
::= { dhsServerStat 13 } ::= { dhsServerStat 13 }
DhsVerifierStat ::=
SEQUENCE {
dhsVCacheEntries Integer32,
dhsVRunningWorkerThreads Integer32,
dhsVWorkerThreads Counter32,
dhsVFailedWorkerThreads Counter32,
dhsVTimedOutWorkerThreads Counter32,
dhsVRunningCheckerThreads Integer32,
dhsVCheckerThreads Counter32,
dhsVFailedCheckerThreads Counter32,
dhsVAnsweredFromCache Counter32,
dhsVReturnedOK Counter32,
dhsVReturnedNOK Counter32,
dhsVReturnedTNOK Counter32
}
dhsVerifierStat OBJECT-TYPE
SYNTAX DhsVerifierStat
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Statistics of the verifier"
::= { dhsSmmapdStats 3 }
dhsVCacheEntries OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Entries in verifier cache"
::= { dhsVerifierStat 1 }
dhsVRunningWorkerThreads OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Running verifier worker threads"
::= { dhsVerifierStat 2 }
dhsVWorkerThreads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"verifier worker threads"
::= { dhsVerifierStat 3 }
dhsVFailedWorkerThreads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"failed to start verifier worker threads"
::= { dhsVerifierStat 4 }
dhsVTimedOutWorkerThreads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"timed out verifier worker threads"
::= { dhsVerifierStat 5 }
dhsVRunningCheckerThreads OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Running verifier checker threads"
::= { dhsVerifierStat 6 }
dhsVCheckerThreads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"verifier checker threads"
::= { dhsVerifierStat 7 }
dhsVFailedCheckerThreads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"failed to start verifier checker threads"
::= { dhsVerifierStat 8 }
dhsVAnsweredFromCache OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"answers taken directly from cache"
::= { dhsVerifierStat 9 }
dhsVReturnedOK OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"verifier returned OK"
::= { dhsVerifierStat 10 }
dhsVReturnedNOK OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"verifier returned NOK"
::= { dhsVerifierStat 11 }
dhsVReturnedTNOK OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"verifier returned TNOK"
::= { dhsVerifierStat 12 }
END END

View File

@ -6,7 +6,7 @@ port = 8887
; plugin_dir = /home/who/Sources/sf/smmapdfw ; plugin_dir = /home/who/Sources/sf/smmapdfw
; plugins = test_worker1 test_worker2 verifier cyruscheck lua_worker ; plugins = test_worker1 test_worker2 verifier cyruscheck lua_worker
plugins = verifier plugins = verifier
enable_stats = 1 enable_stats = 0
enable_snmp = 1 enable_snmp = 1
[snmp] [snmp]

View File

@ -1,3 +1,25 @@
/*
Copyright (C) 2004, Wolfgang Hottgenroth
This file is part of smmapdfw.
smmapdfw is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
smmapdfw is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
License for more details.
You should have received a copy of the GNU General Public License
along with smmapdfw. If not, write to the Free Software Foundation, 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "config.h" #include "config.h"
#if ENABLE_NETSNMP==1 #if ENABLE_NETSNMP==1
@ -5,6 +27,8 @@
#include <net-snmp/net-snmp-includes.h> #include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h> #include <net-snmp/agent/net-snmp-agent-includes.h>
#include <syslog.h>
#include "stats.h" #include "stats.h"
#include "smmapd.h" #include "smmapd.h"
@ -51,13 +75,11 @@ handle_it(netsnmp_mib_handler *handler,
u_char type) u_char type)
{ {
int i, cnt, value; int i, cnt, value;
printf("*** handler: %s\n", reginfo->handlerName);
for (i=0; i<num_var_cnt_map; i++) for (i=0; i<num_var_cnt_map; i++)
if (0 == strcmp(reginfo->handlerName, var_cnt_map[i].var)) { if (0 == strcmp(reginfo->handlerName, var_cnt_map[i].var)) {
cnt = var_cnt_map[i].cnt; cnt = var_cnt_map[i].cnt;
break; break;
} }
printf("*** cnt: %d\n", cnt);
switch(reqinfo->mode) { switch(reqinfo->mode) {
case MODE_GET: case MODE_GET:
@ -99,7 +121,7 @@ void map_var_cnt(int cnt, char* var) {
num_var_cnt_map++; num_var_cnt_map++;
} }
#define NETSNMP_REGISTER_SCALAR(A, B, C) netsnmp_register_scalar(netsnmp_create_handler_registration(#A, B, A##_oid, OID_LENGTH(A##_oid), HANDLER_CAN_RONLY)); map_var_cnt(C, #A); printf("registered: %s\n", #A) #define NETSNMP_REGISTER_SCALAR(A, B, C) netsnmp_register_scalar(netsnmp_create_handler_registration(#A, B, A##_oid, OID_LENGTH(A##_oid), HANDLER_CAN_RONLY)); map_var_cnt(C, #A)
void void
init_dhsMIBObjects(void) init_dhsMIBObjects(void)
@ -119,6 +141,19 @@ init_dhsMIBObjects(void)
static oid dhsTimeoutFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,12 }; static oid dhsTimeoutFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,12 };
static oid dhsNetStringFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,13 }; static oid dhsNetStringFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,13 };
static oid dhsVCacheEntries_oid[] = { 1,3,6,1,4,1,9676,2,1,3,1 };
static oid dhsVRunningWorkerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,2 };
static oid dhsVWorkerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,3 };
static oid dhsVFailedWorkerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,4 };
static oid dhsVTimedOutWorkerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,5 };
static oid dhsVRunningCheckerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,6 };
static oid dhsVCheckerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,7 };
static oid dhsVFailedCheckerThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,3,8 };
static oid dhsVAnsweredFromCache_oid[] = { 1,3,6,1,4,1,9676,2,1,3,9 };
static oid dhsVReturnedOK_oid[] = { 1,3,6,1,4,1,9676,2,1,3,10 };
static oid dhsVReturnedNOK_oid[] = { 1,3,6,1,4,1,9676,2,1,3,11 };
static oid dhsVReturnedTNOK_oid[] = { 1,3,6,1,4,1,9676,2,1,3,12 };
DEBUGMSGTL(("dhsMIBObjects", "Initializing\n")); DEBUGMSGTL(("dhsMIBObjects", "Initializing\n"));
NETSNMP_REGISTER_SCALAR(dhsNumber1, handle_number1, 0); NETSNMP_REGISTER_SCALAR(dhsNumber1, handle_number1, 0);
@ -136,10 +171,24 @@ init_dhsMIBObjects(void)
NETSNMP_REGISTER_SCALAR(dhsTimeoutFailure, handle_counter32, SMM_TIMEOUT_NOK+STAT_CNT_OFFSET); NETSNMP_REGISTER_SCALAR(dhsTimeoutFailure, handle_counter32, SMM_TIMEOUT_NOK+STAT_CNT_OFFSET);
NETSNMP_REGISTER_SCALAR(dhsNetStringFailure, handle_counter32, SMM_NETSTRING_UNPARSABLE+STAT_CNT_OFFSET); NETSNMP_REGISTER_SCALAR(dhsNetStringFailure, handle_counter32, SMM_NETSTRING_UNPARSABLE+STAT_CNT_OFFSET);
NETSNMP_REGISTER_SCALAR(dhsVCacheEntries, handle_integer32, STAT_CNT_VERIFIER_CACHE);
NETSNMP_REGISTER_SCALAR(dhsVRunningWorkerThreads, handle_integer32, STAT_CNT_VERIFIER_WORKER_R_THREADS);
NETSNMP_REGISTER_SCALAR(dhsVWorkerThreads, handle_counter32, STAT_CNT_VERIFIER_WORKER_THREADS);
NETSNMP_REGISTER_SCALAR(dhsVFailedWorkerThreads, handle_counter32, STAT_CNT_VERIFIER_WORKER_THREADS_FAILED);
NETSNMP_REGISTER_SCALAR(dhsVTimedOutWorkerThreads, handle_counter32, STAT_CNT_VERIFIER_WORKER_THREADS_TIMEOUT);
NETSNMP_REGISTER_SCALAR(dhsVRunningCheckerThreads, handle_integer32, STAT_CNT_VERIFIER_CHECKER_R_THREADS);
NETSNMP_REGISTER_SCALAR(dhsVCheckerThreads, handle_counter32, STAT_CNT_VERIFIER_CHECKER_THREADS);
NETSNMP_REGISTER_SCALAR(dhsVFailedCheckerThreads, handle_counter32, STAT_CNT_VERIFIER_CHECKER_THREADS_FAILED);
NETSNMP_REGISTER_SCALAR(dhsVAnsweredFromCache, handle_counter32, STAT_CNT_VERIFIER_ANSWERED_FROM_CACHE);
NETSNMP_REGISTER_SCALAR(dhsVReturnedOK, handle_counter32, STAT_CNT_VERIFIER_RETURNED_OK);
NETSNMP_REGISTER_SCALAR(dhsVReturnedNOK, handle_counter32, STAT_CNT_VERIFIER_RETURNED_NOK);
NETSNMP_REGISTER_SCALAR(dhsVReturnedTNOK, handle_counter32, STAT_CNT_VERIFIER_RETURNED_TNOK);
} }
void snmp_subagent_main () { void snmp_subagent_main () {
snmp_enable_stderrlog(); snmp_disable_log();
netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
init_agent("smmapd_subagent"); init_agent("smmapd_subagent");
init_dhsMIBObjects(); init_dhsMIBObjects();