跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Enterprise Storage 7 文档 / 操作和管理指南 / 集群操作 / 监控和告警
适用范围 SUSE Enterprise Storage 7

16 监控和告警

在 SUSE Enterprise Storage 7 中,cephadm 会部署一个监控和告警堆栈。用户需要在 YAML 配置文件中定义要使用 cephadm 部署的服务(例如 Prometheus、告警管理器和 Grafana),也可以使用 CLI 来部署这些服务。当部署多个相同类型的服务时,会部署高可用性设置。但 Node Exporter 不适用于此规则。

使用 cephadm 可以部署以下监控服务:

  • Prometheus 是监控和警告工具箱。它会收集 Prometheus 导出程序提供的数据,并在达到预定义阈值时触发预配置的告警。

  • Alertmanager 用于处理 Prometheus 服务器发送的警告。它将负责删除重复信息、分组并将告警路由到正确的接收器。默认情况下,Ceph Dashboard 将自动配置为接收器。

  • Grafana 是虚拟化和警告软件。此监控堆栈不使用 Grafana 的告警功能。而是使用告警管理器进行告警。

  • Node Exporter 是 Prometheus 的导出程序,用于提供其所安装到的节点的相关数据。建议您在所有节点上安装 Node Exporter。

Prometheus Manager 模块提供有 Prometheus 导出程序,可从 ceph-mgr 中的收集点传递 Ceph 性能计数器。

Prometheus 配置(包括抓取目标(度量提供守护进程))由 cephadm 自动设置。cephadm 还会部署默认告警列表,例如 health error10% OSDs downpgs inactive

默认情况下,传入 Grafana 的流量会使用 TLS 加密。您可以提供自己的 TLS 证书,也可以使用自我签名证书。如果在部署 Grafana 之前未配置自定义证书,则将自动为 Grafana 创建和配置自我签名证书。

可使用以下命令配置 Grafana 的自定义证书:

cephuser@adm >  ceph config-key set mgr/cephadm/grafana_key -i $PWD/key.pem
cephuser@adm >  ceph config-key set mgr/cephadm/grafana_crt -i $PWD/certificate.pem

Alertmanager 处理 Prometheus 服务器发送的警告。它负责重复信息删除、分组,并将它们路由到正确的接收器。可以使用告警管理器消除告警,但也可以使用 Ceph Dashboard 管理静默功能。

建议您在所有节点上部署 Node Exporter。可以使用含有 node-exporter 服务类型的 monitoring.yaml 文件执行此操作。有关部署服务的详细信息,请参见第 5.4.3.8 节 “部署监控堆栈”

16.1 配置自定义或本地映像

提示
提示

本节说明如何更改部署或更新服务时使用的容器映像的配置。不包括部署或重新部署服务所需的命令。

部署监控堆栈的推荐方法是按第 5.4.3.8 节 “部署监控堆栈”中所述应用其规范。

要部署自定义或本地容器映像,需要在 cephadm 中设置映像。为此,您需要运行以下命令:

cephuser@adm > ceph config set mgr mgr/cephadm/OPTION_NAME VALUE

其中,OPTION_NAME 为以下任何名称:

  • container_image_prometheus

  • container_image_node_exporter

  • container_image_alertmanager

  • container_image_grafana

如果未设置任何选项或已删除该设置,则将使用以下映像作为 VALUE

  • registry.suse.com/caasp/v4.5/prometheus-server:2.18.0

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter:0.18.1

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager:0.16.2

  • registry.suse.com/ses/7/ceph/grafana:7.0.3

例如:

cephuser@adm > ceph config set mgr mgr/cephadm/container_image_prometheus prom/prometheus:v1.4.1
注意
注意

设置自定义映像将覆盖默认值(但并不会重写)。当有可用更新时,默认值将发生更改。设置自定义映像后,您将无法自动更新设置了自定义映像的组件。您需要手动更新配置(映像名称和标记)才能安装更新。

如果您选择遵循这些建议,则可以重置之前设置的自定义映像。之后,将再次使用默认值。使用 ceph config rm 重置配置选项:

cephuser@adm > ceph config rm mgr mgr/cephadm/OPTION_NAME

例如:

cephuser@adm > ceph config rm mgr mgr/cephadm/container_image_prometheus

16.2 更新监控服务

第 16.1 节 “配置自定义或本地映像”中所述,cephadm 随附有推荐且经过测试的容器映像的 URL,默认会使用这些 URL。

更新 Ceph 包后,可能会随附这些 URL 的新版本。这只会更新容器映像的提取位置,而不会更新任何服务。

更新新容器映像的 URL(可以按第 16.1 节 “配置自定义或本地映像”中所述执行手动更新,也可以通过更新 Ceph 包进行自动更新)后,便可以更新监控服务。

