slowlog.asciidoc 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. [[index-modules-slowlog]]
  2. == Slow Log
  3. [float]
  4. [[search-slow-log]]
  5. === Search Slow Log
  6. Shard level slow search log allows to log slow search (query and fetch
  7. phases) into a dedicated log file.
  8. Thresholds can be set for both the query phase of the execution, and
  9. fetch phase, here is a sample:
  10. [source,yaml]
  11. --------------------------------------------------
  12. index.search.slowlog.threshold.query.warn: 10s
  13. index.search.slowlog.threshold.query.info: 5s
  14. index.search.slowlog.threshold.query.debug: 2s
  15. index.search.slowlog.threshold.query.trace: 500ms
  16. index.search.slowlog.threshold.fetch.warn: 1s
  17. index.search.slowlog.threshold.fetch.info: 800ms
  18. index.search.slowlog.threshold.fetch.debug: 500ms
  19. index.search.slowlog.threshold.fetch.trace: 200ms
  20. index.search.slowlog.level: info
  21. --------------------------------------------------
  22. All of the above settings are _dynamic_ and can be set for each index using the
  23. <<indices-update-settings, update indices settings>> API. For example:
  24. [source,js]
  25. --------------------------------------------------
  26. PUT /twitter/_settings
  27. {
  28. "index.search.slowlog.threshold.query.warn": "10s",
  29. "index.search.slowlog.threshold.query.info": "5s",
  30. "index.search.slowlog.threshold.query.debug": "2s",
  31. "index.search.slowlog.threshold.query.trace": "500ms",
  32. "index.search.slowlog.threshold.fetch.warn": "1s",
  33. "index.search.slowlog.threshold.fetch.info": "800ms",
  34. "index.search.slowlog.threshold.fetch.debug": "500ms",
  35. "index.search.slowlog.threshold.fetch.trace": "200ms",
  36. "index.search.slowlog.level": "info"
  37. }
  38. --------------------------------------------------
  39. // CONSOLE
  40. // TEST[setup:twitter]
  41. By default, none are enabled (set to `-1`). Levels (`warn`, `info`,
  42. `debug`, `trace`) allow to control under which logging level the log
  43. will be logged. Not all are required to be configured (for example, only
  44. `warn` threshold can be set). The benefit of several levels is the
  45. ability to quickly "grep" for specific thresholds breached.
  46. The logging is done on the shard level scope, meaning the execution of a
  47. search request within a specific shard. It does not encompass the whole
  48. search request, which can be broadcast to several shards in order to
  49. execute. Some of the benefits of shard level logging is the association
  50. of the actual execution on the specific machine, compared with request
  51. level.
  52. The logging file is configured by default using the following
  53. configuration (found in `log4j2.properties`):
  54. [source,properties]
  55. --------------------------------------------------
  56. appender.index_search_slowlog_rolling.type = RollingFile
  57. appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling
  58. appender.index_search_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog.log
  59. appender.index_search_slowlog_rolling.layout.type = PatternLayout
  60. appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n
  61. appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_search_slowlog-%i.log.gz
  62. appender.index_search_slowlog_rolling.policies.type = Policies
  63. appender.index_search_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy
  64. appender.index_search_slowlog_rolling.policies.size.size = 1GB
  65. appender.index_search_slowlog_rolling.strategy.type = DefaultRolloverStrategy
  66. appender.index_search_slowlog_rolling.strategy.max = 4
  67. logger.index_search_slowlog_rolling.name = index.search.slowlog
  68. logger.index_search_slowlog_rolling.level = trace
  69. logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = index_search_slowlog_rolling
  70. logger.index_search_slowlog_rolling.additivity = false
  71. --------------------------------------------------
  72. [float]
  73. [[index-slow-log]]
  74. === Index Slow log
  75. The indexing slow log, similar in functionality to the search slow
  76. log. The log file name ends with `_index_indexing_slowlog.log`. Log and
  77. the thresholds are configured in the same way as the search slowlog.
  78. Index slowlog sample:
  79. [source,yaml]
  80. --------------------------------------------------
  81. index.indexing.slowlog.threshold.index.warn: 10s
  82. index.indexing.slowlog.threshold.index.info: 5s
  83. index.indexing.slowlog.threshold.index.debug: 2s
  84. index.indexing.slowlog.threshold.index.trace: 500ms
  85. index.indexing.slowlog.level: info
  86. index.indexing.slowlog.source: 1000
  87. --------------------------------------------------
  88. All of the above settings are _dynamic_ and can be set for each index using the
  89. <<indices-update-settings, update indices settings>> API. For example:
  90. [source,js]
  91. --------------------------------------------------
  92. PUT /twitter/_settings
  93. {
  94. "index.indexing.slowlog.threshold.index.warn": "10s",
  95. "index.indexing.slowlog.threshold.index.info": "5s",
  96. "index.indexing.slowlog.threshold.index.debug": "2s",
  97. "index.indexing.slowlog.threshold.index.trace": "500ms",
  98. "index.indexing.slowlog.level": "info",
  99. "index.indexing.slowlog.source": "1000"
  100. }
  101. --------------------------------------------------
  102. // CONSOLE
  103. // TEST[setup:twitter]
  104. By default Elasticsearch will log the first 1000 characters of the _source in
  105. the slowlog. You can change that with `index.indexing.slowlog.source`. Setting
  106. it to `false` or `0` will skip logging the source entirely an setting it to
  107. `true` will log the entire source regardless of size. The original `_source` is
  108. reformatted by default to make sure that it fits on a single log line. If preserving
  109. the original document format is important, you can turn off reformatting by setting
  110. `index.indexing.slowlog.reformat` to `false`, which will cause the source to be
  111. logged "as is" and can potentially span multiple log lines.
  112. The index slow log file is configured by default in the `log4j2.properties`
  113. file:
  114. [source,properties]
  115. --------------------------------------------------
  116. appender.index_indexing_slowlog_rolling.type = RollingFile
  117. appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling
  118. appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog.log
  119. appender.index_indexing_slowlog_rolling.layout.type = PatternLayout
  120. appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] [%node_name]%marker %.-10000m%n
  121. appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_index_indexing_slowlog-%i.log.gz
  122. appender.index_indexing_slowlog_rolling.policies.type = Policies
  123. appender.index_indexing_slowlog_rolling.policies.size.type = SizeBasedTriggeringPolicy
  124. appender.index_indexing_slowlog_rolling.policies.size.size = 1GB
  125. appender.index_indexing_slowlog_rolling.strategy.type = DefaultRolloverStrategy
  126. appender.index_indexing_slowlog_rolling.strategy.max = 4
  127. logger.index_indexing_slowlog.name = index.indexing.slowlog.index
  128. logger.index_indexing_slowlog.level = trace
  129. logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = index_indexing_slowlog_rolling
  130. logger.index_indexing_slowlog.additivity = false
  131. --------------------------------------------------