From 27adc4b1a342183e2b80983e3001cb489d00faea Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Wed, 27 Apr 2005 17:51:54 +0000 Subject: [PATCH] explode connection monitored info into dedicated attributes --- servers/slapd/back-monitor/back-monitor.h | 15 +- servers/slapd/back-monitor/conn.c | 218 ++++++++++++++-------- servers/slapd/back-monitor/init.c | 93 +++++++++ 3 files changed, 243 insertions(+), 83 deletions(-) diff --git a/servers/slapd/back-monitor/back-monitor.h b/servers/slapd/back-monitor/back-monitor.h index c98faa1c55..115d024678 100644 --- a/servers/slapd/back-monitor/back-monitor.h +++ b/servers/slapd/back-monitor/back-monitor.h @@ -108,6 +108,19 @@ typedef struct monitor_info_t { AttributeDescription *mi_ad_monitorConnectionPeerAddress; AttributeDescription *mi_ad_monitorTimestamp; AttributeDescription *mi_ad_monitorOverlay; + AttributeDescription *mi_ad_monitorConnectionProtocol; + AttributeDescription *mi_ad_monitorConnectionOpsReceived; + AttributeDescription *mi_ad_monitorConnectionOpsExecuting; + AttributeDescription *mi_ad_monitorConnectionOpsPending; + AttributeDescription *mi_ad_monitorConnectionOpsCompleted; + AttributeDescription *mi_ad_monitorConnectionGet; + AttributeDescription *mi_ad_monitorConnectionRead; + AttributeDescription *mi_ad_monitorConnectionWrite; + AttributeDescription *mi_ad_monitorConnectionMask; + AttributeDescription *mi_ad_monitorConnectionListener; + AttributeDescription *mi_ad_monitorConnectionPeerDomain; + AttributeDescription *mi_ad_monitorConnectionStartTime; + AttributeDescription *mi_ad_monitorConnectionActivityTime; /* * Generic description attribute @@ -254,7 +267,7 @@ typedef struct monitor_subsys_t { extern BackendDB *be_monitor; /* increase this bufsize if entries in string form get too big */ -#define BACKMONITOR_BUFSIZE 1024 +#define BACKMONITOR_BUFSIZE 8192 extern int monitor_back_register_entry( diff --git a/servers/slapd/back-monitor/conn.c b/servers/slapd/back-monitor/conn.c index e6a240990d..41c9534387 100644 --- a/servers/slapd/back-monitor/conn.c +++ b/servers/slapd/back-monitor/conn.c @@ -285,11 +285,74 @@ conn_create( ldap_pvt_thread_mutex_unlock( &gmtime_mutex ); #endif +#ifndef HAVE_GMTIME_R + ldap_pvt_thread_mutex_lock( &gmtime_mutex ); +#endif + +#ifdef HAVE_GMTIME_R + ltm = gmtime_r( &c->c_starttime, &tm_buf ); +#else + ltm = gmtime( &c->c_starttime ); +#endif + lutil_gentime( buf2, sizeof( buf2 ), ltm ); + +#ifdef HAVE_GMTIME_R + ltm = gmtime_r( &c->c_activitytime, &tm_buf ); +#else + ltm = gmtime( &c->c_activitytime ); +#endif + lutil_gentime( buf3, sizeof( buf3 ), ltm ); + +#ifndef HAVE_GMTIME_R + ldap_pvt_thread_mutex_unlock( &gmtime_mutex ); +#endif /* HAVE_GMTIME_R */ + snprintf( buf, sizeof( buf ), "dn: cn=Connection %ld,%s\n" "objectClass: %s\n" "structuralObjectClass: %s\n" "cn: Connection %ld\n" + + /* NOTE: this will disappear, as the exploded data + * has been moved to dedicated attributes */ + "%s: " + "%ld " + ": %ld " + ": %ld/%ld/%ld/%ld " + ": %ld/%ld/%ld " + ": %s%s%s%s%s%s " + ": %s " + ": %s " + ": %s " + ": %s " + ": %s " + ": %s " + ": %s\n" + + "%s: %lu\n" + "%s: %ld\n" + + "%s: %ld\n" + "%s: %ld\n" + "%s: %ld\n" + "%s: %ld\n" + + "%s: %ld\n" + "%s: %ld\n" + "%s: %ld\n" + + "%s: %s%s%s%s%s%s\n" + + "%s: %s\n" + + "%s: %s\n" + "%s: %s\n" + "%s: %s\n" + "%s: %s\n" + + "%s: %s\n" + "%s: %s\n" + "creatorsName: %s\n" "modifiersName: %s\n" "createTimestamp: %s\n" @@ -298,6 +361,79 @@ conn_create( mi->mi_oc_monitorConnection->soc_cname.bv_val, mi->mi_oc_monitorConnection->soc_cname.bv_val, c->c_connid, + + mi->mi_ad_monitoredInfo->ad_cname.bv_val, + c->c_connid, + (long) c->c_protocol, + c->c_n_ops_received, c->c_n_ops_executing, + c->c_n_ops_pending, c->c_n_ops_completed, + + /* add low-level counters here */ + c->c_n_get, c->c_n_read, c->c_n_write, + + c->c_currentber ? "r" : "", + c->c_writewaiter ? "w" : "", + LDAP_STAILQ_EMPTY( &c->c_ops ) ? "" : "x", + LDAP_STAILQ_EMPTY( &c->c_pending_ops ) ? "" : "p", + connection_state2str( c->c_conn_state ), + c->c_sasl_bind_in_progress ? "S" : "", + + c->c_dn.bv_len ? c->c_dn.bv_val : SLAPD_ANONYMOUS, + + c->c_listener_url.bv_val, + c->c_peer_domain.bv_val, + c->c_peer_name.bv_val, + c->c_sock_name.bv_val, + + buf2, + buf3, + + mi->mi_ad_monitorConnectionNumber->ad_cname.bv_val, + c->c_connid, + mi->mi_ad_monitorConnectionProtocol->ad_cname.bv_val, + (long)c->c_protocol, + + mi->mi_ad_monitorConnectionOpsReceived->ad_cname.bv_val, + c->c_n_ops_received, + mi->mi_ad_monitorConnectionOpsExecuting->ad_cname.bv_val, + c->c_n_ops_executing, + mi->mi_ad_monitorConnectionOpsPending->ad_cname.bv_val, + c->c_n_ops_pending, + mi->mi_ad_monitorConnectionOpsCompleted->ad_cname.bv_val, + c->c_n_ops_completed, + + mi->mi_ad_monitorConnectionGet->ad_cname.bv_val, + c->c_n_get, + mi->mi_ad_monitorConnectionRead->ad_cname.bv_val, + c->c_n_read, + mi->mi_ad_monitorConnectionWrite->ad_cname.bv_val, + c->c_n_write, + + mi->mi_ad_monitorConnectionMask->ad_cname.bv_val, + c->c_currentber ? "r" : "", + c->c_writewaiter ? "w" : "", + LDAP_STAILQ_EMPTY( &c->c_ops ) ? "" : "x", + LDAP_STAILQ_EMPTY( &c->c_pending_ops ) ? "" : "p", + connection_state2str( c->c_conn_state ), + c->c_sasl_bind_in_progress ? "S" : "", + + mi->mi_ad_monitorConnectionAuthzDN->ad_cname.bv_val, + c->c_dn.bv_len ? c->c_dn.bv_val : SLAPD_ANONYMOUS, + + mi->mi_ad_monitorConnectionListener->ad_cname.bv_val, + c->c_listener_url.bv_val, + mi->mi_ad_monitorConnectionPeerDomain->ad_cname.bv_val, + c->c_peer_domain.bv_val, + mi->mi_ad_monitorConnectionLocalAddress->ad_cname.bv_val, + c->c_peer_name.bv_val, + mi->mi_ad_monitorConnectionPeerAddress->ad_cname.bv_val, + c->c_sock_name.bv_val, + + mi->mi_ad_monitorConnectionStartTime->ad_cname.bv_val, + buf2, + mi->mi_ad_monitorConnectionActivityTime->ad_cname.bv_val, + buf3, + mi->mi_creatorsName.bv_val, mi->mi_creatorsName.bv_val, ctmbuf, @@ -315,88 +451,6 @@ conn_create( return( -1 ); } -#ifndef HAVE_GMTIME_R - ldap_pvt_thread_mutex_lock( &gmtime_mutex ); -#endif - -#ifdef HAVE_GMTIME_R - ltm = gmtime_r( &c->c_starttime, &tm_buf ); -#else - ltm = gmtime( &c->c_starttime ); -#endif - lutil_gentime( buf2, sizeof( buf2 ), ltm ); - -#ifdef HAVE_GMTIME_R - ltm = gmtime_r( &c->c_activitytime, &tm_buf ); -#else - ltm = gmtime( &c->c_activitytime ); -#endif - lutil_gentime( buf3, sizeof( buf3 ), ltm ); - -#ifndef HAVE_GMTIME_R - ldap_pvt_thread_mutex_unlock( &gmtime_mutex ); -#endif /* HAVE_GMTIME_R */ - - /* monitored info */ - sprintf( buf, - "%ld " - ": %ld " - ": %ld/%ld/%ld/%ld " - ": %ld/%ld/%ld " - ": %s%s%s%s%s%s " - ": %s " - ": %s " - ": %s " - ": %s " - ": %s " - ": %s " - ": %s", - c->c_connid, - (long) c->c_protocol, - c->c_n_ops_received, c->c_n_ops_executing, - c->c_n_ops_pending, c->c_n_ops_completed, - - /* add low-level counters here */ - c->c_n_get, c->c_n_read, c->c_n_write, - - c->c_currentber ? "r" : "", - c->c_writewaiter ? "w" : "", - LDAP_STAILQ_EMPTY( &c->c_ops ) ? "" : "x", - LDAP_STAILQ_EMPTY( &c->c_pending_ops ) ? "" : "p", - connection_state2str( c->c_conn_state ), - c->c_sasl_bind_in_progress ? "S" : "", - - c->c_dn.bv_len ? c->c_dn.bv_val : SLAPD_ANONYMOUS, - - c->c_listener_url.bv_val, - c->c_peer_domain.bv_val, - c->c_peer_name.bv_val, - c->c_sock_name.bv_val, - - buf2, - buf3 - ); - - ber_str2bv( buf, 0, 0, &bv ); - attr_merge_one( e, mi->mi_ad_monitoredInfo, &bv, &bv ); - - /* connection number */ - snprintf( buf, sizeof( buf ), "%ld", c->c_connid ); - ber_str2bv( buf, 0, 0, &bv ); - attr_merge_one( e, mi->mi_ad_monitorConnectionNumber, &bv, &bv ); - - /* authz DN */ - attr_merge_one( e, mi->mi_ad_monitorConnectionAuthzDN, - &c->c_dn, &c->c_ndn ); - - /* local address */ - attr_merge_one( e, mi->mi_ad_monitorConnectionLocalAddress, - &c->c_sock_name, &c->c_sock_name ); - - /* peer address */ - attr_merge_one( e, mi->mi_ad_monitorConnectionPeerAddress, - &c->c_peer_name, &c->c_peer_name ); - mp = monitor_entrypriv_create(); if ( mp == NULL ) { return -1; diff --git a/servers/slapd/back-monitor/init.c b/servers/slapd/back-monitor/init.c index abbc20457b..65136ddcd2 100644 --- a/servers/slapd/back-monitor/init.c +++ b/servers/slapd/back-monitor/init.c @@ -1101,6 +1101,99 @@ monitor_back_db_init( "DESC 'name of restricted operation for a given database' " "SUP managedInfo )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_restrictedOperation ) }, + { "monitorConnectionProtocol", "( 1.3.6.1.4.1.4203.666.1.39 " + "NAME 'monitorConnectionProtocol' " + "DESC 'monitor connection protocol' " + "SUP monitoredInfo " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionProtocol) }, + { "monitorConnectionOpsReceived", "( 1.3.6.1.4.1.4203.666.1.40 " + "NAME 'monitorConnectionOpsReceived' " + "DESC 'monitor number of operations received by the connection' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionOpsReceived) }, + { "monitorConnectionOpsExecuting", "( 1.3.6.1.4.1.4203.666.1.41 " + "NAME 'monitorConnectionOpsExecuting' " + "DESC 'monitor number of operations in execution within the connection' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionOpsExecuting) }, + { "monitorConnectionOpsPending", "( 1.3.6.1.4.1.4203.666.1.42 " + "NAME 'monitorConnectionOpsPending' " + "DESC 'monitor number of pending operations within the connection' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionOpsPending) }, + { "monitorConnectionOpsCompleted", "( 1.3.6.1.4.1.4203.666.1.43 " + "NAME 'monitorConnectionOpsCompleted' " + "DESC 'monitor number of operations completed within the connection' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionOpsCompleted) }, + { "monitorConnectionGet", "( 1.3.6.1.4.1.4203.666.1.44 " + "NAME 'monitorConnectionGet' " + "DESC 'monitor FIXME???' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionGet) }, + { "monitorConnectionRead", "( 1.3.6.1.4.1.4203.666.1.45 " + "NAME 'monitorConnectionRead' " + "DESC 'monitor FIXME???' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionRead) }, + { "monitorConnectionWrite", "( 1.3.6.1.4.1.4203.666.1.46 " + "NAME 'monitorConnectionWrite' " + "DESC 'monitor FIXME???' " + "SUP monitorCounter " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionWrite) }, + { "monitorConnectionMask", "( 1.3.6.1.4.1.4203.666.1.47 " + "NAME 'monitorConnectionMask' " + "DESC 'monitor connection mask' " + "SUP monitoredInfo " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionMask) }, + { "monitorConnectionListener", "( 1.3.6.1.4.1.4203.666.1.48 " + "NAME 'monitorConnectionListener' " + "DESC 'monitor connection listener' " + "SUP monitoredInfo " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionListener) }, + { "monitorConnectionPeerDomain", "( 1.3.6.1.4.1.4203.666.1.49 " + "NAME 'monitorConnectionPeerDomain' " + "DESC 'monitor connection peer domain' " + "SUP monitoredInfo " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionPeerDomain) }, + { "monitorConnectionStartTime", "( 1.3.6.1.4.1.4203.666.1.50 " + "NAME 'monitorConnectionStartTime' " + "DESC 'monitor connection start time' " + "SUP monitorTimestamp " + "SINGLE-VALUE " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionStartTime) }, + { "monitorConnectionActivityTime", "( 1.3.6.1.4.1.4203.666.1.51 " + "NAME 'monitorConnectionActivityTime' " + "DESC 'monitor connection activity time' " + "SUP monitorTimestamp " + "SINGLE-VALUE " + "NO-USER-MODIFICATION " + "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorConnectionActivityTime) }, #ifdef INTEGRATE_CORE_SCHEMA { NULL, NULL, 0, -1 }, /* description */ { NULL, NULL, 0, -1 }, /* seeAlso */ -- 2.39.5