Github user cestella commented on a diff in the pull request:

    https://github.com/apache/metron/pull/779#discussion_r141971177
  
    --- Diff: 
metron-interface/metron-rest/src/main/java/org/apache/metron/rest/controller/RestExceptionHandler.java
 ---
    @@ -45,4 +45,14 @@ private HttpStatus getStatus(HttpServletRequest request) 
{
         }
         return HttpStatus.valueOf(statusCode);
       }
    +
    +  private String getFullMessage(Throwable ex) {
    +    String fullMessage = ex.getMessage();
    +    Throwable cause = ex.getCause();
    +    while(cause != null) {
    +      fullMessage = cause.getMessage();
    +      cause = cause.getCause();
    +    }
    +    return fullMessage;
    --- End diff --
    
    Hmm, in the situation that I was in last night while debugging, I was using 
this patch and the exception was not logged in metron-rest. I was hunting the 
same bug as Simon.  I ended up adjusting this to include the stack trace and 
that's how I eventually figured it out.  I'm not entirely certain WHY the error 
logging wasn't showing up.
    
    Since this has happened to 2 of us now, could you validate that when you 
try to use the alerts-ui and use a sensor that does not have the `alert` nested 
template (any new sensor), you get an exception in the log?  It should be 
something like:
    ```
    Caused by: org.apache.metron.indexing.dao.search.InvalidSearchException: 
Could not execute search
            at 
org.apache.metron.elasticsearch.dao.ElasticsearchDao.search(ElasticsearchDao.java:170)
            at 
org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao.search(ElasticsearchMetaAlertDao.java:190)
            at 
org.apache.metron.rest.service.impl.SearchServiceImpl.search(SearchServiceImpl.java:53)
            ... 88 more
    Caused by: Failed to execute phase [query_fetch], all shards failed; 
shardFailures {[S6cJSn5nSmOpd7Lm2_OF9g][cowrie_index_2017.09.29.05][0]: 
RemoteTransportException[[node1][192.168.66.121:9300][indices:data/read/search[phase/query+fetch]]];
 nested: SearchParseException[failed to parse search source 
[{\"from\":0,\"size\":25,\"query\":{\"constant_score\":{\"filter\":{\"bool\":{\"should\":[{\"query_string\":{\"query\":\"*\"}},{\"bool\":{\"must\":[{\"term\":{\"status\":\"active\"}},{\"nested\":{\"query\":{\"query_string\":{\"query\":\"*\"}},\"path\":\"alert\"}}]}}]}}}},\"_source\":{\"includes\":[],\"excludes\":[]},\"sort\":[{\"timestamp\":{\"order\":\"desc\"}}],\"track_scores\":true}]];
 nested: QueryParsingException[[nested] failed to find nested object under path 
[alert]]; }
            at 
org.elasticsearch.action.search.AbstractSearchAsyncAction.onFirstPhaseResult(AbstractSearchAsyncAction.java:206)
            at 
org.elasticsearch.action.search.AbstractSearchAsyncAction$1.onFailure(AbstractSearchAsyncAction.java:152)
            at 
org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:46)
            at 
org.elasticsearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:855)
            at 
org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:833)
            at 
org.elasticsearch.transport.TransportService$4.onFailure(TransportService.java:387)
            at 
org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:39)
    ```
    If you can get it to work, then I'm +1.  I absolutely couldn't get it to 
work with this PR, but I might've been doing something weird and I worry 
there's something weird with the logging level (which I think is at INFO) on 
metron-rest by default.
    
    I still, personally, would rather see a stack trace in the error in the UI 
(since I'd prefer to *get* a stack trace from users for diagnosing issues and 
that's where they'll be looking).  I take @ottobackwards 's point about 
security, but I still think it's valid and valuable.  For the moment, I'd just 
append the multiline string and we can sort it out when debugging.  Mind you, 
this would be in addition to in the rest logs.
    
    I guess the net-net of it is that I want it logged and validated at LEAST 
one place and I'd be ok if it were 2 (one to the user and one to the system 
logs).


---

Reply via email to