ElasticSearch 单个节点监控
原文地址:http://www.54tianzhisheng.cn/2017/10/18/ElasticSearch-nodes-metrics/

集群健康监控是对集群信息进行高度的概括,节点统计值 API 提供了集群中每个节点的统计值。节点统计值很多,在监控的时候仍需要我们清楚哪些指标是最值得关注的。
集群健康监控可以参考这篇文章:ElasticSearch 集群监控
节点信息 Node Info :
curl -XGET 'http://localhost:9200/_nodes'
执行上述命令可以获取所有 node 的信息
_nodes: {
total: 2,
successful: 2,
failed: 0
},
cluster_name: "elasticsearch",
nodes: {
MSQ_CZ7mTNyOSlYIfrvHag: {
name: "node0",
transport_address: "192.168.180.110:9300",
host: "192.168.180.110",
ip: "192.168.180.110",
version: "5.5.0",
build_hash: "260387d",
total_indexing_buffer: 103887667,
roles:{...},
settings: {...},
os: {
refresh_interval_in_millis: 1000,
name: "Linux",
arch: "amd64",
version: "3.10.0-229.el7.x86_64",
available_processors: 4,
allocated_processors: 4
},
process: {
refresh_interval_in_millis: 1000,
id: 3022,
mlockall: false
},
jvm: {
pid: 3022,
version: "1.8.0_121",
vm_name: "Java HotSpot(TM) 64-Bit Server VM",
vm_version: "25.121-b13",
vm_vendor: "Oracle Corporation",
start_time_in_millis: 1507515225302,
mem: {
heap_init_in_bytes: 1073741824,
heap_max_in_bytes: 1038876672,
non_heap_init_in_bytes: 2555904,
non_heap_max_in_bytes: 0,
direct_max_in_bytes: 1038876672
},
gc_collectors: [],
memory_pools: [],
using_compressed_ordinary_object_pointers: "true",
input_arguments:{}
}
thread_pool:{
force_merge: {},
fetch_shard_started: {},
listener: {},
index: {},
refresh: {},
generic: {},
warmer: {},
search: {},
flush: {},
fetch_shard_store: {},
management: {},
get: {},
bulk: {},
snapshot: {}
}
transport: {...},
http: {...},
plugins: [],
modules: [],
ingest: {...}
}
上面是我已经简写了很多数据之后的返回值,但是指标还是很多,有些是一些常规的指标,对于监控来说,没必要拿取。从上面我们可以主要关注以下这些指标:
os, process, jvm, thread_pool, transport, http, ingest and indices
节点统计 nodes-statistics
节点统计值 API 可通过如下命令获取:
GET /_nodes/stats
得到:
_nodes: {
total: 2,
successful: 2,
failed: 0
},
cluster_name: "elasticsearch",
nodes: {
MSQ_CZ7mTNyOSlYI0yvHag: {
timestamp: 1508312932354,
name: "node0",
transport_address: "192.168.180.110:9300",
host: "192.168.180.110",
ip: "192.168.180.110:9300",
roles: [],
indices: {
docs: {
count: 6163666,
deleted: 0
},
store: {
size_in_bytes: 2301398179,
throttle_time_in_millis: 122850
},
indexing: {},
get: {},
search: {},
merges: {},
refresh: {},
flush: {},
warmer: {},
query_cache: {},
fielddata: {},
completion: {},
segments: {},
translog: {},
request_cache: {},
recovery: {}
},
os: {
timestamp: 1508312932369,
cpu: {
percent: 0,
load_average: {
1m: 0.09,
5m: 0.12,
15m: 0.08
}
},
mem: {
total_in_bytes: 8358301696,
free_in_bytes: 1381613568,
used_in_bytes: 6976688128,
free_percent: 17,
used_percent: 83
},
swap: {
total_in_bytes: 8455712768,
free_in_bytes: 8455299072,
used_in_bytes: 413696
},
cgroup: {
cpuacct: {},
cpu: {
control_group: "/user.slice",
cfs_period_micros: 100000,
cfs_quota_micros: -1,
stat: {}
}
}
},
process: {
timestamp: 1508312932369,
open_file_descriptors: 228,
max_file_descriptors: 65536,
cpu: {
percent: 0,
total_in_millis: 2495040
},
mem: {
total_virtual_in_bytes: 5002465280
}
},
jvm: {
timestamp: 1508312932369,
uptime_in_millis: 797735804,
mem: {
heap_used_in_bytes: 318233768,
heap_used_percent: 30,
heap_committed_in_bytes: 1038876672,
heap_max_in_bytes: 1038876672,
non_heap_used_in_bytes: 102379784,
non_heap_committed_in_bytes: 108773376,
pools: {
young: {
used_in_bytes: 62375176,
max_in_bytes: 279183360,
peak_used_in_bytes: 279183360,
peak_max_in_bytes: 279183360
},
survivor: {
used_in_bytes: 175384,
max_in_bytes: 34865152,
peak_used_in_bytes: 34865152,
peak_max_in_bytes: 34865152
},
old: {
used_in_bytes: 255683208,
max_in_bytes: 724828160,
peak_used_in_bytes: 255683208,
peak_max_in_bytes: 724828160
}
}
},
threads: {},
gc: {},
buffer_pools: {},
classes: {}
},
thread_pool: {
bulk: {},
fetch_shard_started: {},
fetch_shard_store: {},
flush: {},
force_merge: {},
generic: {},
get: {},
index: {
threads: 1,
queue: 0,
active: 0,
rejected: 0,
largest: 1,
completed: 1
}
listener: {},
management: {},
refresh: {},
search: {},
snapshot: {},
warmer: {}
},
fs: {},
transport: {
server_open: 13,
rx_count: 11696,
rx_size_in_bytes: 1525774,
tx_count: 10282,
tx_size_in_bytes: 1440101928
},
http: {
current_open: 4,
total_opened: 23
},
breakers: {},
script: {},
discovery: {},
ingest: {}
}
节点名是一个 UUID,上面列举了很多指标,下面讲解下:
索引部分 indices
这部分列出了这个节点上所有索引的聚合过的统计值 :
-
docs展示节点内存有多少文档,包括还没有从段里清除的已删除文档数量。 -
store部分显示节点耗用了多少物理存储。这个指标包括主分片和副本分片在内。如果限流时间很大,那可能表明你的磁盘限流设置得过低。 indexing显示已经索引了多少文档。这个值是一个累加计数器。在文档被删除的时候,数值不会下降。还要注意的是,在发生内部 索引操作的时候,这个值也会增加,比如说文档更新。
还列出了索引操作耗费的时间,正在索引的文档数量,以及删除操作的类似统计值。
-
get显示通过 ID 获取文档的接口相关的统计值。包括对单个文档的GET和HEAD请求。 search描述在活跃中的搜索(open_contexts)数量、查询的总数量、以及自节点启动以来在查询上消耗的总时间。用query_time_in_millis / query_total计算的比值,可以用来粗略的评价你的查询有多高效。比值越大,每个查询花费的时间越多,你应该要考虑调优了。
fetch 统计值展示了查询处理的后一半流程(query-then-fetch 里的 fetch )。如果 fetch 耗时比 query 还多,说明磁盘较慢,或者获取了太多文档,或者可能搜索请求设置了太大的分页(比如, size: 10000 )。
-
merges包括了 Lucene 段合并相关的信息。它会告诉你目前在运行几个合并,合并涉及的文档数量,正在合并的段的总大小,以及在合并操作上消耗的总时间。 filter_cache展示了已缓存的过滤器位集合所用的内存数量,以及过滤器被驱逐出内存的次数。过多的驱逐数 可能 说明你需要加大过滤器缓存的大小,或者你的过滤器不太适合缓存(比如它们因为高基数而在大量产生,就像是缓存一个now时间表达式)。
不过,驱逐数是一个很难评定的指标。过滤器是在每个段的基础上缓存的,而从一个小的段里驱逐过滤器,代价比从一个大的段里要廉价的多。有可能你有很大的驱逐数,但是它们都发生在小段上,也就意味着这些对查询性能只有很小的影响。
把驱逐数指标作为一个粗略的参考。如果你看到数字很大,检查一下你的过滤器,确保他们都是正常缓存的。不断驱逐着的过滤器,哪怕都发生在很小的段上,效果也比正确缓存住了的过滤器差很多。
-
field_data显示 fielddata 使用的内存, 用以聚合、排序等等。这里也有一个驱逐计数。和filter_cache不同的是,这里的驱逐计数是很有用的:这个数应该或者至少是接近于 0。因为 fielddata 不是缓存,任何驱逐都消耗巨大,应该避免掉。如果你在这里看到驱逐数,你需要重新评估你的内存情况,fielddata 限制,请求语句,或者这三者。 segments会展示这个节点目前正在服务中的 Lucene 段的数量。 这是一个重要的数字。大多数索引会有大概 50–150 个段,哪怕它们存有 TB 级别的数十亿条文档。段数量过大表明合并出现了问题(比如,合并速度跟不上段的创建)。注意这个统计值是节点上所有索引的汇聚总数。记住这点。
memory 统计值展示了 Lucene 段自己用掉的内存大小。 这里包括底层数据结构,比如倒排表,字典,和布隆过滤器等。太大的段数量会增加这些数据结构带来的开销,这个内存使用量就是一个方便用来衡量开销的度量值。
操作系统和进程部分
OS 和 Process 部分基本是自描述的,不会在细节中展开讲解。它们列出来基础的资源统计值,比如 CPU 和负载。OS 部分描述了整个操作系统,而 Process 部分只显示 Elasticsearch 的 JVM 进程使用的资源情况。
这些都是非常有用的指标,不过通常在你的监控技术栈里已经都测量好了。统计值包括下面这些:
- CPU
- 负载
- 内存使用率 (mem.used_percent)
- Swap 使用率
- 打开的文件描述符 (open_file_descriptors)
JVM 部分
jvm 部分包括了运行 Elasticsearch 的 JVM 进程一些很关键的信息。 最重要的,它包括了垃圾回收的细节,这对你的 Elasticsearch 集群的稳定性有着重大影响。
jvm: {
timestamp: 1508312932369,
uptime_in_millis: 797735804,
mem: {
heap_used_in_bytes: 318233768,
heap_used_percent: 30,
heap_committed_in_bytes: 1038876672,
heap_max_in_bytes: 1038876672,
non_heap_used_in_bytes: 102379784,
non_heap_committed_in_bytes: 108773376,
}
}
jvm 部分首先列出一些和 heap 内存使用有关的常见统计值。你可以看到有多少 heap 被使用了,多少被指派了(当前被分配给进程的),以及 heap 被允许分配的最大值。理想情况下,heap_committed_in_bytes 应该等于 heap_max_in_bytes 。如果指派的大小更小,JVM 最终会被迫调整 heap 大小——这是一个非常昂贵的操作。如果你的数字不相等,阅读 堆内存:大小和交换 学习如何正确的配置它。
heap_used_percent 指标是值得关注的一个数字。Elasticsearch 被配置为当 heap 达到 75% 的时候开始 GC。如果你的节点一直 >= 75%,你的节点正处于 内存压力 状态。这是个危险信号,不远的未来可能就有慢 GC 要出现了。
如果 heap 使用率一直 >=85%,你就麻烦了。Heap 在 90–95% 之间,则面临可怕的性能风险,此时最好的情况是长达 10–30s 的 GC,最差的情况就是内存溢出(OOM)异常。
线程池部分
Elasticsearch 在内部维护了线程池。 这些线程池相互协作完成任务,有必要的话相互间还会传递任务。通常来说,你不需要配置或者调优线程池,不过查看它们的统计值有时候还是有用的,可以洞察你的集群表现如何。
每个线程池会列出已配置的线程数量( threads ),当前在处理任务的线程数量( active ),以及在队列中等待处理的任务单元数量( queue )。
如果队列中任务单元数达到了极限,新的任务单元会开始被拒绝,你会在 rejected 统计值上看到它反映出来。这通常是你的集群在某些资源上碰到瓶颈的信号。因为队列满意味着你的节点或集群在用最高速度运行,但依然跟不上工作的蜂拥而入。
这里的一系列的线程池,大多数你可以忽略,但是有一小部分还是值得关注的:
indexing普通的索引请求的线程池bulk批量请求,和单条的索引请求不同的线程池getGet-by-ID 操作search所有的搜索和查询请求merging专用于管理 Lucene 合并的线程池
网络部分
transport显示和 传输地址 相关的一些基础统计值。包括节点间的通信(通常是 9300 端口)以及任意传输客户端或者节点客户端的连接。如果看到这里有很多连接数不要担心;Elasticsearch 在节点之间维护了大量的连接。http显示 HTTP 端口(通常是 9200)的统计值。如果你看到total_opened数很大而且还在一直上涨,这是一个明确信号,说明你的 HTTP 客户端里有没启用 keep-alive 长连接的。持续的 keep-alive 长连接对性能很重要,因为连接、断开套接字是很昂贵的(而且浪费文件描述符)。请确认你的客户端都配置正确。
参考资料
3、ES监控指标
最后:
转载请注明地址:http://www.54tianzhisheng.cn/2017/10/18/ElasticSearch-nodes-metrics/
原文地址:http://www.54tianzhisheng.cn/2017/10/18/ElasticSearch-nodes-metrics/

集群健康监控是对集群信息进行高度的概括,节点统计值 API 提供了集群中每个节点的统计值。节点统计值很多,在监控的时候仍需要我们清楚哪些指标是最值得关注的。
集群健康监控可以参考这篇文章:ElasticSearch 集群监控
节点信息 Node Info :
curl -XGET 'http://localhost:9200/_nodes'
执行上述命令可以获取所有 node 的信息
_nodes: {
total: 2,
successful: 2,
failed: 0
},
cluster_name: "elasticsearch",
nodes: {
MSQ_CZ7mTNyOSlYIfrvHag: {
name: "node0",
transport_address: "192.168.180.110:9300",
host: "192.168.180.110",
ip: "192.168.180.110",
version: "5.5.0",
build_hash: "260387d",
total_indexing_buffer: 103887667,
roles:{...},
settings: {...},
os: {
refresh_interval_in_millis: 1000,
name: "Linux",
arch: "amd64",
version: "3.10.0-229.el7.x86_64",
available_processors: 4,
allocated_processors: 4
},
process: {
refresh_interval_in_millis: 1000,
id: 3022,
mlockall: false
},
jvm: {
pid: 3022,
version: "1.8.0_121",
vm_name: "Java HotSpot(TM) 64-Bit Server VM",
vm_version: "25.121-b13",
vm_vendor: "Oracle Corporation",
start_time_in_millis: 1507515225302,
mem: {
heap_init_in_bytes: 1073741824,
heap_max_in_bytes: 1038876672,
non_heap_init_in_bytes: 2555904,
non_heap_max_in_bytes: 0,
direct_max_in_bytes: 1038876672
},
gc_collectors: [],
memory_pools: [],
using_compressed_ordinary_object_pointers: "true",
input_arguments:{}
}
thread_pool:{
force_merge: {},
fetch_shard_started: {},
listener: {},
index: {},
refresh: {},
generic: {},
warmer: {},
search: {},
flush: {},
fetch_shard_store: {},
management: {},
get: {},
bulk: {},
snapshot: {}
}
transport: {...},
http: {...},
plugins: [],
modules: [],
ingest: {...}
}
上面是我已经简写了很多数据之后的返回值,但是指标还是很多,有些是一些常规的指标,对于监控来说,没必要拿取。从上面我们可以主要关注以下这些指标:
os, process, jvm, thread_pool, transport, http, ingest and indices
节点统计 nodes-statistics
节点统计值 API 可通过如下命令获取:
GET /_nodes/stats
得到:
_nodes: {
total: 2,
successful: 2,
failed: 0
},
cluster_name: "elasticsearch",
nodes: {
MSQ_CZ7mTNyOSlYI0yvHag: {
timestamp: 1508312932354,
name: "node0",
transport_address: "192.168.180.110:9300",
host: "192.168.180.110",
ip: "192.168.180.110:9300",
roles: [],
indices: {
docs: {
count: 6163666,
deleted: 0
},
store: {
size_in_bytes: 2301398179,
throttle_time_in_millis: 122850
},
indexing: {},
get: {},
search: {},
merges: {},
refresh: {},
flush: {},
warmer: {},
query_cache: {},
fielddata: {},
completion: {},
segments: {},
translog: {},
request_cache: {},
recovery: {}
},
os: {
timestamp: 1508312932369,
cpu: {
percent: 0,
load_average: {
1m: 0.09,
5m: 0.12,
15m: 0.08
}
},
mem: {
total_in_bytes: 8358301696,
free_in_bytes: 1381613568,
used_in_bytes: 6976688128,
free_percent: 17,
used_percent: 83
},
swap: {
total_in_bytes: 8455712768,
free_in_bytes: 8455299072,
used_in_bytes: 413696
},
cgroup: {
cpuacct: {},
cpu: {
control_group: "/user.slice",
cfs_period_micros: 100000,
cfs_quota_micros: -1,
stat: {}
}
}
},
process: {
timestamp: 1508312932369,
open_file_descriptors: 228,
max_file_descriptors: 65536,
cpu: {
percent: 0,
total_in_millis: 2495040
},
mem: {
total_virtual_in_bytes: 5002465280
}
},
jvm: {
timestamp: 1508312932369,
uptime_in_millis: 797735804,
mem: {
heap_used_in_bytes: 318233768,
heap_used_percent: 30,
heap_committed_in_bytes: 1038876672,
heap_max_in_bytes: 1038876672,
non_heap_used_in_bytes: 102379784,
non_heap_committed_in_bytes: 108773376,
pools: {
young: {
used_in_bytes: 62375176,
max_in_bytes: 279183360,
peak_used_in_bytes: 279183360,
peak_max_in_bytes: 279183360
},
survivor: {
used_in_bytes: 175384,
max_in_bytes: 34865152,
peak_used_in_bytes: 34865152,
peak_max_in_bytes: 34865152
},
old: {
used_in_bytes: 255683208,
max_in_bytes: 724828160,
peak_used_in_bytes: 255683208,
peak_max_in_bytes: 724828160
}
}
},
threads: {},
gc: {},
buffer_pools: {},
classes: {}
},
thread_pool: {
bulk: {},
fetch_shard_started: {},
fetch_shard_store: {},
flush: {},
force_merge: {},
generic: {},
get: {},
index: {
threads: 1,
queue: 0,
active: 0,
rejected: 0,
largest: 1,
completed: 1
}
listener: {},
management: {},
refresh: {},
search: {},
snapshot: {},
warmer: {}
},
fs: {},
transport: {
server_open: 13,
rx_count: 11696,
rx_size_in_bytes: 1525774,
tx_count: 10282,
tx_size_in_bytes: 1440101928
},
http: {
current_open: 4,
total_opened: 23
},
breakers: {},
script: {},
discovery: {},
ingest: {}
}
节点名是一个 UUID,上面列举了很多指标,下面讲解下:
索引部分 indices
这部分列出了这个节点上所有索引的聚合过的统计值 :
-
docs展示节点内存有多少文档,包括还没有从段里清除的已删除文档数量。 -
store部分显示节点耗用了多少物理存储。这个指标包括主分片和副本分片在内。如果限流时间很大,那可能表明你的磁盘限流设置得过低。 indexing显示已经索引了多少文档。这个值是一个累加计数器。在文档被删除的时候,数值不会下降。还要注意的是,在发生内部 索引操作的时候,这个值也会增加,比如说文档更新。
还列出了索引操作耗费的时间,正在索引的文档数量,以及删除操作的类似统计值。
-
get显示通过 ID 获取文档的接口相关的统计值。包括对单个文档的GET和HEAD请求。 search描述在活跃中的搜索(open_contexts)数量、查询的总数量、以及自节点启动以来在查询上消耗的总时间。用query_time_in_millis / query_total计算的比值,可以用来粗略的评价你的查询有多高效。比值越大,每个查询花费的时间越多,你应该要考虑调优了。
fetch 统计值展示了查询处理的后一半流程(query-then-fetch 里的 fetch )。如果 fetch 耗时比 query 还多,说明磁盘较慢,或者获取了太多文档,或者可能搜索请求设置了太大的分页(比如, size: 10000 )。
-
merges包括了 Lucene 段合并相关的信息。它会告诉你目前在运行几个合并,合并涉及的文档数量,正在合并的段的总大小,以及在合并操作上消耗的总时间。 filter_cache展示了已缓存的过滤器位集合所用的内存数量,以及过滤器被驱逐出内存的次数。过多的驱逐数 可能 说明你需要加大过滤器缓存的大小,或者你的过滤器不太适合缓存(比如它们因为高基数而在大量产生,就像是缓存一个now时间表达式)。
不过,驱逐数是一个很难评定的指标。过滤器是在每个段的基础上缓存的,而从一个小的段里驱逐过滤器,代价比从一个大的段里要廉价的多。有可能你有很大的驱逐数,但是它们都发生在小段上,也就意味着这些对查询性能只有很小的影响。
把驱逐数指标作为一个粗略的参考。如果你看到数字很大,检查一下你的过滤器,确保他们都是正常缓存的。不断驱逐着的过滤器,哪怕都发生在很小的段上,效果也比正确缓存住了的过滤器差很多。
-
field_data显示 fielddata 使用的内存, 用以聚合、排序等等。这里也有一个驱逐计数。和filter_cache不同的是,这里的驱逐计数是很有用的:这个数应该或者至少是接近于 0。因为 fielddata 不是缓存,任何驱逐都消耗巨大,应该避免掉。如果你在这里看到驱逐数,你需要重新评估你的内存情况,fielddata 限制,请求语句,或者这三者。 segments会展示这个节点目前正在服务中的 Lucene 段的数量。 这是一个重要的数字。大多数索引会有大概 50–150 个段,哪怕它们存有 TB 级别的数十亿条文档。段数量过大表明合并出现了问题(比如,合并速度跟不上段的创建)。注意这个统计值是节点上所有索引的汇聚总数。记住这点。
memory 统计值展示了 Lucene 段自己用掉的内存大小。 这里包括底层数据结构,比如倒排表,字典,和布隆过滤器等。太大的段数量会增加这些数据结构带来的开销,这个内存使用量就是一个方便用来衡量开销的度量值。
操作系统和进程部分
OS 和 Process 部分基本是自描述的,不会在细节中展开讲解。它们列出来基础的资源统计值,比如 CPU 和负载。OS 部分描述了整个操作系统,而 Process 部分只显示 Elasticsearch 的 JVM 进程使用的资源情况。
这些都是非常有用的指标,不过通常在你的监控技术栈里已经都测量好了。统计值包括下面这些:
- CPU
- 负载
- 内存使用率 (mem.used_percent)
- Swap 使用率
- 打开的文件描述符 (open_file_descriptors)
JVM 部分
jvm 部分包括了运行 Elasticsearch 的 JVM 进程一些很关键的信息。 最重要的,它包括了垃圾回收的细节,这对你的 Elasticsearch 集群的稳定性有着重大影响。
jvm: {
timestamp: 1508312932369,
uptime_in_millis: 797735804,
mem: {
heap_used_in_bytes: 318233768,
heap_used_percent: 30,
heap_committed_in_bytes: 1038876672,
heap_max_in_bytes: 1038876672,
non_heap_used_in_bytes: 102379784,
non_heap_committed_in_bytes: 108773376,
}
}
jvm 部分首先列出一些和 heap 内存使用有关的常见统计值。你可以看到有多少 heap 被使用了,多少被指派了(当前被分配给进程的),以及 heap 被允许分配的最大值。理想情况下,heap_committed_in_bytes 应该等于 heap_max_in_bytes 。如果指派的大小更小,JVM 最终会被迫调整 heap 大小——这是一个非常昂贵的操作。如果你的数字不相等,阅读 堆内存:大小和交换 学习如何正确的配置它。
heap_used_percent 指标是值得关注的一个数字。Elasticsearch 被配置为当 heap 达到 75% 的时候开始 GC。如果你的节点一直 >= 75%,你的节点正处于 内存压力 状态。这是个危险信号,不远的未来可能就有慢 GC 要出现了。
如果 heap 使用率一直 >=85%,你就麻烦了。Heap 在 90–95% 之间,则面临可怕的性能风险,此时最好的情况是长达 10–30s 的 GC,最差的情况就是内存溢出(OOM)异常。
线程池部分
Elasticsearch 在内部维护了线程池。 这些线程池相互协作完成任务,有必要的话相互间还会传递任务。通常来说,你不需要配置或者调优线程池,不过查看它们的统计值有时候还是有用的,可以洞察你的集群表现如何。
每个线程池会列出已配置的线程数量( threads ),当前在处理任务的线程数量( active ),以及在队列中等待处理的任务单元数量( queue )。
如果队列中任务单元数达到了极限,新的任务单元会开始被拒绝,你会在 rejected 统计值上看到它反映出来。这通常是你的集群在某些资源上碰到瓶颈的信号。因为队列满意味着你的节点或集群在用最高速度运行,但依然跟不上工作的蜂拥而入。
这里的一系列的线程池,大多数你可以忽略,但是有一小部分还是值得关注的:
indexing普通的索引请求的线程池bulk批量请求,和单条的索引请求不同的线程池getGet-by-ID 操作search所有的搜索和查询请求merging专用于管理 Lucene 合并的线程池
网络部分
transport显示和 传输地址 相关的一些基础统计值。包括节点间的通信(通常是 9300 端口)以及任意传输客户端或者节点客户端的连接。如果看到这里有很多连接数不要担心;Elasticsearch 在节点之间维护了大量的连接。http显示 HTTP 端口(通常是 9200)的统计值。如果你看到total_opened数很大而且还在一直上涨,这是一个明确信号,说明你的 HTTP 客户端里有没启用 keep-alive 长连接的。持续的 keep-alive 长连接对性能很重要,因为连接、断开套接字是很昂贵的(而且浪费文件描述符)。请确认你的客户端都配置正确。
参考资料
3、ES监控指标
最后:
转载请注明地址:http://www.54tianzhisheng.cn/2017/10/18/ElasticSearch-nodes-metrics/
收起阅读 »社区日报 第92期 (2017-11-06)
http://t.cn/Rl6ZoRX
2.在vscode中调试es查询语句。
http://t.cn/Rlio50B
3.全面介绍韩语分词器。
http://t.cn/Rli9inA
编辑:cybredak
归档:https://elasticsearch.cn/article/354
订阅:https://tinyletter.com/elastic-daily
http://t.cn/Rl6ZoRX
2.在vscode中调试es查询语句。
http://t.cn/Rlio50B
3.全面介绍韩语分词器。
http://t.cn/Rli9inA
编辑:cybredak
归档:https://elasticsearch.cn/article/354
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
社区日报 第91期 (2017-11-05)
http://t.cn/RWeyM6d
2.(自备梯子)非常全面的介绍ElasticSearch的特点,使用案例和推荐书籍。
http://t.cn/RlfRbkm
3.使用Kubernetes管理日志记录。
http://t.cn/RlfRcwf
编辑:至尊宝
归档:https://elasticsearch.cn/article/353
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RWeyM6d
2.(自备梯子)非常全面的介绍ElasticSearch的特点,使用案例和推荐书籍。
http://t.cn/RlfRbkm
3.使用Kubernetes管理日志记录。
http://t.cn/RlfRcwf
编辑:至尊宝
归档:https://elasticsearch.cn/article/353
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
社区日报 第90期 (2017-11-04)
http://t.cn/RWqayNZ
2、.Net开发者使用ES教程
http://t.cn/RlGuApp
3、一款与位置有关的相似插件
http://t.cn/RlqbzDF
编辑:bsll
归档:https://www.elasticsearch.cn/article/352
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RWqayNZ
2、.Net开发者使用ES教程
http://t.cn/RlGuApp
3、一款与位置有关的相似插件
http://t.cn/RlqbzDF
编辑:bsll
归档:https://www.elasticsearch.cn/article/352
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
社区日报 第89期 (2017-11-03)
http://t.cn/Rlwub5s
2、可行 | 解决Unassigned Shards大探讨
http://t.cn/RlwuVFn
3、快照&重新存储数据方案
http://t.cn/RlwuXmm
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
编辑:laoyang360
归档:https://elasticsearch.cn/article/351
订阅:https://tinyletter.com/elastic-daily
http://t.cn/Rlwub5s
2、可行 | 解决Unassigned Shards大探讨
http://t.cn/RlwuVFn
3、快照&重新存储数据方案
http://t.cn/RlwuXmm
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
编辑:laoyang360
归档:https://elasticsearch.cn/article/351
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
Elasticsearch 安全 (希望日报能给我发下。)
http://rickywag.com/archives/618
http://rickywag.com/archives/618
社区日报 第88期 (2017-11-02)
https://elasticsearch.cn/article/348
2.elasticsearch api 101
http://t.cn/RlZ1PND
3.一个免费的支持kibana多租户、加密、认证、授权、审计的Elasticsearch和Kibana安全插件
http://t.cn/RZpF03g
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
感谢社区well的投稿
编辑:金桥
归档:https://elasticsearch.cn/article/349
订阅:https://tinyletter.com/elastic-daily
https://elasticsearch.cn/article/348
2.elasticsearch api 101
http://t.cn/RlZ1PND
3.一个免费的支持kibana多租户、加密、认证、授权、审计的Elasticsearch和Kibana安全插件
http://t.cn/RZpF03g
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
感谢社区well的投稿
编辑:金桥
归档:https://elasticsearch.cn/article/349
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
ES集群服务器CPU负载瞬间飚高分析
尝试了一些命令后,发现和使用 JVM 命令一样,搞不定,比如用 ltrace 就导致 JVM 进程僵死。由于并非稳定重现,耗时好几天,才使用 strace -T -r -c -f -F -p 得到 futex、epoll_wait 占用资源。这不行,这些信息不足以说明或支撑如何解决负载问题,但 futex 这个是系统调用是互斥的信号,难道有锁方面问题,似乎应该从这个方面下手。
Linux 中有什么好的工具能在这种敲命令都没响应的情况下来获取一些信息呢?于是再找一些工具,gdb 尝试了下,直接卡死,搞不定。gstack、gcore 都不行,难道非得要 dump kernel core?
但即使得到了,我对 Linux 内核的分析还没多少经验,而且耗时,中间少不了服务器频繁重启,不到万不得已不走这一步。
找了一些工具:systemtap、stap、dtrace、perf 等,于是在非繁忙时候搞了一把,systemtap 的 On-CPU、Off-CPU 及火焰图不错,至少我能拿到内核系统调用到底是哪些,然后针对火焰图里耗时的系统调用信息再找具体的解决方案。systemtap 虽好,但那个 sample-bt 脚本总不如意,在负载高的时候被自己的资源限制,改了些参数也不如意。于是转向 perf,这玩意好,轻量级,就取个 60s 信息,多来几把,嘿嘿,还正搞出一些数据。
# perf record -F 99 -ag -o p1.data -- sleep 60
# perf script -i p1.data | ./stackcollapse-perf.pl > out.perf-folded
# cat out.perf-folded | ./flamegraph.pl > perf-kernel-1.svg
将分析的数据转换为火焰图,用火眼金睛照一照,还真能看出一些问题。
通过调用依赖关系分析,根据 _spin_lock_irq 初步推测问题由 kernel 的内存管理部分触发。
似乎 CentOS 6 相对于 CentOS 5 在 kernel 内存管理模块的一些改进点(如 transparent huge page, 基于 NUMA 的内存分配等),有没有可能是 CentOS 6 新增的 THP 特性导致 cpu sys 过高?搜索下相关函数名的关键字,确定猜测正确。通过以下内核参数优化关闭系统 THP 特性(临时生效):
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
从火焰图我们也可以看到,申请内存的线程在等待自旋锁,操作系统现在正回收 pagecache 到 freelist。于是 zone 里来申请内存的线程都得在这里等待着,于是 load 值就高了上来。外在的表现就是,系统反应好慢啊,ssh 都登不进去(因为 ssh 也会申请内存);即使登录进去了,敲命令也没有反应(因为这些命令也都是需要申请内存的)。
几个概念(来源于网络):
page cache
导致这个情况的原因是:线程在申请内存的时候,发现该 zone 的 freelist 上已经没有足够的内存可用,所以不得不去从该 zone 的 LRU 链表里回收 inactive 的 page,这种情况就是 direct reclaim(直接回收)。direct reclaim 会比较消耗时间的原因是,它在回收的时候不会区分 dirty page 和 clean page,
如果回收的是 dirty page,就会触发磁盘 IO 的操作,它会首先把 dirty page 里面的内容给刷写到磁盘,再去把该 page 给放到 freelist 里。
page reclaim
在直观上,我们有一个认知,当读了一个文件,它会被缓存到内存里面,如果接下来的一几天我们一直都不会再次访问它,而且这几天都不会关闭或者重启机器,那么在这几天之后该文件就不应该再在内存里头了。这就是内核对 page cache 的管理策略:LRU(最近最少使用)。即把最近最少使用的 page cache 给回收为 free pages。
内核的页回收机制有两种:后台回收和直接回收。
后台回收是有一个内核线程 kswapd 来做的,当内存里 free 的 pages 低于一个水位(page_low)时,就会唤醒该内核线程,然后它从 LRU 链表里回收 page cache 到内存的 free_list 里头,它会一直回收直至 free 的 pages 达到另外一个水位 page_high. 如下图所示:
直接回收则是,在发生 page fault 时,没有足够可用的内存,于是线程就自己直接去回收内存,它一次性的会回收 32 个 pages。逻辑过程如下图所示
所以要避免做 direct reclaim。
memory zone
对于多核 NUMA 系统而言,内存是分节点的,不同的 CPU 对不同的内存节点的访问速度是不一样的,所以 CPU 会优先去访问靠近自己的内存节点(即速度相对快的内存区域)。
CPU 内部是依靠 MMU 来进行内存管理的,根据内存属性的不同,MMU 将一个内存节点内部又划分了不同的 zone。
对 64-bit 系统而言,一个内存节点包含三个 zone:Normal,DMA,DMA32.
对 32-bit 系统而言,一个内存节点则是包括 zone:Normal,Highmem,DMA。
Highmem 存在的目的是为了解决线性地址空间不够用的问题,在 64-bit 上由于有足够的线性地址空间所以就没了该 zone。不同 zone 存在的目的是基于数据的局部性原则,我们在写代码的时候也知道,把相关的数据给放在一起可以提高性能,memory zone 也是这个道理。于是 MMU 在分配内存时,也会尽量给同一个进程分配同一个 zone 的内存。凡事有利就有弊,这样有好处自然也可能会带来一些坏处。
为了避免 direct reclaim,我们得保证在进程申请内存时有足够可用的 free pages,从前面我们可以看出,提高 watermark low 可以尽早的唤醒 kswapd,然后 kswapd 来做 background reclaim。为此,内核专门提供了一个 sysctl 接口给用户来使用:vm.extra_free_kbytes。
# cat /etc/sysctl.conf | grep kbytes
vm.extra_free_kbytes = 4096000
vm.min_free_kbytes = 2097152
于是我们增大这个值(比如增大到 5G),确实也解决了问题。增大该值来提高 low 水位,这样在申请内存的时候,如果 free 的内存低于了该水位,就会唤醒 kswapd 去做页回收,同时又由于还有足够的 free 内存可用所以进程能够正常申请而不触发直接回收。
线程的回收跟 memory zone 相关。也就是说 normal zone 里面的 free pages 不够用了,于是触发了 direct reclaim。但是,假如此时 DMA zone 里还有足够的 free pages 呢?线程会不会从 DMA zone 里来申请内存呢?
free 的 pages 都在其它的 zone 里头,所以线程去回收自己 zone 的 page cache 而不去使用其它 zone 的 free pages。对于这个内核也提供了一个接口给用户使用:vm.zone_reclaim_mode. 这个值在该机器上本来是1(即宁肯回收自己 zone 的 page cache,也不去申请其它 zone 的 free pages),我把它更改为0(即只要其它 zone 有 free pages 就去其它 zone 里申请),就解决了该问题(一设置后系统就恢复了正常)
从这个问题也可以看出,Linux 内核提供了各种各样的机制,然后我们根据具体的使用场景来选择使用的策略。目的是为了在不影响稳定性的前提下,尽可能的提升系统性能。
Linux 机制的多种多样,也给上层的开发者带来了一些苦恼:由于对底层了解的不深入,就很难选择出一个很好的策略来使用这些内核机制。
然而对这些机制的使用,也不会有一个万能公式,还是要看具体的使用场景。由于搜索服务器存在很多批量文件操作,所以对 page cache 的使用很频繁,
所以我们才选择了尽早的能够触发 background reclaim 这个策略;而如果你的文件操作不频繁,显然就没有必要去尽早的唤醒后台回收线程。
另外一个,作为一个文件服务器,它对 page cache 的需求是很大的,越多的内存作为 page cache,系统的整体性能就会越好,所以我们就没有必要为了数据的局部性而预留 DMA 内存,
两相比较肯定是 page cache 对性能的提升大于数据的局部性对性能的提升;而如果你的文件操作不多的话,那还是打开 zone_reclaim 的。
# cat /etc/sysctl.conf | grep zone
vm.zone_reclaim_mode = 0
经过调整以上这几个参数后,再持续监控一段时间,问题得以解决。
在 redhat 官网和 cloudera 官网也搜到了相关的内容,附录下来,供参考。
在 redhat 的官网上,有对THP特性的细化说明:
https://access.redhat.com/site ... .html
在 cloudera 的 CDH4 部署说明中,也建议将系统的 THP 的 compaction 特性关闭:
http://www.cloudera.com/conten ... .html
尝试了一些命令后,发现和使用 JVM 命令一样,搞不定,比如用 ltrace 就导致 JVM 进程僵死。由于并非稳定重现,耗时好几天,才使用 strace -T -r -c -f -F -p 得到 futex、epoll_wait 占用资源。这不行,这些信息不足以说明或支撑如何解决负载问题,但 futex 这个是系统调用是互斥的信号,难道有锁方面问题,似乎应该从这个方面下手。
Linux 中有什么好的工具能在这种敲命令都没响应的情况下来获取一些信息呢?于是再找一些工具,gdb 尝试了下,直接卡死,搞不定。gstack、gcore 都不行,难道非得要 dump kernel core?
但即使得到了,我对 Linux 内核的分析还没多少经验,而且耗时,中间少不了服务器频繁重启,不到万不得已不走这一步。
找了一些工具:systemtap、stap、dtrace、perf 等,于是在非繁忙时候搞了一把,systemtap 的 On-CPU、Off-CPU 及火焰图不错,至少我能拿到内核系统调用到底是哪些,然后针对火焰图里耗时的系统调用信息再找具体的解决方案。systemtap 虽好,但那个 sample-bt 脚本总不如意,在负载高的时候被自己的资源限制,改了些参数也不如意。于是转向 perf,这玩意好,轻量级,就取个 60s 信息,多来几把,嘿嘿,还正搞出一些数据。
# perf record -F 99 -ag -o p1.data -- sleep 60
# perf script -i p1.data | ./stackcollapse-perf.pl > out.perf-folded
# cat out.perf-folded | ./flamegraph.pl > perf-kernel-1.svg
将分析的数据转换为火焰图,用火眼金睛照一照,还真能看出一些问题。
通过调用依赖关系分析,根据 _spin_lock_irq 初步推测问题由 kernel 的内存管理部分触发。
似乎 CentOS 6 相对于 CentOS 5 在 kernel 内存管理模块的一些改进点(如 transparent huge page, 基于 NUMA 的内存分配等),有没有可能是 CentOS 6 新增的 THP 特性导致 cpu sys 过高?搜索下相关函数名的关键字,确定猜测正确。通过以下内核参数优化关闭系统 THP 特性(临时生效):
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
从火焰图我们也可以看到,申请内存的线程在等待自旋锁,操作系统现在正回收 pagecache 到 freelist。于是 zone 里来申请内存的线程都得在这里等待着,于是 load 值就高了上来。外在的表现就是,系统反应好慢啊,ssh 都登不进去(因为 ssh 也会申请内存);即使登录进去了,敲命令也没有反应(因为这些命令也都是需要申请内存的)。
几个概念(来源于网络):
page cache
导致这个情况的原因是:线程在申请内存的时候,发现该 zone 的 freelist 上已经没有足够的内存可用,所以不得不去从该 zone 的 LRU 链表里回收 inactive 的 page,这种情况就是 direct reclaim(直接回收)。direct reclaim 会比较消耗时间的原因是,它在回收的时候不会区分 dirty page 和 clean page,
如果回收的是 dirty page,就会触发磁盘 IO 的操作,它会首先把 dirty page 里面的内容给刷写到磁盘,再去把该 page 给放到 freelist 里。
page reclaim
在直观上,我们有一个认知,当读了一个文件,它会被缓存到内存里面,如果接下来的一几天我们一直都不会再次访问它,而且这几天都不会关闭或者重启机器,那么在这几天之后该文件就不应该再在内存里头了。这就是内核对 page cache 的管理策略:LRU(最近最少使用)。即把最近最少使用的 page cache 给回收为 free pages。
内核的页回收机制有两种:后台回收和直接回收。
后台回收是有一个内核线程 kswapd 来做的,当内存里 free 的 pages 低于一个水位(page_low)时,就会唤醒该内核线程,然后它从 LRU 链表里回收 page cache 到内存的 free_list 里头,它会一直回收直至 free 的 pages 达到另外一个水位 page_high. 如下图所示:
直接回收则是,在发生 page fault 时,没有足够可用的内存,于是线程就自己直接去回收内存,它一次性的会回收 32 个 pages。逻辑过程如下图所示
所以要避免做 direct reclaim。
memory zone
对于多核 NUMA 系统而言,内存是分节点的,不同的 CPU 对不同的内存节点的访问速度是不一样的,所以 CPU 会优先去访问靠近自己的内存节点(即速度相对快的内存区域)。
CPU 内部是依靠 MMU 来进行内存管理的,根据内存属性的不同,MMU 将一个内存节点内部又划分了不同的 zone。
对 64-bit 系统而言,一个内存节点包含三个 zone:Normal,DMA,DMA32.
对 32-bit 系统而言,一个内存节点则是包括 zone:Normal,Highmem,DMA。
Highmem 存在的目的是为了解决线性地址空间不够用的问题,在 64-bit 上由于有足够的线性地址空间所以就没了该 zone。不同 zone 存在的目的是基于数据的局部性原则,我们在写代码的时候也知道,把相关的数据给放在一起可以提高性能,memory zone 也是这个道理。于是 MMU 在分配内存时,也会尽量给同一个进程分配同一个 zone 的内存。凡事有利就有弊,这样有好处自然也可能会带来一些坏处。
为了避免 direct reclaim,我们得保证在进程申请内存时有足够可用的 free pages,从前面我们可以看出,提高 watermark low 可以尽早的唤醒 kswapd,然后 kswapd 来做 background reclaim。为此,内核专门提供了一个 sysctl 接口给用户来使用:vm.extra_free_kbytes。
# cat /etc/sysctl.conf | grep kbytes
vm.extra_free_kbytes = 4096000
vm.min_free_kbytes = 2097152
于是我们增大这个值(比如增大到 5G),确实也解决了问题。增大该值来提高 low 水位,这样在申请内存的时候,如果 free 的内存低于了该水位,就会唤醒 kswapd 去做页回收,同时又由于还有足够的 free 内存可用所以进程能够正常申请而不触发直接回收。
线程的回收跟 memory zone 相关。也就是说 normal zone 里面的 free pages 不够用了,于是触发了 direct reclaim。但是,假如此时 DMA zone 里还有足够的 free pages 呢?线程会不会从 DMA zone 里来申请内存呢?
free 的 pages 都在其它的 zone 里头,所以线程去回收自己 zone 的 page cache 而不去使用其它 zone 的 free pages。对于这个内核也提供了一个接口给用户使用:vm.zone_reclaim_mode. 这个值在该机器上本来是1(即宁肯回收自己 zone 的 page cache,也不去申请其它 zone 的 free pages),我把它更改为0(即只要其它 zone 有 free pages 就去其它 zone 里申请),就解决了该问题(一设置后系统就恢复了正常)
从这个问题也可以看出,Linux 内核提供了各种各样的机制,然后我们根据具体的使用场景来选择使用的策略。目的是为了在不影响稳定性的前提下,尽可能的提升系统性能。
Linux 机制的多种多样,也给上层的开发者带来了一些苦恼:由于对底层了解的不深入,就很难选择出一个很好的策略来使用这些内核机制。
然而对这些机制的使用,也不会有一个万能公式,还是要看具体的使用场景。由于搜索服务器存在很多批量文件操作,所以对 page cache 的使用很频繁,
所以我们才选择了尽早的能够触发 background reclaim 这个策略;而如果你的文件操作不频繁,显然就没有必要去尽早的唤醒后台回收线程。
另外一个,作为一个文件服务器,它对 page cache 的需求是很大的,越多的内存作为 page cache,系统的整体性能就会越好,所以我们就没有必要为了数据的局部性而预留 DMA 内存,
两相比较肯定是 page cache 对性能的提升大于数据的局部性对性能的提升;而如果你的文件操作不多的话,那还是打开 zone_reclaim 的。
# cat /etc/sysctl.conf | grep zone
vm.zone_reclaim_mode = 0
经过调整以上这几个参数后,再持续监控一段时间,问题得以解决。
在 redhat 官网和 cloudera 官网也搜到了相关的内容,附录下来,供参考。
在 redhat 的官网上,有对THP特性的细化说明:
https://access.redhat.com/site ... .html
在 cloudera 的 CDH4 部署说明中,也建议将系统的 THP 的 compaction 特性关闭:
http://www.cloudera.com/conten ... .html 收起阅读 »
社区日报 第87期 (2017-11-01)
http://t.cn/RlvDxqS
2. 你真的了解 ES 的分页么?
http://t.cn/Rlvzfni
3. 分页查询 From&Size VS scroll
http://t.cn/RGBeOOK
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
编辑:江水
归档:https://elasticsearch.cn/article/347
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RlvDxqS
2. 你真的了解 ES 的分页么?
http://t.cn/Rlvzfni
3. 分页查询 From&Size VS scroll
http://t.cn/RGBeOOK
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
编辑:江水
归档:https://elasticsearch.cn/article/347
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
社区日报 第86期 (2017-10-31)
http://t.cn/RWrfOI7
2.基于 Elasticsearch实现搜索建议的一些方法。
http://t.cn/RWrfudV
3.如何在windows上安装Logstash与Kibana。
http://t.cn/RWrfQij
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
编辑:叮咚光军
归档:https://elasticsearch.cn/article/345
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RWrfOI7
2.基于 Elasticsearch实现搜索建议的一些方法。
http://t.cn/RWrfudV
3.如何在windows上安装Logstash与Kibana。
http://t.cn/RWrfQij
活动预告:Elastic 武汉交流会
https://elasticsearch.cn/article/344
编辑:叮咚光军
归档:https://elasticsearch.cn/article/345
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
Elastic Meetup 武汉交流会
Elastic Meetup 线下交流活动首次来到江城武汉,武汉是湖北省省会、中部六省唯一的副省级市和特大城市、中国中部地区的中心城市,全国重要的工业基地、科教基地和综合交通枢纽。
主办:
本次活动由 Elastic 与 猫友会 联合举办。
媒体:
本次活动由 IT大咖说 独家提供现场直播。
时间:
2017.11.4 下午2:00-5:00(1点半开始签到)
地点:
氪空间(武汉市武昌区湖北省科技创业大厦A栋3楼客空间)
主题:
Elastic - Medcl - Elastic Stack 6.0 新功能介绍
尚德机构 - 白凡 - 高吞吐状况下斗鱼搜索引擎优化之路
基于爬虫和 Elasticsearch 快速构建站内搜索引擎
闪电分享(5-10分钟,可现场报名)
参会报名:
http://elasticsearch.mikecrm.com/O6o0yq3
现场直播
现场交流微信群
(❗️⚠️请注意:限武汉本地同学,外地毋加,微信人数限制,仅供现场参会人员沟通使用,谢谢合作???)
广州、深圳也在筹备中:https://elasticsearch.cn/article/261
关于 Elastic Meetup
Elastic Meetup 由 Elastic 中文社区定期举办的线下交流活动,主要围绕 Elastic 的开源产品(Elasticsearch、Logstash、Kibana 和 Beats)及周边技术,探讨在搜索、数据实时分析、日志分析、安全等领域的实践与应用。
关于 Elastic
Elastic 通过构建软件,让用户能够实时地、大规模地将数据用于搜索、日志和分析场景。Elastic 创立于 2012 年,相继开发了开源的 Elastic Stack(Elasticsearch、Kibana、Beats 和 Logstash)、X-Pack(商业功能)和 Elastic Cloud(托管服务)。截至目前,累计下载量超过 1.5 亿。Benchmark Capital、Index Ventures 和 NEA 为 Elastic 提供了超过 1 亿美元资金作为支持,Elastic 共有 600 多名员工,分布在 30 个国家/地区。有关更多信息,请访问 http://elastic.co/cn 。
关于猫友会
猫友会介绍:猫友会通过“人才回流,知识回流,创业回流”,来改变武汉互联网的行业环境。目前是影响力最大的湖北籍互联网社群,聚集了世界各地的5000余名湖北籍的互联网工程师。猫友会社区http://bbs.maoyouhui.cc. 光谷猫友会公众号:mtydev。
关于IT大咖说
IT大咖说,IT垂直领域的大咖知识分享平台,践行“开源是一种态度”,通过线上线下开放模式分享行业TOP大咖干货,技术大会在线直播点播,在线活动直播平台。http://www.itdks.com 。
再次感谢猫友会和IT大咖说的大力支持!
Elastic Meetup 线下交流活动首次来到江城武汉,武汉是湖北省省会、中部六省唯一的副省级市和特大城市、中国中部地区的中心城市,全国重要的工业基地、科教基地和综合交通枢纽。
主办:
本次活动由 Elastic 与 猫友会 联合举办。
媒体:
本次活动由 IT大咖说 独家提供现场直播。
时间:
2017.11.4 下午2:00-5:00(1点半开始签到)
地点:
氪空间(武汉市武昌区湖北省科技创业大厦A栋3楼客空间)
主题:
Elastic - Medcl - Elastic Stack 6.0 新功能介绍
尚德机构 - 白凡 - 高吞吐状况下斗鱼搜索引擎优化之路
基于爬虫和 Elasticsearch 快速构建站内搜索引擎
闪电分享(5-10分钟,可现场报名)
参会报名:
http://elasticsearch.mikecrm.com/O6o0yq3
现场直播
现场交流微信群
(❗️⚠️请注意:限武汉本地同学,外地毋加,微信人数限制,仅供现场参会人员沟通使用,谢谢合作???)
广州、深圳也在筹备中:https://elasticsearch.cn/article/261
关于 Elastic Meetup
Elastic Meetup 由 Elastic 中文社区定期举办的线下交流活动,主要围绕 Elastic 的开源产品(Elasticsearch、Logstash、Kibana 和 Beats)及周边技术,探讨在搜索、数据实时分析、日志分析、安全等领域的实践与应用。
关于 Elastic
Elastic 通过构建软件,让用户能够实时地、大规模地将数据用于搜索、日志和分析场景。Elastic 创立于 2012 年,相继开发了开源的 Elastic Stack(Elasticsearch、Kibana、Beats 和 Logstash)、X-Pack(商业功能)和 Elastic Cloud(托管服务)。截至目前,累计下载量超过 1.5 亿。Benchmark Capital、Index Ventures 和 NEA 为 Elastic 提供了超过 1 亿美元资金作为支持,Elastic 共有 600 多名员工,分布在 30 个国家/地区。有关更多信息,请访问 http://elastic.co/cn 。
关于猫友会
猫友会介绍:猫友会通过“人才回流,知识回流,创业回流”,来改变武汉互联网的行业环境。目前是影响力最大的湖北籍互联网社群,聚集了世界各地的5000余名湖北籍的互联网工程师。猫友会社区http://bbs.maoyouhui.cc. 光谷猫友会公众号:mtydev。
关于IT大咖说
IT大咖说,IT垂直领域的大咖知识分享平台,践行“开源是一种态度”,通过线上线下开放模式分享行业TOP大咖干货,技术大会在线直播点播,在线活动直播平台。http://www.itdks.com 。
再次感谢猫友会和IT大咖说的大力支持! 收起阅读 »
社区日报 第85期 (2017-10-30)
http://t.cn/RWmjISQ
2.玩儿透日志分析集群搭建,调优,管理。
http://t.cn/RWmYDJv
3.现在就可以预约十一月一号的elastic官方kibana可视化教程。
http://t.cn/RWmRcgA
编辑:cyberdak
归档:https://elasticsearch.cn/article/343
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RWmjISQ
2.玩儿透日志分析集群搭建,调优,管理。
http://t.cn/RWmYDJv
3.现在就可以预约十一月一号的elastic官方kibana可视化教程。
http://t.cn/RWmRcgA
编辑:cyberdak
归档:https://elasticsearch.cn/article/343
订阅:https://tinyletter.com/elastic-daily
收起阅读 »
社区日报 第84期 (2017-10-29)
http://t.cn/RWH0Oyg
2.父子关系在Elasticsearch中的性能考量。
http://t.cn/RWH0TH3
3.(自备梯子)5天在5家硅谷顶级公司面试,作者如何拿到5份offer。
http://t.cn/RWinyw9
编辑:至尊宝
归档:https://elasticsearch.cn/article/342
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RWH0Oyg
2.父子关系在Elasticsearch中的性能考量。
http://t.cn/RWH0TH3
3.(自备梯子)5天在5家硅谷顶级公司面试,作者如何拿到5份offer。
http://t.cn/RWinyw9
编辑:至尊宝
归档:https://elasticsearch.cn/article/342
订阅:https://tinyletter.com/elastic-daily 收起阅读 »
社区日报 第83期 (2017-10-28)
http://t.cn/RWWD6LM
2.如何更优雅的定制开发elasicsearch插件
https://elasticsearch.cn/article/339
3.你应该了解的5个 Logstash Filter 插件
https://elasticsearch.cn/article/332
活动预告:Elastic 长沙交流会
https://elasticsearch.cn/article/320
感谢jiangtao,dongne的投稿。
编辑:金桥
归档:https://elasticsearch.cn/article/341
订阅:https://tinyletter.com/elastic-daily
http://t.cn/RWWD6LM
2.如何更优雅的定制开发elasicsearch插件
https://elasticsearch.cn/article/339
3.你应该了解的5个 Logstash Filter 插件
https://elasticsearch.cn/article/332
活动预告:Elastic 长沙交流会
https://elasticsearch.cn/article/320
感谢jiangtao,dongne的投稿。
编辑:金桥
归档:https://elasticsearch.cn/article/341
订阅:https://tinyletter.com/elastic-daily 收起阅读 »














