AWS OpenSearch 介绍
OpenSearch 是一种全面开源搜索和分析引擎,使用案例包括日志分析、实时应用程序监控、点击流分析等。Amazon OpenSearch Service 是一项托管服务,让用户能够在 AWS 云中轻松部署、运行并扩展 OpenSearch 集群。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
采集器配置
- 登陆观测云控制台
- 点击【集成】菜单,选择【云账号管理】
- 点击【添加云账号】,选择【AWS】,填写界面所需的信息,如之前已配置过云账号信息,则忽略此步骤
- 点击【测试】,测试成功后点击【保存】,如果测试失败,请检查相关配置信息是否正确,并重新测试
- 点击【云账号管理】列表上可以看到已添加的云账号,点击相应的云账号,进入详情页
- 点击云账号详情页的【集成】按钮,在未安装列表下,找到AWS OpenSearch,点击【安装】按钮,弹出安装界面安装即可。

关键指标
指标名称 | 描述 | 单位 |
---|---|---|
ClusterStatus_green | 值为 1 指示将所有索引分片分配给集群中的节点,表示集群处于健康状态 | Int |
ClusterStatus_yellow | 值为 1 指示将所有索引的主要分片分配给集群中的节点,但是至少有一个索引的分片副本不是如此 | Int |
ClusterStatus_red | 值为 1 指示至少一个索引的主分片和副本分片未分配给集群中的节点 | Int |
Shards_activePrimary | 活动主分区数 | Int |
Shards_unassigned | 未分配给集群中节点的分区数 | Int |
Shards_initializing | 正在初始化的分区数 | Int |
SearchableDocuments | 跨集群中所有数据节点的可搜索文档的总数 | Int |
Shards_active | 活动主分区和副本分区的总数 | Int |
Shards_delayedUnassigned | 其节点分配因超时设置已延迟的分区数 | Int |
Shards_relocating | 正在重新定位的分区数 | Int |
DeletedDocuments | 跨集群的所有数据节点已标记为删除的文档总数 | Int |
Nodes | OpenSearch 集群中的节点数 | Int |
CPUUtilization | 集群中数据节点的 CPU 利用率百分比 | Int |
FreeStorageSpace | 集群中各数据节点的可用空间 | Int |
ClusterUsedSpace | 集群的已使用空间总量 | Int |
2xx | 指定的 HTTP 响应代码 2xx 的对域的请求数 | Int |
3xx | 指定的 HTTP 响应代码 3xx 的对域的请求数 | Int |
4xx | 指定的 HTTP 响应代码 4xx 的对域的请求数 | Int |
5xx | 指定的 HTTP 响应代码 5xx 的对域的请求数 | Int |
ThroughputThrottle | 指示磁盘是否受到节流 | Int |
IopsThrottle | 指示该域每秒进行读写操作的次数(IOPS)是否已被节流 | Int |
JVMMemoryPressure | 用于集群中所有数据节点的 Java 堆的最大百分比 | Int |
JVMGCYoungCollectionCount | "年轻代"垃圾回收的运行次数 | Int |
JVMGCOldCollectionCount | "年老代"垃圾回收的运行次数 | Int |
OldGenJVMMemoryPressure | 集群中所有数据节点上用于"上一代"的 Java 堆的最大百分比 | Int |
JVMGCYoungCollectionTime | 集群执行"年轻代"垃圾回收所花费的时间,以毫秒为单位 | Int |
JVMGCOldCollectionTime | 集群执行"年老代"垃圾回收所花费的时间,以毫秒为单位 | Int |
IndexingLatency | 节点中所有索引操作所用的总时间差(以毫秒为单位) | Int |
IndexingRate | 每分钟的索引操作数 | Int |
SearchLatency | 节点中所有搜索的总时间差(以毫秒为单位) | Int |
SearchRate | 数据节点上所有分片的每分钟搜索请求总数 | Int |
SegmentCount | 数据节点上的分段数。您拥有的分段越多,每次搜索所花费的时间就越长 | Int |
SysMemoryUtilization | 使用中的实例内存的百分比。此指标的值较高是正常的,通常不表示集群存在问题 | Int |
ThreadpoolForce_mergeQueue | 强制合并线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群 | Int |
ThreadpoolForce_mergeRejected | 强制合并线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群 | Int |
ThreadpoolForce_mergeThreads | 强制合并线程池的大小 | Int |
ThreadpoolSearchQueue | 搜索线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群 | Int |
ThreadpoolSearchRejected | 搜索线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群 | Int |
ThreadpoolSearchThreads | 搜索线程池的大小 | Int |
Threadpoolsql-workerQueue | SQL 搜索线程池中的排队任务数。如果队列大小一直很大,请考虑扩展您的集群 | Int |
Threadpoolsql-workerRejected | SQL 搜索线程池中的已拒绝任务数。如果此数字持续增长,请考虑扩展您的集群 | Int |
Threadpoolsql-workerThreads | SQL 搜索线程池的大小 | Int |
ThreadpoolWriteQueue | 写入线程池中的排队任务数 | Int |
ThreadpoolWriteRejected | 写入线程池中的已拒绝任务数 | Int |
ThreadpoolWriteThreads | 写入线程池的大小 | Int |
CoordinatingWriteRejected | 由于索引压力而在协调节点上发生的拒绝总数 | Int |
PrimaryWriteRejected | 由于索引压力而在主分区上发生的拒绝总数 | Int |
ReplicaWriteRejected | 由于索引压力而在副本分区上发生的拒绝总数 | Int |
ReadLatency | EBS 卷上读取操作的延迟(以秒为单位) | Int |
WriteLatency | EBS 卷上写入操作的延迟(以秒为单位) | Int |
ReadThroughput | EBS 卷上读取操作的吞吐量(以字节/秒为单位) | Int |
WriteThroughput | EBS 卷上写入操作的吞吐量(以字节/秒为单位) | Int |
ReadIOPS | 针对 EBS 卷上的读取操作的每秒输入和输出 (I/O) 操作数 | Int |
WriteIOPS | 针对 EBS 卷上的写入操作的每秒输入和输出 (I/O) 操作数 | Int |
BurstBalance | 一个 EBS 卷的可爆发存储桶中剩余输入和输出(I/O)积分的百分比。值为 100 表示该卷积累的积分数量已达最大数量 | Int |
AsynchronousSearchInitializedRate | 过去 1 分钟内初始化的异步搜索数 | Int |
AsynchronousSearchRunningCurrent | 当前正在运行的异步搜索数 | Int |
AsynchronousSearchCompletionRate | 过去 1 分钟内成功完成的异步搜索数 | Int |
AsynchronousSearchFailureRate | 最后一分钟内完成和失败的异步搜索数 | Int |
AsynchronousSearchPersistRate | 过去 1 分钟内持续存在的异步搜索数 | Int |
AsynchronousSearchRejected | 自节点启动时间以来拒绝的异步搜索总数 | Int |
AsynchronousSearchCancelled | 自节点启动时间以来取消的异步搜索总数 | Int |
SQLRequestCount | 对 _sql API 的请求数 | Int |
SQLUnhealthy | 值为 1 表示 SQL 插件将返回 5xx 响应代码或将无效的查询 DSL 传递到 OpenSearch 来响应特定请求。其他请求将继续成功。值为 0 表示最近未失败。如果您看到持续值为 1,请排查您的客户端对插件发出的请求的问题。 | Int |
SQLDefaultCursorRequestCount | 类似于 SQLRequestCount,但仅统计分页请求 | Int |
SQLFailedRequestCountByCusErr | 由于客户端问题而失败的对 _sql API 的请求数 | Int |
SQLFailedRequestCountBySysErr | 由于服务器问题或功能限制而失败的对 _sql API 的请求数 | Int |
场景视图
登录观测云控制台,点击「场景」 -「新建仪表板」,输入 "opensearch", 选择 "AWS OpenSearch 监控视图",点击 "确定" 即可添加视图。

