diff options
author | Sergey Poznyakoff <gray@nxc.no> | 2018-02-01 21:36:41 +0100 |
---|---|---|
committer | Sergey Poznyakoff <gray@nxc.no> | 2018-02-01 21:36:41 +0100 |
commit | 8bba300e4118da5737b2f015028a9ca425e83628 (patch) | |
tree | 7de98c55cf47c87d17f0404c44f91f879eafb898 /src | |
parent | 85f908426e444a596b979a9569bf83fadfa5ace1 (diff) | |
download | varnish-mib-8bba300e4118da5737b2f015028a9ca425e83628.tar.gz varnish-mib-8bba300e4118da5737b2f015028a9ca425e83628.tar.bz2 |
Add new object IDs as per https://puszcza.gnu.org.ua/bugs/?362
* src/Makefile.am: Make sure VARNISH-MIB.txt is read from the src
directory.
* src/VARNISH-MIB.txt: Add new mibs.
* src/varnish_mib.mib2c: Add new objects. Make sure objects
marked with varnish_type NULL will never be returned.
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 3 | ||||
-rw-r--r-- | src/VARNISH-MIB.txt | 136 | ||||
-rw-r--r-- | src/varnish_mib.mib2c | 33 |
3 files changed, 164 insertions, 8 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 3a7f12a..3b5547b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,32 +28,33 @@ varnish_mib_la_SOURCES = \ statdict.c\ varnish_mib.c\ varnish_mib.h\ vcli.c BUILT_SOURCES = \ varnish_mib.c\ varnish_mib.h varnish_mib.c varnish_mib.h: varnish_mib.mib2c VARNISH-MIB.txt .mib2c.c: - MIBDIRS=${top_srcdir}/src:${NET_SNMP_MIBDIRS} MIBS="+VARNISH-MIB" \ + MIBDIRS=${top_srcdir}/src:${NET_SNMP_MIBDIRS} MIBS="VARNISH-MIB:${NET_SNMP_MIBS}" \ mib2c -c $< -f $@ varnish #NET_SNMP_INCLUDES = `$(NET_SNMP_CONFIG) --cflags` #NET_SNMP_INCLUDES = NET_SNMP_LIBS = `$(NET_SNMP_CONFIG) --libs` NET_SNMP_EXLIBS = `$(NET_SNMP_CONFIG) --external-libs` NET_SNMP_MIBDIRS = `net-snmp-config --mibdirs` +NET_SNMP_MIBS = `net-snmp-config --default-mibs` AM_LDFLAGS = \ -module \ -export-dynamic\ -avoid-version \ -rpath '$(dlmoddir)'\ ${VARNISHAPI_LIBS}\ $(NET_SNMP_LIBS)\ $(NET_SNMP_EXLIBS) AM_CPPFLAGS=-I. ${VARNISHAPI_CFLAGS} diff --git a/src/VARNISH-MIB.txt b/src/VARNISH-MIB.txt index 59a9d42..8d60477 100644 --- a/src/VARNISH-MIB.txt +++ b/src/VARNISH-MIB.txt @@ -11,45 +11,47 @@ VARNISH-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, enterprises, Counter64, TimeTicks, Counter32, Integer32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, DateAndTime FROM SNMPv2-TC InetAddressIPv4, InetAddressIPv6, InetPortNumber FROM INET-ADDRESS-MIB OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF; varnishMIB MODULE-IDENTITY - LAST-UPDATED "201509250838Z" + LAST-UPDATED "201802012132Z" ORGANIZATION "Shared Autonomous sYstems" CONTACT-INFO "Morten Hermanrud <mhe@say.no> Sergey Poznyakoff <gray@gnu.org> " DESCRIPTION "This MIB module defines objects for Varnish reverse web proxy." - REVISION "201509250838Z" + REVISION "201802012132Z" DESCRIPTION "Second revision." ::= { varnish 0 } varnish OBJECT IDENTIFIER ::= { enterprises 33043 6 1 } client OBJECT IDENTIFIER ::= { varnish 1 } backend OBJECT IDENTIFIER ::= { varnish 2 } total OBJECT IDENTIFIER ::= { varnish 3 } master OBJECT IDENTIFIER ::= { varnish 4 } session OBJECT IDENTIFIER ::= { varnish 5 } threads OBJECT IDENTIFIER ::= { varnish 6 } bans OBJECT IDENTIFIER ::= { varnish 7 } agent OBJECT IDENTIFIER ::= { varnish 8 } +objects OBJECT IDENTIFIER ::= { varnish 9 } +vcl OBJECT IDENTIFIER ::= { varnish 10 } clientAcceptedConnections OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Client connections accepted." ::= { client 1 } clientRequestsReceived OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only @@ -774,24 +776,154 @@ banRefCount OBJECT-TYPE DESCRIPTION "Number of references to this ban." ::= { varnishBanEntry 3 } banExpression OBJECT-TYPE SYNTAX VarnishBanString MAX-ACCESS read-only STATUS current DESCRIPTION "VCL expression of the ban." ::= { varnishBanEntry 4 } +objectsCount OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Approximate number of HTTP objects (headers + body, + if present) in the cache." + ::= { objects 1 } + +objectsVampire OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of unresurrected objects." + ::= { objects 2 } + +objectsCore OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Approximate number of object metadata elements in the + cache. Each object needs an objectcore, extra + objectcores are for hit-for-miss, hit-for-pass and + busy objects." + ::= { objects 3 } + +objectsHead OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Approximate number of different hash entries in the cache." + ::= { objects 4 } + +objectsExpired OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of objects that expired from cache because of old age." + ::= { objects 5 } + +objectsLRUNuked OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "How many objects have been forcefully evicted from + storage to make room for a new object." + ::= { objects 6 } + +objectsLRUMoved OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of move operations done on the LRU list." + ::= { objects 7 } + +objectsPurges OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of purge operations executed" + ::= { objects 8 } + +objectsObjPurged OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of purged objects." + ::= { objects 9 } + +objectsGzip OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of gzip operations." + ::= { objects 10 } + +objectsGunzip OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of gunzip operations." + ::= { objects 11 } + + +-- +-- VCL statistics +-- + +vclTotal OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of loaded VCLs in total." + ::= { vcl 1 } + +vclAvail OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of VCLs available." + ::= { vcl 2 } + +vclDiscard OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of discarded VCLs." + ::= { vcl 3 } + +vclFail OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "Number of VCL failures" + ::= { vcl 4 } + -- -- Groups and Compliance -- varnishConfs OBJECT IDENTIFIER ::= { varnish 100 } varnishGroups OBJECT IDENTIFIER ::= { varnishConfs 1 } varnishCompl OBJECT IDENTIFIER ::= { varnishConfs 2 } -- -- Groups -- varnishGroup OBJECT-GROUP OBJECTS { diff --git a/src/varnish_mib.mib2c b/src/varnish_mib.mib2c index a458723..155df42 100644 --- a/src/varnish_mib.mib2c +++ b/src/varnish_mib.mib2c @@ -89,25 +89,41 @@ $vars{'varnish_translate_table'} = { bansAdded => [ 'DICT', 'MAIN.bans_added' ], bansDeleted => [ 'DICT', 'MAIN.bans_deleted' ], bansTested => [ 'DICT', 'MAIN.bans_tested' ], bansObjectsKilled => [ 'DICT', 'MAIN.bans_obj_killed' ], bansLurkerTested => [ 'DICT', 'MAIN.bans_lurker_tested' ], bansTestTested => [ 'DICT', 'MAIN.bans_tests_tested' ], bansLurkerTestTested => [ 'DICT', 'MAIN.bans_lurker_tests_tested' ], bansLurkerObjKilled => [ 'DICT', 'MAIN.bans_lurker_obj_killed' ], bansDups => [ 'DICT', 'MAIN.bans_dups' ], bansLurkerContention => [ 'DICT', 'MAIN.bans_lurker_contention' ], bansPersistedBytes => [ 'DICT', 'MAIN.bans_persisted_bytes' ], bansPersistedFragmentation => [ 'DICT', 'MAIN.bans_persisted_fragmentation' ], - + + objectsCount => [ 'DICT', 'MAIN.n_object' ], + objectsVampire => [ 'DICT', 'MAIN.n_vampireobject' ], + objectsCore => [ 'DICT', 'MAIN.n_objectcore' ], + objectsHead => [ 'DICT', 'MAIN.n_objecthead' ], + objectsExpired => [ 'DICT', 'MAIN.n_expired' ], + objectsLRUNuked => [ 'DICT', 'MAIN.n_lru_nuked' ], + objectsLRUMoved => [ 'DICT', 'MAIN.n_lru_moved' ], + objectsPurges => [ 'DICT', 'MAIN.n_purges' ], + objectsObjPurged => [ 'DICT', 'MAIN.n_obj_purged' ], + objectsGzip => [ 'DICT', 'MAIN.n_gzip' ], + objectsGunzip => [ 'DICT', 'MAIN.n_gunzip' ], + + vclTotal => [ 'DICT', 'MAIN.n_vcl' ], + vclAvail => [ 'DICT', 'MAIN.n_vcl_avail' ], + vclDiscard => [ 'DICT', 'MAIN.n_vcl_discard' ], + vclFail => [ 'DICT', 'MAIN.vcl_fail' ], }; $vars{'varnish_translate'} = sub { my $name = shift; my $r = $vars{'varnish_translate_table'}->{$name}; if (!defined($r)) { print STDERR "no translation for $name!\n"; exit(1); } $vars{'varnish_type'} = $r->[0]; @@ -228,27 +244,29 @@ varnish_get_vsm_data() } } return vd; } /* Variable handlers. An instance handler only hands us one request at a time, unwrapping any eventual GETNEXT requests. */ @foreach $i scalar@ +/* COMMX $i */ @startperl@ &{$vars{'varnish_translate'}}($vars{'i'}); @endperl@ +@if $varnish_type ne 'NULL'@ $varnish_if static int handle_$i(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { @if $i.settable@ int ret; @end@ if (!varnish_get_vsm_data()) @@ -293,33 +311,33 @@ handle_$i(netsnmp_mib_handler *handler, valptr, valsize); @if $varnish_get_free@ free(valptr); @end@ @elsif $varnish_type eq 'VAR'@ @if $i.type eq 'ASN_OCTET_STR'@ snmp_set_var_typed_value(requests->requestvb, $i.type, $varnish_member, strlen($varnish_member)); @else@ snmp_set_var_typed_value(requests->requestvb, $i.type, &$varnish_member, sizeof($varnish_member)); @end@ - @elsif $varnish_type eq 'NULL'@ + @elsif $varnish_type eq 'NUMBER'@ { @if $i.type eq 'ASN_COUNTER64'@ - struct counter64 ctr = { 0, 0}; + struct counter64 ctr = { ($varnish_member>>32)&0xffffffff, ($varnish_member)&0xffffffff }; snmp_set_var_typed_value(requests->requestvb, $i.type, &ctr, sizeof(ctr)); @else@ - uint64_t val; + uint64_t val = $varnish_member; snmp_set_var_typed_value(requests->requestvb, $i.type, &val, sizeof(val)); @end@ } @else@ @printf "unrecognized type %s for %s" $varnish_type $i@ @end@ break; @if $i.settable@ /* @@ -379,24 +397,25 @@ handle_$i(netsnmp_mib_handler *handler, @end@ default: /* we should never get here, so this is a really bad error */ snmp_log(LOG_ERR, "unknown mode (%d) in handle_${i}\n", reqinfo->mode ); return SNMP_ERR_GENERR; } return SNMP_ERR_NOERROR; } $varnish_endif @end@ +@end@ @foreach $i table@ ## Determine the first/last column names @eval $first_column = "-"@ @eval $last_column = "-"@ @foreach $c column@ @if $c.readable@ @if "$first_column" eq "-"@ @eval $first_column = $c@ @end@ @eval $last_column = $c@ @end@ @@ -565,63 +584,67 @@ initialize_table_$i(void) } @end@ /** Initializes the $name module */ void init_$modulename(void) { @foreach $i scalar@ @startperl@ &{$vars{'varnish_translate'}}($vars{'i'}); @endperl@ + @if $varnish_type ne 'NULL'@ $varnish_if const oid ${i}_oid[] = { $i.commaoid }; $varnish_endif + @end@ @end@ DEBUGMSGTL(("$modulename", "Initializing\n")); if (!register_config_handler("snmpd", "varnishBanTableTimeout", varnish_ban_table_timeout_parser, NULL, "varnishBanTableTimeout SECONDS")) snmp_log(LOG_ERR,"can't register config handler\n"); if (!register_config_handler("snmpd", "varnishBackendTableTimeout", varnish_backend_table_timeout_parser, NULL, "varnishBackendTableTimeout SECONDS")) snmp_log(LOG_ERR,"can't register config handler\n"); if (!register_config_handler("snmpd", "varnishCLIPortTimeout", varnish_vcli_timeout_parser, NULL, "varnishCLIPortTimeout SECONDS")) snmp_log(LOG_ERR,"can't register config handler\n"); @foreach $i scalar@ @startperl@ &{$vars{'varnish_translate'}}($vars{'i'}); @endperl@ + @if $varnish_type ne 'NULL'@ $varnish_if netsnmp_register_scalar( netsnmp_create_handler_registration("$i", handle_$i, ${i}_oid, OID_LENGTH(${i}_oid), @if !$i.settable@ HANDLER_CAN_RONLY @end@ @if $i.settable@ HANDLER_CAN_RWRITE @end@ )); -$varnish_endif +$varnish_endif + @end@ @end@ @foreach $i table@ initialize_table_$i(); @end@ varnish_snmp_init(); } void deinit_$modulename(void) { varnish_snmp_deinit(); } |