按集群指标监控器

_按集群指标监控器_是一种告警监控器类型,用于收集和分析单个集群的指标,提供对集群性能和健康状况的洞察。您可以设置告警来监控某些条件,例如当:

  • 集群健康状况达到黄色或红色状态时。

  • 集群级指标(例如,CPU 使用率和 JVM 内存使用率)达到指定阈值时。

  • 节点级指标(例如,可用磁盘空间、JVM 内存使用率和 CPU 使用率)达到指定阈值时。

  • 存储的文档总数达到指定阈值时。

创建集群指标监控器

要创建集群指标监控器,请按照以下步骤操作:

  1. 选择 Alerting > Monitors > Create monitor

  2. 选择 Per cluster metrics monitor 选项。

  3. 在 Query 部分,从下拉列表中选择 Request type

  4. (可选)如果您想筛选 API 响应以仅使用某些路径参数,请在 Query parameters 下输入这些参数。大多数可用于监控集群状态的 API 都支持路径参数,如其文档所述(例如,逗号分隔的索引名称列表)。

  5. Triggers 部分,指定哪些条件将触发告警。触发条件会自动填充一个 painless ctx 变量。例如,监控集群统计信息的集群监控器使用触发条件 ctx.results[0].indices.count <= 0,该条件基于查询返回的索引数量触发告警。为了更具体,可以添加 API 支持的任何其他 Painless 条件。要查看条件响应的示例,请选择 Preview condition response

  6. 在 Actions 部分,指定当满足触发条件时,您希望如何通知用户。

  7. 选择 Create。您的新监控器将出现在 Monitors 列表中。

以下示例显示了集群指标监控器的配置。

../../../_images/cluster-metrics.png

支持的 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 响应中的某些字段,不将它们暴露用于告警,请重新配置 Alerting 插件内的 supported_json_payloads.json(该文件内容可联系售前工作人员获取) 文件。该文件作为您想在告警中使用的 API 字段的允许列表。默认情况下,所有 API 及其参数都可用于监控器和触发条件。

但是,您可以修改该文件,使得集群指标监控器只能为引用的 API 创建。此外,只有支持文件中引用的字段才能创建触发条件。这个 supported_json_payloads.json 允许为 _cluster/stats API 创建集群指标监控器,并为 indices.shards.totalindices.shards.index.shards.min 字段创建触发条件。

"/_cluster/stats": {
  "indices": [
    "shards.total",
    "shards.index.shards.min"
  ]
}

Painless 触发器

Painless 脚本为集群指标监控器定义触发器,类似于使用提取查询定义选项定义的按查询或按桶监控器。Painless 脚本由至少一个语句和您希望运行的任何其他函数组成。

集群指标监控器最多支持十个触发器。

在以下示例中,监控器配置为调用两个集群 cluster-1cluster-2 的 Cluster Health 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": "http://localhost:10200/_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": []
      }
    }
  ]
}

仪表板界面支持选择要监控的集群和所需的 API。界面的视图如下图所示。

要通过仪表板 UI 创建跨集群监控器,需要以下权限cluster:admin/opensearch/alerting/remote/indexes/getindices:admin/resolve/indexcluster:monitor/healthindices:admin/mappings/get

../../../_images/cross-cluster-cluster-metrics-monitors.png

限制

按集群指标监控器有以下限制:

  • UDB-SX 集群必须处于可以监控索引条件并对索引执行操作的状态。

  • 从用户移除资源权限不会阻止该用户预先存在的针对该资源的监控器执行。

  • 具有创建监控器权限的用户不会被阻止为他们没有权限的资源创建监控器;但是,这些监控器将不会运行。