监控器(告警)
观测云内置了监控器模板,可以选择从模版创建监控器,并开启适合业务的监控器以及时通知相关成员关注问题,触发条件、频率等信息可以依据实际业务进行调整。
登录观测云控制台,点击「监控」 -「新建监控器」,输入 "aws opensearch", 选择对应的监控器,点击 "确定" 即可添加。

搜索线程池已拒绝任务数突增
ThreadpoolSearchRejected_Average:表示在一定时间内,OpenSearch 集群中搜索线程池中被拒绝的任务数量的平均值。该指标反映了搜索请求由于线程池队列已满而被拒绝的情况。最近 15 分钟被拒绝数大于等于 100 时,发出严重告警。

主分片和副分片分配异常
ClusterStatus_red_Average:表示 OpenSearch 集群处于红色状态的平均时间占比,红色状态意味着集群中至少有一个主分片及其副本未分配给任何节点,值为 0 表示集群运行正常,值大于 0 表示集群有部分时间处于红色状态。当集群完全处于红色状态时发出严重告警。

节点 CPU 使用率过高
CPUUtilization_Average 用于衡量 OpenSearch 集群中节点的平均 CPU 使用率,当节点的 CPU 使用率大于等于 90% 时,发出严重告警,当 CPU 使用率大于等于 80% 小于 90% 时,发出重要告警。

总结
通过将 AWS OpenSearch 的原生监控数据集成到观测云平台,用户可以实现对 OpenSearch 的实时性能监控、资源使用分析以及安全事件的可视化。观测云的高级分析和可视化功能,如实时仪表板、智能告警和根因分析,能够帮助用户快速定位问题、优化成本,并确保数据的高可用性和安全性。这种结合不仅提升了监控的效率和准确性,还通过集中管理的方式简化了运维流程,使用户能够更好地应对复杂的云环境挑战。