这是一个实验性功能,不建议在生产环境中使用。有关该功能进展的更新或如果您想提供反馈,请参阅相关的 GitHub issue。
虽然 OpenSearch 统计 API 提供了对每个节点和整个 OpenSearch 集群内部工作原理的洞察,但这些统计数据缺乏某些细节,例如百分位数,并且不提供更丰富的指标类型(如直方图)的语义。因此,仅使用统计 API 很难识别集群统计数据中的异常值。
指标框架功能增加了全面的指标支持,以有效监控 OpenSearch 集群。使用指标框架 API、插件和扩展,开发人员可以添加新的监控指标。此外,OpenSearch 发行版捆绑了 telemetry-otel
插件,该插件提供了基于 OpenTelemetry Java SDK 的指标检测实现。
入门
指标框架功能在 OpenSearch 2.11 中是实验性的。要开始使用指标框架功能,您需要首先使用 opensearch.experimental.feature.telemetry.enabled
功能标志启用 遥测功能
,然后使用指标框架功能标志。
启用此功能可能会消耗系统资源。在启用指标框架功能之前,请确定您是否有足够的集群资源可供分配。
使用 tarball 在节点上启用功能标志
enable
标志通过 Java 虚拟机 (JVM) 参数进行切换,该参数可以在 OPENSEARCH_JAVA_OPTS
或 config/jvm.options
中设置。
选项 1:在 opensearch.yml
文件中启用实验性功能标志
- 使用以下命令导航到您的 OpenSearch 目录
cd \path\to\opensearch
- 打开您的
opensearch.yml
文件。 - 将以下设置添加到
opensearch.yml
opensearch.experimental.feature.telemetry.enabled: true
- 保存更改并关闭文件。
选项 2:修改 jvm.options
要使用 jvm
启用指标框架功能,请在启动 OpenSearch 之前将以下行添加到 config/jvm.options
-Dopensearch.experimental.feature.telemetry.enabled=true
选项 3:从环境变量启用
您可以通过将指标框架环境变量添加到 OPENSEARCH_JAVA_OPTS
命令中,从而使用单个命令启用指标框架功能,如下例所示
OPENSEARCH_JAVA_OPTS="-Dopensearch.experimental.feature.telemetry.enabled=true" ./opensearch-2.9.0/bin/opensearch
您也可以在运行 OpenSearch 之前单独定义环境变量,通过运行以下命令
export OPENSEARCH_JAVA_OPTS="-Dopensearch.experimental.feature.telemetry.enabled=true"
./bin/opensearch
使用 Docker 启用
如果您正在使用 Docker 运行 OpenSearch,请在 docker-compose.yml
的 environment
部分添加以下行
OPENSEARCH_JAVA_OPTS="-Dopensearch.experimental.feature.telemetry.enabled=true"
启用指标框架功能
启用功能标志后,您可以使用以下设置启用指标框架功能,该设置可在 opensearch.yaml
文件中启用指标
telemetry.feature.metrics.enabled: true
指标框架功能通过插件支持各种遥测解决方案。请使用以下说明启用 telemetry-otel
插件
- 发布间隔: 指标框架功能可以在本地聚合包含有关配置的发布间隔的唯一信息的指标,然后导出这些指标。默认情况下,间隔为 1 分钟。但是,您可以使用
telemetry.otel.metrics.publish.interval
集群设置更改间隔。 - 导出器: 导出器负责持久化数据。OpenTelemetry 提供了多种开箱即用的导出器。OpenSearch 支持以下导出器
LoggingMetricExporter
:将指标导出到日志文件,在日志目录中生成一个单独的文件_otel_metrics.log
。默认值为telemetry.otel.metrics.exporter.class=io.opentelemetry.exporter.logging.LoggingMetricExporter
。OtlpGrpcMetricExporter
:通过 gRPC 导出 span。要使用此导出器,您需要在节点上安装otel-collector
。默认情况下,它写入 https://:4317/ 端点。要使用此导出器,请设置以下静态设置:telemetry.otel.metrics.exporter.class=io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter
。
支持的指标类型
指标框架功能支持以下指标类型
- 计数器: 计数器是连续同步的计量器,用于跟踪事件随时间发生的频率。计数器只能用正值递增,因此非常适合测量监控事件的数量,例如错误、已处理或接收的字节以及总请求数。
- 增减计数器: 增减计数器可以用正值递增,也可以用负值递减。增减计数器非常适合跟踪开放连接、活动请求和其他波动量等指标。
- 直方图: 直方图是用于可视化连续数据分布的宝贵工具。直方图可提供对指标中可能存在的中心趋势、离散度、偏度和潜在异常值的洞察。可以很容易地识别正态分布、偏态分布或双峰分布等模式,这使得直方图成为分析延迟指标和评估百分位数的理想选择。
- 异步量具: 异步量具在读取指标时捕获当前值。这些指标不可叠加,通常用于衡量每分钟的 CPU 利用率、内存利用率和其他实时值。
监控机器学习工作流
于 3.1 版本引入
OpenSearch 为机器学习 (ML) 工作流提供了增强的可观察性。与 ML 操作相关的指标会直接推送到核心指标注册表,从而让您更好地了解模型的使用情况和性能。此外,每 5 分钟会有一个周期性作业收集并导出状态数据,帮助您随着时间推移监控 ML 工作负载的健康状况和活动。
要启用 ML 可观察性,请在 opensearch.yml
中指定以下设置
plugins.ml_commons.metrics_collection_enabled: true
plugins.ml_commons.metrics_static_collection_enabled: true