apache/openwhisk

Status code '405 Method Not Allowed' was returned from ElasticSearchStore

Open

#4.022 aberto em 17 de set. de 2018

Ver no GitHub
 (3 comments) (0 reactions) (0 assignees)Scala (1.177 forks)batch import
controllerhelp wantedlogging

Métricas do repositório

Stars
 (6.777 stars)
Métricas de merge de PR
 (Mesclagem média 17h 31m) (3 fundiu PRs em 30d)

Description

When I use ElasticSearchStore to fetch activation logs, system will report such error, I think it is raised from elasticsearch's _search API

Then I checked the code, and found below in whisk/core/containerpool/logging/ElasticSearchRestClient.scala:

  def search[T: RootJsonReader](index: String,
                                payload: EsQuery = EsQuery(EsQueryAll()),
                                headers: List[HttpHeader] = List.empty): Future[Either[StatusCode, T]] =
    requestJson[T](mkJsonRequest(POST, Uri(index), payload.toJson.asJsObject, baseHeaders ++ headers))

what confused me is that the uri for search in ES should be like ${index_name}/_search while uri in above codes is not

I'm not sure whether this is a bug or meant to be like this(then I must have missed something)

Environment details:

  • lambda version: latest master branch
  • elasticsearch version: 6.3.2

Steps to reproduce the issue:

  1. start a elasticsearch container
docker run -td --name es -p 9200:9200 docker.elastic.co/elasticsearch/elasticsearch:6.3.2
  1. edit config for logstash and start it
input {
  file {
    path => "/tmp/wsklogs/invoker0/userlogs-*.log"
    codec => "json"
  }
}

output {
  elasticsearch{
    hosts => ["http://x.x.x.x:9200"]
    index => "whisk_user_logs"
  }
}
  1. deploy the openwhisk on a single node, with below options added to ansible/group_vars/all
userLogs_spi: whisk.core.containerpool.logging.ElasticSearchLogStoreProvider
invoker_extraEnv:
  - CONFIG_whisk_logstore_elasticsearch_protocol: http
  - CONFIG_whisk_logstore_elasticsearch_host: x.x.x.x
  - CONFIG_whisk_logstore_elasticsearch_port: 9200
  - CONFIG_whisk_logstore_elasticsearch_path: /whisk_user_logs
  - CONFIG_whisk_logstore_elasticsearch_logSchema_userLogs: logs
  - CONFIG_whisk_logstore_elasticsearch_logSchema_message: namespaceId
  - CONFIG_whisk_logstore_elasticsearch_logSchema_activationId: activationId
  - CONFIG_whisk_logstore_elasticsearch_logSchema_stream: stream
  - CONFIG_whisk_logstore_elasticsearch_logSchema_time: time
controller_extraEnv:
  - CONFIG_whisk_logstore_elasticsearch_protocol: http
  - CONFIG_whisk_logstore_elasticsearch_host: x.x.x.x
  - CONFIG_whisk_logstore_elasticsearch_port: 9200
  - CONFIG_whisk_logstore_elasticsearch_path: /whisk_user_logs
  - CONFIG_whisk_logstore_elasticsearch_logSchema_userLogs: logs
  - CONFIG_whisk_logstore_elasticsearch_logSchema_message: namespaceId
  - CONFIG_whisk_logstore_elasticsearch_logSchema_activationId: activationId
  - CONFIG_whisk_logstore_elasticsearch_logSchema_stream: stream
  - CONFIG_whisk_logstore_elasticsearch_logSchema_time: time
  1. invoke an action and get its activation's log:
curl -k https://789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP@localhost/api/v1/namespaces/_/activations/38598e4c588f43f6998e4c588f53f666/logs

Provide the expected results and outputs:

# curl -k https://789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP@localhost/api/v1/namespaces/_/activations/38598e4c588f43f6998e4c588f53f666/logs
{"logs":[]}

Provide the actual results and outputs:

# curl -k https://789c46b1-71f6-4ed5-8c54-816aa4f8c502:abczO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP@localhost/api/v1/namespaces/_/activations/38598e4c588f43f6998e4c588f53f666/logs
{"error":"Status code '405 Method Not Allowed' was returned from log store","code":"5c81a8b7b2fc5b840a61f6e175e1d30a"}

Guia do colaborador