Hello Rajat,

I am not well aware of Grafana UI so I do not know how the URL should look
like so I am assuming you need % to be in the url right ?

Can you try using the following dispatches

   1. *PassAllHeadersNoEncodingDispatch*
   2. *URLDecodingDispatch*

Hopefully one of them should work.

Best,
Sandeep


On Tue, Jul 17, 2018 at 1:02 PM Rajat Goel <[email protected]> wrote:

> Hi,
>
>
>
> I am trying to integrate Grafana UI with Knox. Grafana UI main page
> internally sends a request URI ‘
> https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514’
> to Knox. Notice here that there is a query param: ‘hostname=%’.
>
>
>
> In the logs I see that Knox rewrites the url using rewrite rule but there
> are exceptions:
>
>
>
> *2018-07-17 13:01:21,332 DEBUG hadoop.gateway
> (UrlRewriteProcessor.java:rewrite(166)) - Rewrote *
>
> *URL:* 
> *https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514
> <https://192.168.134.225:8443/gateway/default/grafana/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%25&appId=ams-hbase&instanceId=&startTime=1531806914&endTime=1531828514>,
> direction: IN via explicit rule: GRAFANAUI/grafana/inbound/queryvariable to
> URL:* 
> *http://mst-01.mydomain.com:3000/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%25&instanceId=&appId=ams-hbase&startTime=1531806914&endTime=1531828514
> <http://mst-01.mydomain.com:3000/api/datasources/proxy/1/ws/v1/timeline/metrics?metricNames=regionserver.Server.regionCount._max&hostname=%25&instanceId=&appId=ams-hbase&startTime=1531806914&endTime=1531828514>*
>
> *2018-07-17 13:01:21,335 ERROR hadoop.gateway
> (AbstractGatewayFilter.java:doFilter(69)) - Failed to execute filter:
> java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing escape
> (%) pattern*
>
> *java.lang.IllegalArgumentException: URLDecoder: Incomplete trailing
> escape (%) pattern*
>
> *at java.net.URLDecoder.decode(URLDecoder.java:187)*
>
> *at org.apache.hadoop.gateway.util.HttpUtils.splitQuery(HttpUtils.java:46)*
>
> *at
> org.apache.hadoop.gateway.identityasserter.common.filter.IdentityAsserterHttpServletRequestWrapper.getParams(IdentityAsserterHttpServletRequestWrapper.java:135)*
>
> *at
> org.apache.hadoop.gateway.identityasserter.common.filter.IdentityAsserterHttpServletRequestWrapper.getParams(IdentityAsserterHttpServletRequestWrapper.java:154)*
>
> *at
> org.apache.hadoop.gateway.identityasserter.common.filter.IdentityAsserterHttpServletRequestWrapper.getQueryString(IdentityAsserterHttpServletRequestWrapper.java:162)*
>
> *at
> org.apache.hadoop.gateway.dispatch.AbstractGatewayDispatch.getDispatchUrl(AbstractGatewayDispatch.java:83)*
>
> *at
> org.apache.hadoop.gateway.dispatch.GatewayDispatchFilter$GetAdapter.doMethod(GatewayDispatchFilter.java:132)*
>
> *at
> org.apache.hadoop.gateway.dispatch.GatewayDispatchFilter.doFilter(GatewayDispatchFilter.java:115)*
>
> *at
> org.apache.hadoop.gateway.filter.AbstractGatewayFilter.doFilter(AbstractGatewayFilter.java:61)*
>
>
>
> My rewrite rule is very simple of the form:
>
> *<rule dir="IN" name=" GRAFANAUI/grafana/inbound/queryvariable"
> pattern="*://*:*/**/grafana/{**}?{**}">*
>
> *        <rewrite template="{$serviceUrl[GRAFANA]}/{**}?{**}"/>*
>
> *    </rule>*
>
>
>
> I am using PassAllHeadersDispatch. Knox rewrires the URL with query param
> ‘hostname=%25’.
>
>
>
> How can I fix this ?
>
>
>
> Thanks & Regards,
>
> Rajat
>

Reply via email to