123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- ==== Request tracing
- You can trace individual requests made on the HTTP and transport layers.
- WARNING: Tracing can generate extremely high log volumes that can destabilize
- your cluster. Do not enable request tracing on busy or important clusters.
- [[http-rest-request-tracer]]
- ===== REST request tracer
- The HTTP layer has a dedicated tracer that logs incoming requests and the
- corresponding outgoing responses. Activate the tracer by setting the level of
- the `org.elasticsearch.http.HttpTracer` logger to `TRACE`:
- [source,console]
- --------------------------------------------------
- PUT _cluster/settings
- {
- "persistent" : {
- "logger.org.elasticsearch.http.HttpTracer" : "TRACE"
- }
- }
- --------------------------------------------------
- You can also control which URIs will be traced, using a set of include and
- exclude wildcard patterns. By default every request will be traced.
- [source,console]
- --------------------------------------------------
- PUT _cluster/settings
- {
- "persistent" : {
- "http.tracer.include" : "*",
- "http.tracer.exclude" : ""
- }
- }
- --------------------------------------------------
- By default, the tracer logs a summary of each request and response which
- matches these filters. To record the body of each request and response too, set
- the system property `es.insecure_network_trace_enabled` to `true`, and then set
- the levels of both the `org.elasticsearch.http.HttpTracer` and
- `org.elasticsearch.http.HttpBodyTracer` loggers to `TRACE`:
- [source,console]
- --------------------------------------------------
- PUT _cluster/settings
- {
- "persistent" : {
- "logger.org.elasticsearch.http.HttpTracer" : "TRACE",
- "logger.org.elasticsearch.http.HttpBodyTracer" : "TRACE"
- }
- }
- --------------------------------------------------
- Each message body is compressed, encoded, and split into chunks to avoid
- truncation:
- [source,text]
- ----
- [TRACE][o.e.h.HttpBodyTracer ] [master] [276] response body [part 1]: H4sIAAAAAAAA/9...
- [TRACE][o.e.h.HttpBodyTracer ] [master] [276] response body [part 2]: 2oJ93QyYLWWhcD...
- [TRACE][o.e.h.HttpBodyTracer ] [master] [276] response body (gzip compressed, base64-encoded, and split into 2 parts on preceding log lines)
- ----
- Each chunk is annotated with an internal request ID (`[276]` in this example)
- which you should use to correlate the chunks with the corresponding summary
- lines. To reconstruct the output, base64-decode the data and decompress it
- using `gzip`. For instance, on Unix-like systems:
- [source,sh]
- ----
- cat httptrace.log | sed -e 's/.*://' | base64 --decode | gzip --decompress
- ----
- WARNING: HTTP request and response bodies may contain sensitive information
- such as credentials and keys, so HTTP body tracing is disabled by default. You
- must explicitly enable it on each node by setting the system property
- `es.insecure_network_trace_enabled` to `true`. This feature is primarily
- intended for test systems which do not contain any sensitive information. If
- you set this property on a system which contains sensitive information, you
- must protect your logs from unauthorized access.
- [[transport-tracer]]
- ===== Transport tracer
- The transport layer has a dedicated tracer that logs incoming and outgoing
- requests and responses. Activate the tracer by setting the level of the
- `org.elasticsearch.transport.TransportService.tracer` logger to `TRACE`:
- [source,console]
- --------------------------------------------------
- PUT _cluster/settings
- {
- "persistent" : {
- "logger.org.elasticsearch.transport.TransportService.tracer" : "TRACE"
- }
- }
- --------------------------------------------------
- You can also control which actions will be traced, using a set of include and
- exclude wildcard patterns. By default every request will be traced except for
- fault detection pings:
- [source,console]
- --------------------------------------------------
- PUT _cluster/settings
- {
- "persistent" : {
- "transport.tracer.include" : "*",
- "transport.tracer.exclude" : "internal:coordination/fault_detection/*"
- }
- }
- --------------------------------------------------
|