Created attachment 1266867 [details] eap6 screenshot Description of problem: Metric "Max Connections" is available for http connector in EAP7 but not for http listener in EAP 7. It's possible to configure it for both versions. Version-Release number of selected component (if applicable): JON 3.3.8 + eap plugin pack update05.ER01 How reproducible: Always Steps to Reproduce: 1. import EAP 7 server 2. navigate to Inventory -> Servers -> EAP 7 -> Subsystems -> Web -> undertow -> Servers -> default-servers -> Http Listener -> default -> Monitoring -> Schedules Actual results: "Max Connections" metric is not there Expected results: "Max Connections" metric should be available Additional info: See attached screen shots for EAP6 and EAP7
Created attachment 1266868 [details] eap7 screenshot
Fixing typo in original description: Description of problem: Metric "Max Connections" is available for http connector in EAP6 but not for http listener in EAP 7. It's possible to configure it for both versions.
Created attachment 1282043 [details] EAP7 Configuration screen. I review this and actually it is possible to configure "Max Connections" for undertow subsystem on EAP7. Find attached an screenshot that shows the configuration.
The issue is about missing metric "Max Connections". It's possible to configure it but corresponding metrics is not available.
Hi Filip I don't see the metric "Max Connections" for that subsystem, I only see configurations. Perhaps I'm missing something.. [standalone@localhost:9990 /] /subsystem=undertow/server=default-server/http-listener=default:read-resource-description(recursive=true) { "outcome" => "success", "result" => { "description" => "http listener", "capabilities" => [{ "name" => "org.wildfly.undertow.listener", "dynamic" => true }], "access-constraints" => {"sensitive" => {"web-connector" => {"type" => "undertow"}}}, "attributes" => { "allow-encoded-slash" => { "type" => BOOLEAN, "description" => "If a request comes in with encoded / characters (i.e. %2F), will these be decoded.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "allow-equals-in-cookie-value" => { "type" => BOOLEAN, "description" => "If this is true then Undertow will allow non-escaped equals characters in unquoted cookie values. Unquoted cookie values may not contain equals characters. If present the value ends before the equals sign. The remainder of the cookie value will be dropped.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "always-set-keep-alive" => { "type" => BOOLEAN, "description" => "If this is true then a Connection: keep-alive header will be added to responses, even when it is not strictly required by the specification.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => true, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "buffer-pipelined-data" => { "type" => BOOLEAN, "description" => "If we should buffer pipelined requests.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "buffer-pool" => { "type" => STRING, "description" => "The listeners buffer pool", "expressions-allowed" => false, "required" => false, "nillable" => true, "default" => "default", "capability-reference" => "org.wildfly.io.buffer-pool", "min-length" => 1L, "max-length" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "bytes-received" => { "type" => LONG, "description" => "The number of bytes that have been received by this listener", "expressions-allowed" => false, "required" => true, "nillable" => false, "access-type" => "metric", "storage" => "runtime" }, "bytes-sent" => { "type" => LONG, "description" => "The number of bytes that have been sent out on this listener", "expressions-allowed" => false, "required" => true, "nillable" => false, "access-type" => "metric", "storage" => "runtime" }, "certificate-forwarding" => { "type" => BOOLEAN, "description" => "If certificate forwarding should be enabled. If this is enabled then the listener will take the certificate from the SSL_CLIENT_CERT attribute. This should only be enabled if behind a proxy, and the proxy is configured to always set these headers.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "resource-services" }, "decode-url" => { "type" => BOOLEAN, "description" => "If this is true then the parser will decode the URL and query parameters using the selected character encoding (UTF-8 by default). If this is false they will not be decoded. This will allow a later handler to decode them into whatever charset is desired.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => true, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "disallowed-methods" => { "type" => LIST, "description" => "A comma separated list of HTTP methods that are not allowed", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => ["TRACE"], "value-type" => STRING, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "resource-services" }, "enable-http2" => { "type" => BOOLEAN, "description" => "Enables HTTP2 support for this listener", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "enabled" => { "type" => BOOLEAN, "description" => "If the listener is enabled", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => true, "deprecated" => { "since" => "3.2.0", "reason" => "Enabled attributes are being deprecated, as they cause problems in enforcement of configuration consistency." }, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "error-count" => { "type" => LONG, "description" => "The number of 500 responses that have been sent by this listener", "expressions-allowed" => false, "required" => true, "nillable" => false, "access-type" => "metric", "storage" => "runtime" }, "http2-enable-push" => { "type" => BOOLEAN, "description" => "If server push is enabled for this connection", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => true, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "http2-header-table-size" => { "type" => INT, "description" => "The size of the header table used for HPACK compression, in bytes. This amount of memory will be allocated per connection for compression. Larger values use more memory but may give better compression.", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "BYTES", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "http2-initial-window-size" => { "type" => INT, "description" => "The flow control window size that controls how quickly the client can send data to the server", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "BYTES", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "http2-max-concurrent-streams" => { "type" => INT, "description" => "The maximum number of HTTP/2 streams that can be active at any time on a single connection", "expressions-allowed" => true, "required" => false, "nillable" => true, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "http2-max-frame-size" => { "type" => INT, "description" => "The max HTTP/2 frame size", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "BYTES", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "http2-max-header-list-size" => { "type" => INT, "description" => "The maximum size of request headers the server is prepared to accept", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "BYTES", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "max-buffered-request-size" => { "type" => INT, "description" => "Maximum size of a buffered request, in bytes. Requests are not usually buffered, the most common case is when performing SSL renegotiation for a POST request, and the post data must be fully buffered in order to perform the renegotiation.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 16384, "unit" => "BYTES", "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-connections" => { "type" => INT, "description" => "The maximum number of concurrent connections. Only values greater than 0 are allowed. For unlimited connections simply undefine this attribute value.", "expressions-allowed" => true, "required" => false, "nillable" => true, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-cookies" => { "type" => INT, "description" => "The maximum number of cookies that will be parsed. This is used to protect against hash vulnerabilities.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 200, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-header-size" => { "type" => INT, "description" => "The maximum size of a http request header, in bytes.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 1048576, "unit" => "BYTES", "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-headers" => { "type" => INT, "description" => "The maximum number of headers that will be parsed. This is used to protect against hash vulnerabilities.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 200, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-parameters" => { "type" => INT, "description" => "The maximum number of parameters that will be parsed. This is used to protect against hash vulnerabilities. This applies to both query parameters, and to POST data, but is not cumulative (i.e. you can potentially have max parameters * 2 total parameters).", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 1000, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-post-size" => { "type" => LONG, "description" => "The maximum size of a post that will be accepted, in bytes.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 10485760L, "unit" => "BYTES", "min" => 1L, "max" => 9223372036854775807L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "max-processing-time" => { "type" => LONG, "description" => "The maximum processing time taken by a request on this listener", "expressions-allowed" => false, "required" => true, "nillable" => false, "access-type" => "metric", "storage" => "runtime" }, "no-request-timeout" => { "type" => INT, "description" => "The length of time in milliseconds that the connection can be idle before it is closed by the container.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 60000, "unit" => "MILLISECONDS", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "processing-time" => { "type" => LONG, "description" => "The total processing time of all requests handed by this listener", "expressions-allowed" => false, "required" => true, "nillable" => false, "access-type" => "metric", "storage" => "runtime" }, "proxy-address-forwarding" => { "type" => BOOLEAN, "description" => "Enables handling of x-forwarded-host (and other x-forwarded-* headers) and use this header information to set the remote address. This should only be used behind a trusted proxy that sets these headers otherwise a remote user can spoof their IP address.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "resource-services" }, "read-timeout" => { "type" => INT, "description" => "Configure a read timeout for a socket, in milliseconds. If the given amount of time elapses without a successful read taking place, the socket's next read will throw a {@link ReadTimeoutException}.", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "MILLISECONDS", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "receive-buffer" => { "type" => INT, "description" => "The receive buffer size, in bytes.", "expressions-allowed" => true, "required" => false, "nillable" => true, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "record-request-start-time" => { "type" => BOOLEAN, "description" => "If this is true then Undertow will record the request start time, to allow for request time to be logged. This has a small but measurable performance impact", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "redirect-socket" => { "type" => STRING, "description" => "If this listener is supporting non-SSL requests, and a request is received for which a matching <security-constraint> requires SSL transport, undertow will automatically redirect the request to the socket binding port specified here.", "expressions-allowed" => false, "required" => false, "nillable" => true, "min-length" => 1L, "max-length" => 2147483647L, "access-constraints" => {"sensitive" => {"socket-binding-ref" => {"type" => "core"}}}, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "resource-services" }, "request-count" => { "type" => LONG, "description" => "The number of requests this listener has served", "expressions-allowed" => false, "required" => true, "nillable" => false, "access-type" => "metric", "storage" => "runtime" }, "request-parse-timeout" => { "type" => INT, "description" => "The maximum amount of time (in milliseconds) that can be spent parsing the request", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "MILLISECONDS", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "require-host-http11" => { "type" => BOOLEAN, "description" => "Require that all HTTP/1.1 have a 'Host' header, as per the RFC. IF the request does not include this header it will be rejected with a 403.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "resolve-peer-address" => { "type" => BOOLEAN, "description" => "Enables host dns lookup", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "resource-services" }, "secure" => { "type" => BOOLEAN, "description" => "If this is true then requests that originate from this listener are marked as secure, even if the request is not using HTTPS.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => false, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "resource-services" }, "send-buffer" => { "type" => INT, "description" => "The send buffer size, in bytes.", "expressions-allowed" => true, "required" => false, "nillable" => true, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "socket-binding" => { "type" => STRING, "description" => "The listener socket binding", "expressions-allowed" => false, "required" => true, "nillable" => false, "capability-reference" => "org.wildfly.network.socket-binding", "min-length" => 1L, "max-length" => 2147483647L, "access-constraints" => {"sensitive" => {"socket-binding-ref" => {"type" => "core"}}}, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "tcp-backlog" => { "type" => INT, "description" => "Configure a server with the specified backlog.", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => 10000, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "tcp-keep-alive" => { "type" => BOOLEAN, "description" => "Configure a channel to send TCP keep-alive messages in an implementation-dependent manner.", "expressions-allowed" => true, "required" => false, "nillable" => true, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "url-charset" => { "type" => STRING, "description" => "URL charset", "expressions-allowed" => true, "required" => false, "nillable" => true, "default" => "UTF-8", "min-length" => 1L, "max-length" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" }, "worker" => { "type" => STRING, "description" => "The listeners XNIO worker", "expressions-allowed" => false, "required" => false, "nillable" => true, "default" => "default", "capability-reference" => "org.wildfly.io.worker", "min-length" => 1L, "max-length" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, "write-timeout" => { "type" => INT, "description" => "Configure a write timeout for a socket, in milliseconds. If the given amount of time elapses without a successful write taking place, the socket's next write will throw a {@link WriteTimeoutException}.", "expressions-allowed" => true, "required" => false, "nillable" => true, "unit" => "MILLISECONDS", "access-type" => "read-write", "storage" => "configuration", "restart-required" => "no-services" } }, "operations" => undefined, "notifications" => undefined, "children" => {} } }
Hi Ruben, In case of EAP 6 it's configuration too: /subsystem=web/connector=http:read-resource-description(recursive=true) "max-connections" => { "type" => INT, "description" => "Amount of concurrent connections that can be processed by the connector with optimum performance. The default value depends on the connector used.", "expressions-allowed" => true, "nillable" => true, "min" => 1L, "max" => 2147483647L, "access-type" => "read-write", "storage" => "configuration", "restart-required" => "all-services" }, but JON exposes it as metric as well (see attached screenshot). So to have the same JON view for both EAP 6 and EAP 7, JON should expose this configuration as metric as well for both versions.
Moving to ON_QA for testing.