您是否阅读过 要关注的 10 大 Elasticsearch 指标 ?
我们的 免费电子书 – Elasticsearch Monitoring Essentials 怎么样?
如果你有,我们印象深刻。如果没有,这是很棒的睡前读物。 ;)
除了编写睡前阅读材料外,上个月我们还编写了一些代码,并向 SPM 添加了一些新的有用的 Elasticsearch 指标 。具体来说,我们添加了:
- 指数回暖指标
- 线程池指标
- 断路器指标
那么为什么这些很重要呢?继续阅读!
指数回暖
取暖器的作用正如其名称所暗示的那样。他们热身。但是什么?指数。为什么?因为预热索引意味着针对它的搜索会更快。因此,可以在公开针对索引的搜索之前预热索引。如果你从 Solr 来到 Elasticsearch,这相当于 Solr 中的搜索器预热查询。
线程池
Elasticsearch 节点使用多个专用线程池来处理不同类型的请求。例如,索引请求由独立于处理搜索请求的线程池的线程池处理。这有助于更好的内存管理、请求优先级排序、隔离等。有十几个线程池,每个线程池都暴露了近十几个指标。
每个池还有一个队列,这使得保留一些请求成为可能,而不是在节点非常繁忙时简单地丢弃它们。但是,如果您的 Elasticsearch 集群处理大量并发或缓慢的请求,并且这些线程池队列已满,它有时可能不得不开始拒绝请求。当这种情况开始发生时,您会想尽快了解它。因此,您应该密切关注线程池指标,并且可能希望在显示拒绝数量或队列大小的指标上设置警报和 SPM 的 异常检测警报 ,这样您就可以调整队列大小设置或其他参数以避免请求被拒绝。
或者,或者另外,您可能希望将日志提供给 Logsene。 Elasticsearch 可以记录请求拒绝(参见下面的示例),因此如果您 将 Elasticsearch 日志发送 到 Logsene ,您将同时获得 Elasticsearch 指标及其日志以进行故障排除。此外,在 Logsene 中,您可以创建警报查询来提醒您日志中的异常情况,并且此类警报查询会在 Elasticsearch 开始记录错误时提醒您,如下所示:
o.es.c.u.c.EsRejectedExecutionException: rejected execution (queue capacity 1000) on org.elasticsearch.search.action.SearchServiceTransportAction$23@5a805c60
at org.elasticsearch.common.util.concurrent.EsAbortPolicy.rejectedExecution(EsAbortPolicy.java:62)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:821)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1372)
at org.elasticsearch.search.action.SearchServiceTransportAction.execute(SearchServiceTransportAction.java:509)
at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteScan(SearchServiceTransportAction.java:441)
at org.elasticsearch.action.search.type.TransportSearchScanAction$AsyncAction.sendExecuteFirstPhase(TransportSearchScanAction.java:68)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:171)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.start(TransportSearchTypeAction.java:153)
at org.elasticsearch.action.search.type.TransportSearchScanAction.doExecute(TransportSearchScanAction.java:52)
at org.elasticsearch.action.search.type.TransportSearchScanAction.doExecute(TransportSearchScanAction.java:42)
at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:63)
at org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:107)
at org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:43)
at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:63)
at org.elasticsearch.action.search.TransportSearchAction$TransportHandler.messageReceived(TransportSearchAction.java:124)
at org.elasticsearch.action.search.TransportSearchAction$TransportHandler.messageReceived(TransportSearchAction.java:113)
断路器
断路器是 Elasticsearch 试图控制内存使用并防止可怕的 OutOfMemoryError。目前有两个断路器——一个用于现场数据,另一个用于请求。简而言之,您可以为它们中的每一个设置限制并防止过多的内存使用,以避免您的集群因 OOME 而崩溃。
您的 Elasticsearch 集群想要这样的东西吗?
欢迎 在这里注册 并享受 Elasticsearch 的所有 SPM 优势。 没有承诺,也不需要信用卡。 而且,如果您是一家 年轻的初创公司 、 小型或非营利组织 或 教育机构 ,请向我们索取折扣(请参阅 特价 )!