We have plans of supporting lambda expressions for request handling. In that case we will have to support a rich request object that can provide the following details.
- An attributes list - HTTP method and scheme - Raw request - Request body sent by the client - Headers - URL information - Path parameters and query parameters - Cookies - Host, ip and port information - Sessions - User agent IMO when the above are supported metrics can use them. Furthermore currently, we are providing the io.netty.handler.codec.http.HttpRequest object directly to the interceptor. IMO instead of that we can provide a wrapped HttpRequest object that has more easily accessible information such as the above mentioned ones. If we do this, we can reuse this wrapped HttpRequest in lambda request handlers too*. Regards, Samiyuru On Fri, Nov 20, 2015 at 5:20 PM, Isuru Perera <[email protected]> wrote: > As I mentioned, in Tomcat Valve, we get some details from the User-Agent > header. > > See following code from WebAppMonitoringPublisherValve.java > <https://github.com/wso2/carbon-deployment/blob/master/components/monitoring/org.wso2.carbon.as.monitoring/src/main/java/org/wso2/carbon/as/monitoring/collector/http/WebAppMonitoringPublisherValve.java#L250-L256> > > > > > > > *Client readableUserAgent = > uaParser.parse(userAgent);webappMonitoringEvent.setUserAgentFamily(readableUserAgent.userAgent.family);webappMonitoringEvent.setUserAgentVersion(readableUserAgent.userAgent.major);webappMonitoringEvent.setOperatingSystem(readableUserAgent.os.family);webappMonitoringEvent.setOperatingSystemVersion(readableUserAgent.os.major);webappMonitoringEvent.setDeviceCategory(readableUserAgent.device.family);* > > We can access headers from Netty request, but the real question is whether > the Microservices clients will send a User-Agent header similar to the > header sent by a Browser. > > In the valve, other details are taken from the request object. > > With Netty, we should be able to get the remote address from the Netty > Channel. However, I couldn't find a way to access the channel from our > HTTPMonitoringInterceptor > <https://github.com/wso2/product-mss/blob/v1.0.0-alpha/carbon-mss/components/org.wso2.carbon.mss/src/main/java/org/wso2/carbon/mss/httpmonitoring/HTTPMonitoringInterceptor.java>. > In addition the Tomcat Value gets language and country from Locale > <https://github.com/wso2/carbon-deployment/blob/master/components/monitoring/org.wso2.carbon.as.monitoring/src/main/java/org/wso2/carbon/as/monitoring/collector/http/WebAppMonitoringPublisherValve.java#L208-L209>. > > > <https://github.com/wso2/product-mss/blob/v1.0.0-alpha/carbon-mss/components/org.wso2.carbon.mss/src/main/java/org/wso2/carbon/mss/httpmonitoring/HTTPMonitoringInterceptor.java> > > Even here, can we expect these details in Microservices context? > > > On Fri, Nov 20, 2015 at 4:51 PM, Sagara Gunathunga <[email protected]> > wrote: > >> >> What we have in AS is not AS specific dashboard, it's a HTTP dashboard >> and possible to use with anywhere related to HTTP monitoring. As we >> discussed we need some sophisticated dashboards for MSS but >> HTTP monitoring is something basic and essential for MSS as well, >> HTTP monitoring is a very basic requirement for any service or app. >> >> As I understood current problem is, it's not possible to extract some of >> the HTTP request headers from Netty in order to render some parts of above >> dashboard, IMHO we need to find a way to exact all HTTP headers from Netty. >> >> Can you list down list of required HTTP headers that we can't extract >> from current API ? May be Kasun can help out here. >> >> Thanks ! >> >> On Fri, Nov 20, 2015 at 4:05 PM, Isuru Perera <[email protected]> wrote: >> >>> Hi all, >>> >>> For the MSS alpha release, we used the HTTP Monitoring Dashboard used in >>> WSO2 AS product and we implemented an HTTP Monitoring Interceptor for MSS >>> [1]. >>> >>> However, with MSS we don't get all data required by the standard HTTP >>> Monitoring Dashboard. For example, in the Tomcat Valve for AS [2], we have >>> used the User-Agent header to get client details (Browser, OS & Device). >>> The Tomcat Request object has all other necessary details (Remote IP, >>> Locale etc) >>> >>> In our interceptor [3], we use the Netty HTTP Request object and the >>> Java Reflection details to get details for the monitoring event. >>> >>> Since these details are not enough for the HTTP Monitoring Dashboard, we >>> need to think of using an MSS specific dashboard. >>> >>> WDYT? >>> >>> With regarding to Metrics annotations, we have to create some gadgets in >>> DAS. We need to have a discussion on this. >>> >>> Thanks! >>> >>> Best Regards, >>> >>> [1] https://github.com/wso2/product-mss/pull/31 >>> [2] >>> https://github.com/wso2/carbon-deployment/blob/master/components/monitoring/org.wso2.carbon.as.monitoring/src/main/java/org/wso2/carbon/as/monitoring/collector/http/WebAppMonitoringPublisherValve.java >>> [3] >>> https://github.com/wso2/product-mss/blob/v1.0.0-alpha/carbon-mss/components/org.wso2.carbon.mss/src/main/java/org/wso2/carbon/mss/httpmonitoring/HTTPMonitoringInterceptor.java >>> >>> -- >>> Isuru Perera >>> Associate Technical Lead | WSO2, Inc. | http://wso2.com/ >>> Lean . Enterprise . Middleware >>> >>> about.me/chrishantha >>> Contact: +IsuruPereraWSO2 >>> <https://www.google.com/+IsuruPereraWSO2/about> >>> >> >> >> >> -- >> Sagara Gunathunga >> >> Architect; WSO2, Inc.; http://wso2.com >> V.P Apache Web Services; http://ws.apache.org/ >> Linkedin; http://www.linkedin.com/in/ssagara >> Blog ; http://ssagara.blogspot.com >> >> > > > -- > Isuru Perera > Associate Technical Lead | WSO2, Inc. | http://wso2.com/ > Lean . Enterprise . Middleware > > about.me/chrishantha > Contact: +IsuruPereraWSO2 <https://www.google.com/+IsuruPereraWSO2/about> > -- Samiyuru Senarathne *Software Engineer* Mobile : +94 (0) 71 134 6087 [email protected]
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
