Исключение Index not found при отправке данных в Opensearch AWS с использованием агента td

Я настроил Opensearch в AWS. Я установил в Ubuntu 18.04. Ниже мойtd-agent.confфайл:

      <source>
  @type tail
  path /home/rocket/PycharmProjects/EFK/log.json
  pos_file /home/rocket/PycharmProjects/EFK/log.json.pos
  format json
  time_format %Y-%m-%d %H:%M:%S
  tag log
</source>

<match *log*>
  @type opensearch
  host search-tanz-domain-2vbjmk2d4.us-west-2.es.amazonaws.com/
  port 9200
  scheme https
  ssl_verify false
  user admin
  password lah_001
  index_name test
</match>

При запуске я получаю следующую ошибку:

2023-01-26 15:41:44 +0000 [warn]: #0 Could not communicate to OpenSearch, resetting connection and trying again. [404] {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index [:9200]","index":":9200","resource.id":":9200","resource.type":"index_or_alias","index_uuid":"_na_"}],"type":"index_not_found_exception","reason":"no such index [:9200]","index":":9200","resource.id":":9200","resource.type":"index_or_alias","index_uuid":"_na_"},"status":404}

Так это говоритindex not foundчто немного странно, потому что, насколько я понимаю, когда вы отправляете данные в Opensearch или Elasticsearch, вам нужно создать шаблон индекса вручную с помощью Kibana. Я никогда не сталкивался с этой ошибкой в ​​Elasticsearch, и я сталкиваюсь с этой проблемой только в Opensearch, хотя оба они выглядят одинаково.

Редактировать

Я создал индекс с помощью API:

Я перечислил весь индекс, и я вижуtest:

Теперь я снова начал загружать данные, используяtd-agentно все равно получаю ту же ошибку, что и выше.

1 ответ

я не использовалtd-agentраньше, но на основе предоставленного вами файла конфигурации кажется, что он пытается достичь index .

Вopensearch, когда вы создаете домен, он не содержит никаких индексов.

когда вы отправляете данные в opensearch или elasticsearch, вам нужно вручную создать шаблон индекса с помощью kibana

Я не думаю, что это обязательно верно. Вы можете создать индекс без использованияkibanaи вы также можете создать индекс без отправки каких-либо данных. На самом деле, я считаю, что лучше сначала создать индекс, а потом отправить данные.

Я думаю, если вы создадите индексtestсначала он должен работать для вас.

В Java:

      OpenSearchClient client = new OpenSearchClient(
        new AwsSdk2Transport(
                httpClient,
                host,
                region,
                AwsSdk2TransportOptions.builder().build()));

// create the index
String index = "test";

CreateIndexRequest createIndexRequest = new CreateIndexRequest.Builder().index(index).build();
client.indices().create(createIndexRequest);

См. Пример кода для Amazon OpenSearch Service.

Другие вопросы по тегам