Details
-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
5.0.0, 5.1.0, 5.5.0
-
None
Description
In many user deployments, there may be a separation between the application development team and the database management team. There are a few simple pieces of telemetry which we would like to gather from existing processes (cbcollect_info) but there is not currently a way for components that are not directly ns_server managed to feed in such telemetry.
One interface that does exist for this is the client side error report. That was originally added to capture issues in the UI code to a central place, so it is not necessarily at the right auth level or appropriate for the volume of requests, but it is a candidate.
Requirements of this interface to be fairly future proof…
- Able to support at least 5000 persistent connections
- Able to take a large number of connections in a short timeframe
- Able to handle a high throughput of requests safely, meaning
- Handle logging up to ~10KB records at a rate of 1000 requests per second and
- Throttle itself rather than perturb/destablize the component if requests go beyond this level safely, meaning return an HTTP 503 or whatever is appropriate
As an example of use case, SDKs INFO level log at startup with environmental configuration. This is infrequent, but hugely valuable to understand the census and configuration. Having this would help with mean time to resolution when investigating issues.
An INFO level example from a current client:
11:21:22.023 [main] INFO c.c.client.core.CouchbaseCore - CouchbaseEnvironment: {sslEnabled=false, sslKeystoreFile='null', sslTruststoreFile='null', sslKeystorePassword=false, sslTruststorePassword=false, sslKeystore=null, sslTruststore=null, bootstrapHttpEnabled=true, bootstrapCarrierEnabled=true, bootstrapHttpDirectPort=8091, bootstrapHttpSslPort=18091, bootstrapCarrierDirectPort=11210, bootstrapCarrierSslPort=11207, ioPoolSize=8, computationPoolSize=8, responseBufferSize=16384, requestBufferSize=16384, kvServiceEndpoints=1, viewServiceEndpoints=12, queryServiceEndpoints=12, searchServiceEndpoints=12, configPollInterval=2500, configPollFloorInterval=50, ioPool=NioEventLoopGroup, kvIoPool=null, viewIoPool=null, searchIoPool=null, queryIoPool=null, coreScheduler=CoreScheduler, memcachedHashingStrategy=DefaultMemcachedHashingStrategy, eventBus=DefaultEventBus, packageNameAndVersion=couchbase-java-client/2.6.0-beta (git: 2.6.0-beta-1-g61df9ad, core: 1.6.0-beta), retryStrategy=BestEffort, maxRequestLifetime=75000, retryDelay=ExponentialDelay{growBy 1.0 MICROSECONDS, powers of 2; lower=100, upper=100000}, reconnectDelay=ExponentialDelay{growBy 1.0 MILLISECONDS, powers of 2; lower=32, upper=4096}, observeIntervalDelay=ExponentialDelay{growBy 1.0 MICROSECONDS, powers of 2; lower=10, upper=100000}, keepAliveInterval=30000, continuousKeepAliveEnabled=true, keepAliveErrorThreshold=4, keepAliveTimeout=2500, autoreleaseAfter=2000, bufferPoolingEnabled=true, tcpNodelayEnabled=true, mutationTokensEnabled=false, socketConnectTimeout=1000, callbacksOnIoPool=false, disconnectTimeout=25000, requestBufferWaitStrategy=com.couchbase.client.core.env.DefaultCoreEnvironment$3@42607a4f, certAuthEnabled=false, coreSendHook=null, forceSaslPlain=false, compressionMinRatio=0.83, compressionMinSize=32, queryTimeout=75000, viewTimeout=75000, searchTimeout=75000, analyticsTimeout=75000, kvTimeout=2500, connectTimeout=5000, dnsSrvEnabled=false}
|
Attachments
Issue Links
- blocks
-
MB-22696 Log client environment from the cluster side
- Open