要执行此操作,请使用 ceph orch redeploy,如下所示:

cephuser@adm > ceph orch redeploy node-exporter
cephuser@adm > ceph orch redeploy prometheus
cephuser@adm > ceph orch redeploy alertmanager
cephuser@adm > ceph orch redeploy grafana

当前没有可更新所有监控服务的单一命令。这些服务的更新顺序并不重要。

注意
注意

如果您使用自定义容器映像,则在更新 Ceph 包时为监控服务指定的 URL 不会自动更改。如果您已指定自定义容器映像,则需要手动指定新容器映像的 URL。使用本地容器注册表时,可能会出现这种情况。

您可以在第 16.1 节 “配置自定义或本地映像”一节中找到要使用的推荐容器映像的 URL。

16.3 禁用监控

要禁用监控堆栈,请运行以下命令:

cephuser@adm > ceph orch rm grafana
cephuser@adm > ceph orch rm prometheus --force   # this will delete metrics data collected so far
cephuser@adm > ceph orch rm node-exporter
cephuser@adm > ceph orch rm alertmanager
cephuser@adm > ceph mgr module disable prometheus

16.4 配置 Grafana

Ceph Dashboard 后端要求 Grafana URL 能够在前端均衡加载 Grafana 仪表盘之前确认其是否存在。由于 Grafana 在 Ceph Dashboard 中的实施方式性质,意味着需要两个有效连接才能在 Ceph Dashboard 中看到 Grafana 图形:

  • 后端(Ceph MGR 模块)需要确认请求的图形是否存在。如果此请求成功,便会告知前端它可以安全地访问 Grafana。

  • 然后,前端会使用 iframe 直接从用户的浏览器请求 Grafana 图形。可以直接访问 Grafana 实例,而无需再经由 Ceph Dashboard。

现在,您的环境可能会使用户的浏览器难以直接访问 Ceph Dashboard 中配置的 URL。为解决此问题,可以配置一个单独的 URL,专用于告知前端(用户的浏览器)应该使用哪个 URL 来访问 Grafana。

要更改返回给前端的 URL,请发出以下命令:

cephuser@adm > ceph dashboard set-grafana-frontend-api-url GRAFANA-SERVER-URL

如果没有为该选项设置任何值,它将回退到 GRAFANA_API_URL 选项的值,该选项值自动设置并由 cephadm 定期更新。如果设置了值,它将指示浏览器使用此 URL 来访问 Grafana。

16.5 配置 Prometheus Manager 模块

Prometheus Manager 模块是一个 Ceph 内部模块,它扩展了 Ceph 的功能。该模块会从 Ceph 读取有关其状态和健康状况的(元)数据,并以可使用的格式向 Prometheus 提供(抓取的)数据。

注意
注意

需要重启动 Prometheus Manager 模块才能应用配置更改。

16.5.1 配置网络接口

默认情况下,Prometheus Manager 模块接受主机上所有 IPv4 和 IPv6 地址的端口 9283 上的 HTTP 请求。端口和侦听地址都可使用 ceph config-key set 进行配置,并使用键 mgr/prometheus/server_addrmgr/prometheus/server_port。此端口已在 Prometheus 的注册表中注册。

要更新 server_addr,请执行以下命令:

cephuser@adm > ceph config set mgr mgr/prometheus/server_addr 0.0.0.0

要更新 server_port,请执行以下命令:

cephuser@adm > ceph config set mgr mgr/prometheus/server_port 9283

16.5.2 配置 scrape_interval

Prometheus Manager 模块默认配置了15 秒的抓取间隔。我们建议使用的抓取间隔不少于 10 秒。要在 Prometheus 模块中设置其他抓取间隔,请将 scrape_interval 设置为所需值:

重要
重要

要想正常运作而不会导致任何问题,此模块的 scrape_interval 应始终按照 Prometheus 抓取间隔进行设置。

cephuser@adm > ceph config set mgr mgr/prometheus/scrape_interval 15

16.5.3 配置缓存

在大型集群(超过 1000 个 OSD)上,提取度量的时间可能会变得非常重要。如果没有缓存,Prometheus Manager 模块可能会使管理器过载,并导致 Ceph Manager 实例无响应或崩溃。因此,系统默认会启用缓存,并且不能禁用缓存,但这意味着缓存可能会过时。当从 Ceph 提取度量的时间超过所配置的 scrape_interval 时,缓存将被视为过时。

如果发生此情况,系统将记录一条警报,并且模块将:

  • 以 503 HTTP 状态码(服务不可用)响应。

  • 返回缓存的内容,即使该内容可能已过时。

可使用 ceph config set 命令配置此行为。

