Description
As a user, I want to report APISIX's logs to Elasticsearch, so that i can check the logs with Kibana easily.
Elasticsearch is the distributed search and analytics engine that provides
a unified data store for solutions built on the Elastic Stack. According to the
latest database search engine ranking [1], Elasticsearch has been ranked
second Kibana provides access to the Elastic Observability, Security, and
Enterprise Search solutions, enables you to interactively explore,
visualize, and share insights into your data. APISIX report logs with
Elasticsearch's Bulk API [2].
The following are the design and technical details:
- Name
elasticsearch-logging
- Configuration
{
"endpoint": {
"uri": "https://127.0.0.1:9200/<target>",
"index": "service",
"type": "collector",
"username": "elastic",
"password": "elastic",
"ssl": true
},
"inactive_timeout": 10,
"max_retry_count": 0,
"buffer_duration": 60,
"retry_delay": 1,
"batch_max_size": 1
}
-
endpoint Elasticsearch HTTP/HTTPS endpoint
-
endpoint.uri Elasticsearch HTTP/HTTPS request uri,
elasticsearch-logging will add "_bulk" at the end of it [3].
-
endpoint.index Elasticsearch HTTP/HTTPS "_index" field [4]
-
endpoint.type Elasticsearch HTTP/HTTPS "_type" field [5]
-
endpoint.username Elasticsearch HTTP/HTTPS
-
max_retry_count maximum number of retries before removing the
entry from the processing pipeline when an error occurs.
-
retry_delay number of seconds the process execution should
be delayed if the execution fails.
-
buffer_duration max age in seconds of the oldest entry in a batch
before the batch must be processed
-
inactive_timeout max age in seconds when the buffer will be flushed
if inactive
-
batch_max_size max size of each batch
- Details
3.1 Configuration process
- Get the username and password of Elasticsearch if needed.
- Set the request URI, index, type(not necessary, Elasticsearch will config
it with default config if it is null) to the plugin configuration.
3.2 HTTP Request process
- Obtain and assemble request information data in the APISIX Log stage,
data format refer to [6].
- Add the assemble request data to the batch queue.
- When the threshold of the batch queue is triggered, the requested data
is subbmitted in batches to ElasticSearch.
[1] https://db-engines.com/en/ranking/search+engine
[2] https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk
[3] https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk-api-request
[4] https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index-field.html#mapping-index-field
[5] https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping-type-field.html#mapping-type-field
[6] https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk
Description
As a user, I want to report APISIX's logs to Elasticsearch, so that i can check the logs with Kibana easily.
Elasticsearch is the distributed search and analytics engine that provides
a unified data store for solutions built on the Elastic Stack. According to the
latest database search engine ranking [1], Elasticsearch has been ranked
second Kibana provides access to the Elastic Observability, Security, and
Enterprise Search solutions, enables you to interactively explore,
visualize, and share insights into your data. APISIX report logs with
Elasticsearch's Bulk API [2].
The following are the design and technical details:
elasticsearch-logging
{ "endpoint": { "uri": "https://127.0.0.1:9200/<target>", "index": "service", "type": "collector", "username": "elastic", "password": "elastic", "ssl": true }, "inactive_timeout": 10, "max_retry_count": 0, "buffer_duration": 60, "retry_delay": 1, "batch_max_size": 1 }endpointElasticsearch HTTP/HTTPS endpointendpoint.uriElasticsearch HTTP/HTTPS request uri,elasticsearch-loggingwill add "_bulk" at the end of it [3].endpoint.indexElasticsearch HTTP/HTTPS "_index" field [4]endpoint.typeElasticsearch HTTP/HTTPS "_type" field [5]endpoint.usernameElasticsearch HTTP/HTTPSmax_retry_countmaximum number of retries before removing theentry from the processing pipeline when an error occurs.
retry_delaynumber of seconds the process execution shouldbe delayed if the execution fails.
buffer_durationmax age in seconds of the oldest entry in a batchbefore the batch must be processed
inactive_timeoutmax age in seconds when the buffer will be flushedif inactive
batch_max_sizemax size of each batch3.1 Configuration process
it with default config if it is null) to the plugin configuration.
3.2 HTTP Request process
data format refer to [6].
is subbmitted in batches to ElasticSearch.
[1] https://db-engines.com/en/ranking/search+engine
[2] https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk
[3] https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk-api-request
[4] https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index-field.html#mapping-index-field
[5] https://www.elastic.co/guide/en/elasticsearch/reference/7.17/mapping-type-field.html#mapping-type-field
[6] https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html#docs-bulk