遥测设备
遥测设备为您提供基准测试结果的额外洞察。要查看可用遥测设备的列表,请使用命令 opensearch-benchmark list telemetry
。
所有带有 --stats
的遥测设备都可以用于非 OpenSearch Benchmark 预置的集群。这些设备被称为运行时级别遥测设备。另外,设置级别遥测设备包括只能在 OpenSearch Benchmark 预置集群时使用的设备。
本页面列出了 OpenSearch Benchmark 支持的遥测设备。
jfr
jfr
遥测设备在基准测试候选设备上启用 Java Flight Recorder (JFR)。直到 Java Development Kit (JDK) 11,JFR 仅随 Oracle JDK 提供。OpenSearch Benchmark 假定使用 Oracle JDK 进行基准测试。如果您在 JDK 11 或更高版本上运行基准测试,JFR 在 OpenJDK 上也可用。
要启用 jfr
,请使用命令 opensearch-benchmark workload --workload=pmc --telemetry jfr
调用工作负载。然后 jfr
将写入一个飞行记录文件,该文件可以在 Java Mission Control 中打开。OpenSearch Benchmark 会在命令行上打印飞行记录文件的位置。
jfr
设备支持以下参数
recording-template
: 自定义飞行记录模板的名称。您有责任在每台目标机器上正确安装这些记录模板。如果未指定,则使用默认的 JFR 记录模板。jfr-delay
: 开始记录前等待的时间长度。可选。jfr-duration
: 记录的时间长度。可选。
jit
jit
遥测设备为基准测试候选设备启用 JIT 编译器日志。如果 HotSpot 反汇编程序库可用,日志将包含反汇编的 JIT 编译器输出,可用于低级分析。
gc
gc
遥测设备为基准测试候选设备启用垃圾收集器 (GC) 日志。您可以使用 GCViewer 等工具分析 GC 日志。
如果运行时 JDK 是 Java 9 或更高版本,您可以指定 gc-log-config
参数。GC 日志配置包含标签和级别的列表,例如默认值 gc*=info,safepoint=info,age*=trace
。运行 java -Xlog:help
查看可用级别和标签的列表。
heapdump
heapdump
遥测设备在基准测试完成后、节点关闭前捕获堆转储。
node-stats
node-stats
遥测设备定期调用集群的 节点统计 API,并记录以下统计数据及其相关键的指标
- 索引统计:
indices
- 线程池统计:
thread_pool
- JVM 缓冲区池统计:
jvm.buffer_pools
- JVM GC 统计:
jvm.gc
- OS 内存统计:
os.mem
- OS cgroup 统计:
os.cgroup
- JVM 内存统计:
jvm.mem
- 断路器统计:
breakers
- 网络相关统计:
transport
- 进程 CPU 统计:
process.cpu
node-stats
设备支持以下参数
node-stats-sample-interval
: 一个大于零的正数,表示采样间隔(秒)。默认值为1
。node-stats-include-indices
: 一个布尔值,指示是否应包含索引统计数据。默认值为false
。node-stats-include-indices-metrics
: 一个逗号分隔的字符串,指定要包含的索引统计指标。这对于限制收集的索引统计指标很有用。指定此参数会隐式启用索引统计数据的收集,因此您无需同时指定node-stats-include-indices: true.
例如,--telemetry-params="node-stats-include-indices-metrics:'docs'"
将从索引统计数据中收集文档指标。如果要使用多个字段,请将 JSON 文件传递给telemetry-params
。默认值为docs,store,indexing,search,merges,query_cache,fielddata,segments,translog,request_cache
。node-stats-include-thread-pools
: 一个布尔值,指示是否应包含线程池统计数据。默认值为true
。node-stats-include-buffer-pools
: 一个布尔值,指示是否应包含缓冲区池统计数据。默认值为true
。node-stats-include-breakers
: 一个布尔值,指示是否应包含断路器统计数据。默认值为true
。node-stats-include-gc
: 一个布尔值,指示是否应包含 JVM GC 统计数据。默认值为true
。node-stats-include-mem
: 一个布尔值,指示是否应包含 JVM 堆和操作系统内存统计数据。默认值为true
。node-stats-include-cgroup
: 一个布尔值,用于包含操作系统 cgroup 统计数据。内存统计数据被省略,因为 OpenSearch 将它们输出为字符串值。请改用os_mem_*
字段。默认值为true
。node-stats-include-network
: 一个布尔值,指示是否应包含网络相关统计数据。默认值为true
。node-stats-include-process
: 一个布尔值,指示是否应包含进程 CPU 统计数据。默认值为true
。node-stats-include-indexing-pressure
: 一个布尔值,指示是否应包含索引压力统计数据。默认值为true
。
recovery-stats
recovery-stats
遥测设备定期调用 CAT Recovery API,并为每个分片记录一个指标文档。
此遥测设备支持以下参数
searchable-snapshots-stats-indices
一个字符串,包含应额外收集可搜索快照统计数据的索引模式或索引模式列表。如果未设置,则仅收集集群级别统计数据。默认值为None
。searchable-snapshots-stats-sample-interval
: 一个大于零的正数,表示采样间隔(秒)。默认值为1
。
shard-stats
shard-stats
遥测设备定期使用 level=shard
集群参数调用集群的 节点统计 API,并为每个分片记录一个指标文档。
此设备支持 shard-stats-sample-interval
参数,该参数定义了采样间隔(秒)。默认值为 60
。
data-stream-stats
data-stream-stats
遥测设备定期调用 数据流统计 API,并为集群级别统计 (_all
) 记录一个指标文档,并为每个数据流记录一个指标文档。
以下是集群中存在两个数据流时记录文档的示例
{
"data_streams" : [
{
"name" : "logs-nginx",
"timestamp_field" : {
"name" : "request_time"
},
"indices" : [
{
"index_name" : ".ds-logs-nginx-000001",
"index_uuid" : "-VhmuhrQQ6ipYCmBhn6vLw"
}
],
"generation" : 1,
"status" : "GREEN",
"template" : "logs-template-nginx"
}
]
},
{
"name": "data-stream-stats",
"data_stream": "my-data-stream-1",
"backing_indices": 1,
"store_size_bytes": 439137,
"maximum_timestamp": 1579936446448
},
{
"name": "data-stream-stats",
"data_stream": "my-data-stream-2",
"backing_indices": 1,
"store_size_bytes": 439199,
"maximum_timestamp": 1579936446448
}
此遥测设备支持 data-stream-stats-sample-interval
参数,该参数定义了采样间隔(秒)。默认值为 10
。
ingest-pipeline-stats
ingest-pipeline-stats
遥测设备在基准测试的开始和结束时调用节点统计 API,并以以下文档的形式记录增量
- 每个集群有三个结果文档:
ingest_pipeline_cluster_count
、ingest_pipeline_cluster_time
、ingest_pipeline_cluster_failed
- 每个节点各自统计的一个指标文档:
ingest_pipeline_node_count
、ingest_pipeline_node_time
、ingest_pipeline_node_failed
- 每个管道各自统计的一个指标文档:
ingest_pipeline_pipeline_count
、ingest_pipeline_pipeline_time
、ingest_pipeline_pipeline_failed
- 每个管道处理器各自统计的一个指标文档:
ingest_pipeline_processor_count
、ingest_pipeline_processor_time
、ingest_pipeline_processor_failed
以下示例显示了给定单个集群、单个节点和单个管道时的每个文档记录
{
"name": "ingest_pipeline_cluster_count",
"value": 1001,
"meta": {
"cluster_name": "docker-cluster"
}
},
{
"name": "ingest_pipeline_node_count",
"value": 1001,
"meta": {
"cluster_name": "docker-cluster",
"node_name": "node-001"
}
},
{
"name": "ingest_pipeline_pipeline_count",
"value": 1001,
"meta": {
"cluster_name": "docker-cluster",
"node_name": "node-001",
"ingest_pipeline": "test-pipeline-1"
}
},
{
"name": "ingest_pipeline_processor_count",
"value": 1001,
"meta": {
"cluster_name": "docker-cluster",
"node_name": "node-001",
"ingest_pipeline": "test-pipeline-1",
"processor_name": "uppercase_1",
"type": "uppercase"
}
}