要告知模块以可能过时的数据进行响应,请将其设置为 return

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy return

要告知模块以 service unavailable 进行响应,请将其设置为 fail

cephuser@adm > ceph config set mgr mgr/prometheus/stale_cache_strategy fail

16.5.4 启用 RBD 映像监控

Prometheus Manager 模块可以通过启用动态 OSD 性能计数器来选择性地收集 RBD 每个映像的 IO 统计数据。如此将为在 mgr/prometheus/rbd_stats_pools 配置参数中指定的存储池中的所有映像收集统计数据。

参数是以逗号或空格分隔的 pool[/namespace] 条目列表。如果未指定名称空间,则将收集存储池中所有名称空间的统计数据。

例如:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools "pool1,pool2,poolN"

该模块会扫描指定的存储池和名称空间,列出所有可用映像,并定期刷新该列表。此间隔可通过 mgr/prometheus/rbd_stats_pools_refresh_interval 参数进行配置(以秒为单位),默认值为 300 秒(5 分钟)。

例如,如果您将同步间隔更改为 10 分钟:

cephuser@adm > ceph config set mgr mgr/prometheus/rbd_stats_pools_refresh_interval 600

16.6 Prometheus 安全模型

Prometheus 的安全模型假设不受信任的用户有权访问 Prometheus HTTP 端点和日志。不受信任的用户有权访问数据库中所包含的 Prometheus 收集的所有(元)数据,以及各种操作和调试信息。

不过,Prometheus 的 HTTP API 仅限只读操作。无法使用 API 更改配置,并且不会公开秘密密钥。此外,Prometheus 还有一些内置的措施可用于缓解拒绝服务攻击的影响。

16.7 Prometheus 告警管理器 SNMP Webhook

如果您想通过 SNMP 陷阱接收有关 Prometheus 告警的通知,可以通过 cephadm 安装 Prometheus 告警管理器 SNMP Webhook。为此,您需要使用以下内容创建服务和归置规范文件:

注意
注意

有关服务和归置文件的详细信息,请参见第 5.4.2 节 “服务和归置规范”

service_type: container
service_id: prometheus-webhook-snmp
placement:
    ADD_PLACEMENT_HERE
image: registry.suse.com/ses/7/prometheus-webhook-snmp:latest
args:
    - "--publish 9099:9099"
envs:
    - ARGS="--debug --snmp-host=ADD_HOST_GATEWAY_HERE"
    - RUN_ARGS="--metrics"
EOF

使用此服务规范可让服务使用其默认设置运行。

运行该服务时,您需要使用命令行自变量 --publish HOST_PORT:CONTAINER_PORT 来发布 Prometheus 接收器正在侦听的端口,因为容器不会自动公开该端口。可通过在规范中添加下面几行来完成此操作:

args:
    - "--publish 9099:9099"

或者,使用命令行自变量 --network=host 将容器连接到主机网络。

args:
    - "--network=host"

如果未在与容器相同的主机上安装 SNMP 陷阱接收器,则还必须指定 SNMP 主机的 FQDN。使用容器的网络网关可以接收容器/主机外部的 SNMP 陷阱:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"

16.7.1 配置 prometheus-webhook-snmp 服务

可以通过环境变量或使用配置文件来配置容器。

对于环境变量,请使用 ARGS 设置全局选项,并使用 RUN_ARGS 设置 run 命令选项。您需要如下所示调整服务规范:

envs:
    - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"
    - RUN_ARGS="--metrics --port=9101"

要使用配置文件,必须如下所示调整服务规范:

files:
    etc/prometheus-webhook-snmp.conf:
        - "debug: True"
        - "snmp_host: ADD_HOST_GATEWAY_HERE"
        - "metrics: True"
volume_mounts:
    etc/prometheus-webhook-snmp.conf: /etc/prometheus-webhook-snmp.conf

要进行部署,请运行以下命令:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE

有关更多信息,请参见第 5.4.3 节 “部署 Ceph 服务”

16.7.2 为 SNMP 配置 Prometheus 告警管理器

最后,需要为 SNMP 陷阱配置专用的 Prometheus 告警管理器。如果尚未部署此服务,请创建服务规范文件。您需要使用安装了 Prometheus 告警管理器 SNMP Webhook 的主机的 IP 地址或 FQDN 来替换 IP_OR_FQDN。例如:

注意
注意

如果您已部署此服务,请确保为 SNMP 正确设置告警管理器,使用以下设置重新部署。

  service_type: alertmanager
  placement:
    hosts:
    - HOSTNAME
  webhook_configs:
    - 'http://IP_OR_FQDN:9099/'

使用以下命令应用服务规范:

cephuser@adm > ceph orch apply -i SERVICE_SPEC_FILE