按集群指标监控器
“按集群指标监控器”是一种告警监控器,它收集并分析单个集群的指标,提供对集群性能和运行状况的洞察。您可以设置告警来监控特定条件,例如当
- 集群健康状况达到黄色或红色状态。
- 集群级指标(例如,CPU 使用率和 JVM 内存使用率)达到指定阈值。
- 节点级指标(例如,可用磁盘空间、JVM 内存使用率和 CPU 使用率)达到指定阈值。
- 存储的文档总数达到指定阈值。
创建集群指标监控器
要创建集群指标监控器,请按照以下步骤操作
- 选择 告警 > 监控器 > 创建监控器。
- 选择 按集群指标监控器 选项。
- 在“查询”部分,从下拉列表中选择 请求类型。
- (可选)如果您想过滤 API 响应以仅使用某些路径参数,请在 查询参数 下输入这些参数。大多数可用于监控集群状态的 API 都支持其文档中描述的路径参数(例如,逗号分隔的索引名称列表)。
- 在触发器部分,指示哪些条件将触发告警。触发条件会自动填充一个
painless ctx
变量。例如,监控集群统计信息的集群监控器使用触发条件ctx.results[0].indices.count <= 0
,该条件根据查询返回的索引数量触发告警。为了更具体,可以添加 API 支持的任何其他 Painless 条件。要查看条件响应的示例,请选择 预览条件响应。 - 在“操作”部分,指明当触发条件满足时您希望如何通知用户。
- 选择 创建。您的新监控器将出现在 监控器 列表中。
以下示例显示了集群指标监控器的配置。
支持的 API
触发条件使用以下 API 端点的响应。大多数可用于监控集群状态的 API 都支持路径参数(例如,逗号分隔的索引名称列表)。它们不支持查询参数。
- _cluster/health
- _cluster/stats
- _cluster/settings
- _nodes/stats
- _cat/indices
- _cat/pending_tasks
- _cat/recovery
- _cat/shards
- _cat/snapshots
- _cat/tasks
限制 API 字段
如果您想隐藏 API 响应中的字段,并且不将其暴露给告警,请重新配置告警插件内的 supported_json_payloads.json 文件。该文件作为您希望在告警中使用的 API 字段的允许列表。默认情况下,所有 API 及其参数都可用于监控器和触发条件。
但是,您可以修改此文件,以便集群指标监控器只能为引用的 API 创建。此外,只有支持文件中引用的字段才能创建触发条件。此 supported_json_payloads.json
允许为 _cluster/stats
API 创建集群指标监控器,并为 indices.shards.total
和 indices.shards.index.shards.min
字段触发条件。
"/_cluster/stats": {
"indices": [
"shards.total",
"shards.index.shards.min"
]
}
Painless 触发器
Painless 脚本定义了集群指标监控器的触发器,类似于按查询或按桶监控器(使用提取查询定义选项定义)。Painless 脚本由至少一个语句和您希望运行的任何附加函数组成。
集群指标监控器最多支持 十个 触发器。
在以下示例中,监控器配置为针对两个集群 cluster-1
和 cluster-2
调用集群健康 API。当任一集群的 status
不是 green
时,触发条件将创建告警。
script
参数将 source
指向 Painless 脚本 for (cluster in ctx.results[0].keySet()) if (ctx.results[0][cluster].status != \"green\") return true
。有关更多 painless ctx
变量选项,请参阅触发器变量。
{
"name": "Cluster Health Monitor",
"type": "monitor",
"monitor_type": "query_level_monitor",
"enabled": true,
"schedule": {
"period": {
"unit": "MINUTES",
"interval": 1
}
},
"inputs": [
{
"uri": {
"api_type": "CLUSTER_HEALTH",
"path": "_cluster/health/",
"path_params": "",
"url": "https://:9200/_cluster/health/",
"clusters": ["cluster-1", "cluster-2"]
}
}
],
"triggers": [
{
"query_level_trigger": {
"id": "Tf_L_nwBti6R6Bm-18qC",
"name": "Yellow status trigger",
"severity": "1",
"condition": {
"script": {
"source": "for (cluster in ctx.results[0].keySet()) if (ctx.results[0][cluster].status != \"green\") return true",
"lang": "painless"
}
},
"actions": []
}
}
]
}
Dashboards 界面支持选择要监控的集群和所需的 API。界面视图如下图所示。
通过 Dashboards UI 创建跨集群监控器需要以下权限:cluster:admin/opensearch/alerting/remote/indexes/get
、indices:admin/resolve/index
、cluster:monitor/health
和 indices:admin/mappings/get
。
限制
按集群指标监控器具有以下限制
- OpenSearch 集群必须处于可以监控索引条件并对索引执行操作的状态。
- 从用户移除资源权限不会阻止该用户针对该资源预先存在的监控器继续执行。
- 拥有创建监控器权限的用户不会被阻止为其没有权限的资源创建监控器;但是,这些监控器将不会运行。