Исключение 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);