Ops Manager可以将MongoDB 助手收集的部署指标以 OpenTelemetry (OTel) 格式发送到第三方可观察性后端,同时Ops Manager继续接收这些指标。此功能使您能够将MongoDB部署集成到现有的可观察性堆栈或接受 OpenTelemetry Protocol (OTLP) 的任何其他平台中。您不需要自定义管道、sidecar 进程或其他集合代理。
OTel 导出具有累加性,默认情况下处于默认。传递到Ops Manager 的指标不会以任何方式改变:每个信号继续在现有Ops Manager路径上保持不变。 OTel 导出路径上的任何故障(例如无法访问的端点)都是隔离的,以便向Ops Manager报告永远不会中断。
启用此功能后, MongoDB 助手会按照可配置的节奏(默认为 30 秒)通过 OTLP/ HTTP将指标推送到配置的端点。每个周期向每个受监控的进程发送一个 OTLP请求,外加一个针对代理自身健康状况的请求,因此您的后端在每个时间间隔接收多个小型请求,而不是一个大批处理。您的端点可以是以下之一:
OpenTelemetry Collector,可以进程指标并将其路由到多个目标。
一个原生接受 OTLP 的可观察性平台(示例Datadog、Grafana、Dynatrace)。
您可以通过自动化配置来配置此功能。 MongoDB 助手会在现有的集合周期内收集导出的指标,因此此功能不会给您监控的MongoDB进程带来额外的负载。
OTel 导出与 Prometheus 集成有何不同
OTel 导出路径不能直接替代现有的 Prometheus 集成。而 Prometheus 集成是基于拉取的,并且MongoDB 助手会公开 Prometheus服务器抓取的 /metrics 端点。 OTel 路径基于推送, MongoDB 助手根据计时器将指标发送到您配置的 OTLP 端点。
OTel指标还使用不同的名称、类型和单位,遵循MongoDB的 OpenTelemetry 语义约定,因此您无法重复使用现有的 Prometheus 仪表盘。您必须在目标可观察性平台中根据导出的指标创建新的仪表盘、警报和查询。
先决条件
在配置 OTel 导出之前,请确保满足以下要求:
必须先为部署启用监控,然后才能配置 OTel 导出。 OTel 导出会重复使用MongoDB 助手已收集的样本进行监控。要学习;了解如何安装MongoDB 助手并启用监控,请参阅安装MongoDB 助手以监控或备份部署。
确保可从运行MongoDB 助手的每台托管访问 OTLP 端点。 MongoDB 助手将指标直接推送到端点。在启用此功能之前,请验证防火墙规则和出口策略。
确认您有
Project Automation Admin访问权限,可以通过Ops Manager API更新自动化配置。要学习;了解有关项目角色的更多信息,请参阅Ops Manager角色。要学习;了解自动化配置API,请参阅自动化配置资源。确保您的 OTLP 端点支持将 OTLP/ HTTP作为接收器协议。要学习;了解如何配置 OTLP/ HTTP接收器,请参阅 OpenTelemetry 协议规范。
启用 OTel 导出
您可以通过自动化配置来配置 OTel 导出。所有设置都包含在监控模块的 additionalParams 下的单个 otelConfig 键中。您可以通过Ops Manager界面中的现有自定义配置流程应用此配置,如自定义设置中所述。您还可以通过公共自动化配置API应用此配置。
以下示例显示了启用 OTel 导出的 additionalParams 条目:
1 "additionalParams": { 2 "otelConfig": "{\"enabled\":true,\"metricsExportIntervalSec\":30,\"backends\":[{\"endpoint\":\"https://collector.example.com:4318\",\"headers\":\"Authorization=Bearer <token>\",\"caCertPath\":\"/etc/ssl/ca.pem\"}]}" 3 }
有关 otelConfig 字段的完整列表,请参阅 OpenTelemetry (OTel) 导出设置。
重要
配置错误的 otelConfig 失败时会发出响亮的声音,而不是被静默地忽略。如果配置无效, MongoDB 助手会阻止监控模块启动。 MongoDB 助手每 30 秒重试一次配置,直到收到有效配置。因此,无效的 otelConfig 会影响整个监控,而不仅仅是 OTel 路径。代理使用 Otel: 前缀记录此故障,并在向Ops Manager报告的代理状态中予以显示。
配置更改将在监控模块下次重新启动时生效。当您更改相关自动化配置属性时, Ops Manager会自动触发此重启。
警告
如果配置 http:// 端点, MongoDB 助手会通过未加密的连接发送指标。 Ops Manager无法检测端点是否为生产目标,因此没有防护措施可以防止生产中的不安全导出。使用 https:// 端点进行生产部署。
Kubernetes部署
对于MongoDB Controllers for Kubernetes (MCK)托管的部署,OTel 导出使用相同的自动化配置机制。操作符维护自动化配置。操作符通过自定义资源更新将您的 OTel 设置写入代理主机。您不需要任何单独的 Kubernetes 特定配置。
导出的指标
此功能可通过 OTLP 导出下表中的指标组。指标名称、类型和单位遵循MongoDB的 OpenTelemetry 语义约定,使用一致的mongodb.* 命名模式。
指标组 | 源 | 覆盖 |
|---|---|---|
Server status |
| 操作计数器(包括复制)、操作延迟、连接、内存、网络、游标、插入、更新、删除和返回的文档、 WiredTiger缓存统计信息、票证和队列深度、锁获取、等待和死锁计数、活动读取和写入、断言、流量控制、查询目标、生存时间 (TTL) 删除、页面错误、正常运行时间和运行状况。 |
数据库统计信息 |
| 每个数据库的存储、数据大小、对象、索引和视图统计信息。 |
集合活动 |
| 每次操作的聚合时间。 |
复制 |
| Oplog 大小和窗口、复制延迟和节点运行状况。 |
分片 | Config metadata | 跨分片的数据段计数和数据分布。 |
代理自我健康状况 | 代理运行时 | MongoDB 助手的正常运行时间、内存和 goroutine,在专用的 |
此功能将指标导出为累积值,并带有从 mongod 正常运行时间派生的开始时间戳。 mongod 重启显示为标准计数器重置,因此速率计算在重启后保持正确。
陈旧度和系列生命周期
当进程暂时无法访问时, MongoDB 助手会按原样重新导出计数器系列,因此集合间隔不会被误读为计数器重置。
MongoDB 助手仅在时间点序列(例如
mongodb.health)是最新时导出它们,因此无法访问的进程会保持静默状态,而不是保留过时的值。MongoDB 助手会在 20 分钟后没有新示例下删除一个序列,并且该序列会从后端消失。根据缺失数据构建警报时,请考虑此行为。
在可观察性平台中设置仪表盘
您必须根据导出的指标在目标可观察性平台中创建新的仪表盘。 Ops Manager不提供预构建的仪表盘,您不能重复使用为 Prometheus 集成、 Ops Manager界面或其他第三方MongoDB集成创建的现有仪表盘。
设立仪表盘时请考虑此指导:
创建新的仪表盘,而不是移植现有的仪表盘。通过 OTLP 发出的指标名称遵循
mongodb.*命名约定,该约定不同于 Prometheus 导出器的名称和Ops Manager内部指标标识符。使用资源属性进行筛选和分组。每个指标都包含标识受监控进程和项目的资源属性。使用这些属性作为仪表盘面板、警报和分组的主节点 (primary node in the replica set)维度。
将速率函数应用于计数器指标。计数器是累积性的。将
rate()或increase()等函数或平台中的等效函数应用于计数器类型指标。重新创建警报。 OTel 导出不会继承 Prometheus、 Ops Manager或其他第三方集成中定义的现有警报规则。在目标平台中根据 OTel 指标名称和资源属性定义新的警报规则。
限制
每个部署一个后端。此功能仅支持一个 OTLP后端。配置多个后端会导致硬错误。要将指标分散到多个目标,请将 OpenTelemetry Collector 配置为导出目标,并通过其管道配置路由到更多后端。
仅限指标。此功能仅通过 OTLP 导出指标。 OTel 导出路径不包括以下信号,这些信号会继续流向Ops Manager不变:
日志(分析器条目、托管日志和代理日志)和跟踪
MongoDB Search进程指标
主机级系统指标(CPU、内存、磁盘和网络)
每个集合的延迟直方图
对于无法访问的目标,不进行缓冲。 MongoDB 助手会根据导出器的策略重试或删除失败的导出。此功能不提供存储并转发队列。在所有情况下,交付到Ops Manager都不受影响。