跳到主要内容
版本: 最新版本-3.5

使用 Prometheus 和 Grafana 进行监控和告警

StarRocks 通过使用 Prometheus 和 Grafana 提供监控和告警解决方案。这允许您可视化集群的运行状况,从而方便监控和故障排除。

概述

StarRocks 提供与 Prometheus 兼容的信息收集接口。 Prometheus 可以通过连接 BE 和 FE 节点的 HTTP 端口来检索 StarRocks 的指标信息,并将信息存储在自己的时间序列数据库中。 然后,Grafana 可以使用 Prometheus 作为数据源来可视化指标信息。 通过使用 StarRocks 提供的仪表盘模板,您可以轻松监控 StarRocks 集群,并使用 Grafana 为其设置告警。

MA-1

请按照以下步骤将 StarRocks 集群与 Prometheus 和 Grafana 集成

  1. 安装必要的组件 - Prometheus 和 Grafana。
  2. 了解 StarRocks 的核心监控指标。
  3. 设置告警渠道和告警规则。

步骤 1:安装监控组件

Prometheus 和 Grafana 的默认端口与 StarRocks 的端口不冲突。 但是,建议将它们部署在与 StarRocks 集群不同的服务器上以进行生产。 这降低了资源冲突的风险,并避免了由于服务器异常关闭而导致的潜在告警失败。

此外,请注意 Prometheus 和 Grafana 无法监控其自身服务的可用性。 因此,在生产环境中,建议使用 Supervisor 为它们设置心跳服务。

以下教程使用 root OS 用户在监控节点 (IP: 192.168.110.23) 上部署监控组件。 它们监控以下 StarRocks 集群(使用默认端口)。 根据本教程为自己的 StarRocks 集群设置监控服务时,只需替换 IP 地址即可。

主机IP操作系统用户服务
node01192.168.110.1011 FE + 1 BE
node02192.168.110.1021 FE + 1 BE
node03192.168.110.1031 FE + 1 BE

注意

Prometheus 和 Grafana 只能监控 FE、BE 和 CN 节点,不能监控 Broker 节点。

1.1 部署 Prometheus

1.1.1 下载 Prometheus

对于 StarRocks,您只需要下载 Prometheus 服务器的安装包。 将软件包下载到监控节点。

单击此处下载 Prometheus.

以 LTS 版本 v2.45.0 为例,单击软件包下载。

MA-2

或者,您可以使用 wget 命令下载它

# The following example downloads the LTS version v2.45.0.
# You can download other versions by replacing the version number in the command.
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz

下载完成后,将安装包上传或复制到监控节点上的目录 /opt

1.1.2 安装 Prometheus

  1. 导航到 /opt 并解压缩 Prometheus 安装包。

    cd /opt
    tar xvf prometheus-2.45.0.linux-amd64.tar.gz
  2. 为了便于管理,请将解压后的目录重命名为 prometheus

    mv prometheus-2.45.0.linux-amd64 prometheus
  3. 为 Prometheus 创建数据存储路径。

    mkdir prometheus/data
  4. 为了便于管理,您可以为 Prometheus 创建一个系统服务启动文件。

    vim /etc/systemd/system/prometheus.service

    将以下内容添加到文件中

    [Unit]
    Description=Prometheus service
    After=network.target

    [Service]
    User=root
    Type=simple
    ExecReload=/bin/sh -c "/bin/kill -1 `/usr/bin/pgrep prometheus`"
    ExecStop=/bin/sh -c "/bin/kill -9 `/usr/bin/pgrep prometheus`"
    ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data --storage.tsdb.retention.time=30d --storage.tsdb.retention.size=30GB

    [Install]
    WantedBy=multi-user.target

    然后,保存并退出编辑器。

    注意

    如果您在不同的路径下部署 Prometheus,请确保同步上述文件中 ExecStart 命令中的路径。 此外,该文件将 Prometheus 数据存储的过期条件配置为“30 天或更长时间”或“大于 30 GB”。 您可以根据需要修改此设置。

  5. 修改 Prometheus 配置文件 prometheus/prometheus.yml。 该文件对内容格式有严格要求。 修改时请特别注意空格和缩进。

    vim prometheus/prometheus.yml

    将以下内容添加到文件中

    global:
    scrape_interval: 15s # Set the global scrape interval to 15s. The default is 1 min.
    evaluation_interval: 15s # Set the global rule evaluation interval to 15s. The default is 1 min.
    scrape_configs:
    - job_name: 'StarRocks_Cluster01' # A cluster being monitored corresponds to a job. You can customize the StarRocks cluster name here.
    metrics_path: '/metrics' # Specify the Restful API for retrieving monitoring metrics.
    static_configs:
    # The following configuration specifies an FE group, which includes 3 FE nodes.
    # Here, you need to fill in the IP and HTTP ports corresponding to each FE.
    # If you modified the HTTP ports during cluster deployment, make sure to adjust them accordingly.
    - targets: ['192.168.110.101:8030','192.168.110.102:8030','192.168.110.103:8030']
    labels:
    group: fe
    # The following configuration specifies a BE group, which includes 3 BE nodes.
    # Here, you need to fill in the IP and HTTP ports corresponding to each BE.
    # If you modified the HTTP ports during cluster deployment, make sure to adjust them accordingly.
    - targets: ['192.168.110.101:8040','192.168.110.102:8040','192.168.110.103:8040']
    labels:
    group: be

    修改配置文件后,可以使用 promtool 验证修改是否有效。

    ./prometheus/promtool check config prometheus/prometheus.yml

    以下提示表明检查已通过。 然后您可以继续。

    SUCCESS: prometheus/prometheus.yml is valid prometheus config file syntax
  6. 启动 Prometheus。

    systemctl daemon-reload
    systemctl start prometheus.service
  7. 检查 Prometheus 的状态。

    systemctl status prometheus.service

    如果返回 Active: active (running),则表示 Prometheus 已成功启动。

    您也可以使用 netstat 检查默认 Prometheus 端口 (9090) 的状态。

    netstat -nltp | grep 9090
  8. 设置 Prometheus 在启动时启动。

    systemctl enable prometheus.service

其他命令:

  • 停止 Prometheus。

    systemctl stop prometheus.service
  • 重新启动 Prometheus。

    systemctl restart prometheus.service
  • 在运行时重新加载配置。

    systemctl reload prometheus.service
  • 禁用启动时启动。

    systemctl disable prometheus.service

1.1.3 访问 Prometheus

您可以通过浏览器访问 Prometheus Web UI,默认端口为 9090。 对于本教程中的监控节点,您需要访问 192.168.110.23:9090

在 Prometheus 主页上,导航到顶部菜单中的 Status --> Targets。 在这里,您可以看到在 prometheus.yml 文件中配置的每个组作业的所有受监控节点。 通常,所有节点的状态都应为 UP,表示服务通信正常。

MA-3

此时,Prometheus 已配置和设置。 有关更多详细信息,您可以参考 Prometheus 文档

1.2 部署 Grafana

1.2.1 下载 Grafana

单击此处下载 Grafana.

或者,您可以使用 wget 命令下载 Grafana RPM 安装包。

# The following example downloads the LTS version v10.0.3.
# You can download other versions by replacing the version number in the command.
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.3-1.x86_64.rpm

1.2.2 安装 Grafana

  1. 使用 yum 命令安装 Grafana。 此命令将自动安装 Grafana 所需的依赖项。

    yum -y install grafana-enterprise-10.0.3-1.x86_64.rpm
  2. 启动 Grafana。

    systemctl start grafana-server.service
  3. 检查 Grafana 的状态。

    systemctl status grafana-server.service

    如果返回 Active: active (running),则表示 Grafana 已成功启动。

    您也可以使用 netstat 检查默认 Grafana 端口 (3000) 的状态。

    netstat -nltp | grep 3000
  4. 设置 Grafana 在启动时启动。

    systemctl enable grafana-server.service

其他命令:

  • 停止 Grafana。

    systemctl stop grafana-server.service
  • 重新启动 Grafana。

    systemctl restart grafana-server.service
  • 禁用启动时启动。

    systemctl disable grafana-server.service

有关更多信息,请参阅 Grafana 文档

1.2.3 访问 Grafana

您可以通过浏览器访问 Grafana Web UI,默认端口为 3000。 对于本教程中的监控节点,您需要访问 192.168.110.23:3000。 登录所需的默认用户名和密码均设置为 admin。 首次登录时,Grafana 将提示您更改默认登录密码。 如果您现在想跳过此步骤,可以单击 Skip。 然后,您将被重定向到 Grafana Web UI 主页。

MA-4

1.2.4 配置数据源

单击左上角的菜单按钮,展开 Administration,然后单击 Data sources

MA-5

在出现的页面上,单击 Add data source,然后选择 Prometheus

MA-6

MA-7

要将 Grafana 与您的 Prometheus 服务集成,您需要修改以下配置

  • Name:数据源的名称。 您可以自定义数据源的名称。

    MA-8

  • Prometheus Server URL:Prometheus 服务器的 URL,在本教程中为 http://192.168.110.23:9090

    MA-9

配置完成后,单击 Save & Test 以保存和测试配置。 如果显示 Successfully queried the Prometheus API,则表示数据源可访问。

MA-10

1.2.5 配置仪表盘

  1. 根据您的 StarRocks 版本下载相应的仪表盘模板。

    注意

    需要通过 Grafana Web UI 上传模板文件。 因此,您需要将模板文件下载到用于访问 Grafana 的计算机,而不是监控节点本身。

  2. 配置仪表盘模板。

    单击左上角的菜单按钮,然后单击 Dashboards

    MA-11

    在出现的页面上,展开 New 按钮,然后单击 Import

    MA-12

    在新页面上,单击 Upload Dashboard JSON file 并上传您之前下载的模板文件。

    MA-13

    上传文件后,您可以重命名仪表盘。 默认情况下,它被命名为 StarRocks Overview。 然后,选择数据源,即您之前创建的数据源 (starrocks_monitor)。 然后,单击 Import

    MA-14

    导入完成后,您应该会看到显示的 StarRocks 仪表盘。

    MA-15

1.2.6 通过 Grafana 监控 StarRocks

登录到 Grafana Web UI,单击左上角的菜单按钮,然后单击 Dashboards

MA-16

在出现的页面上,从 General 目录中选择 StarRocks Overview

MA-17

进入 StarRocks 监控仪表盘后,您可以手动刷新右上角的页面,或设置自动刷新间隔以监控 StarRocks 集群状态。

MA-18

步骤 2:了解核心监控指标

为了满足开发、运维、DBA 等的需求,StarRocks 提供了广泛的监控指标。 本节仅介绍业务中常用的一些重要指标及其告警规则。 有关其他指标详细信息,请参阅 监控指标

2.1 FE 和 BE 状态的指标

指标描述告警规则注意
前端状态FE 节点状态。 活动节点的状态用 1 表示,而停机 (DEAD) 的节点将显示为 0所有 FE 节点的状态都应为活动状态,并且任何状态为 DEAD 的 FE 节点都应触发告警。任何 FE 或 BE 节点的故障都被认为是关键的,需要及时进行故障排除以确定故障原因。
后端状态BE 节点状态。 活动节点的状态用 1 表示,而停机 (DEAD) 的节点将显示为 0所有 BE 节点的状态都应为活动状态,并且任何状态为 DEAD 的 BE 节点都应触发告警。

2.2 查询失败的指标

指标描述告警规则注意
查询错误一分钟内的查询失败(包括超时)率。 其值计算为一分钟内失败查询的次数除以 60 秒。您可以根据业务的实际 QPS 配置此设置。 例如,0.05 可以用作初步设置。 您可以稍后根据需要进行调整。通常,查询失败率应保持较低水平。 将此阈值设置为 0.05 意味着每分钟最多允许 3 个失败查询。 如果您收到来自此项目的告警,则可以检查资源利用率或适当地配置查询超时。

2.3 外部操作失败的指标

指标描述告警规则注意
Schema 更改Schema 更改操作失败率。Schema 更改是一种低频操作。 您可以设置此项以在失败时立即发送告警。通常,Schema 更改操作不应失败。 如果为此项触发告警,您可以考虑增加 Schema 更改操作的内存限制,默认设置为 2GB。

2.4 内部操作失败的指标

指标描述告警规则注意
BE Compaction Score所有 BE 节点中的最高 Compaction Score,表示当前的 Compaction 压力。在典型的离线场景中,此值通常低于 100。 但是,当存在大量加载任务时,Compaction Score 可能会显着增加。 在大多数情况下,当此值超过 800 时,需要进行干预。通常,如果 Compaction Score 大于 1000,StarRocks 将返回错误“版本过多”。 在这种情况下,您可以考虑降低加载并发和频率。
Clonetablet clone 操作失败率。您可以设置此项以在失败时立即发送告警。如果为此项触发告警,您可以检查 BE 节点的状态、磁盘状态和网络状态。

2.5 服务可用性的指标

指标描述告警规则注意
Meta Log CountFE 节点上的 BDB 元数据日志条目数。建议配置此项,如果超过 100,000,则触发立即告警。默认情况下,当日志数超过 50,000 时,leader FE 节点会触发一个检查点,将日志刷新到磁盘。 如果此值大幅超过 50,000,通常表示检查点失败。 您可以检查 fe.conf 中 Xmx 堆内存配置是否合理。

2.6 系统负载的指标

指标描述告警规则注意
BE CPU IdleBE 节点的 CPU 空闲率。建议配置此项,如果空闲率连续 30 秒低于 10%,则触发告警。此项用于监控 CPU 资源瓶颈。 CPU 使用率可能会显着波动,设置较小的轮询间隔可能会导致误报。 因此,您需要根据实际业务情况调整此项。 如果您有多个批处理任务或大量查询,您可以考虑设置较低的阈值。
BE MemBE 节点的内存使用量。建议将此项配置为每个 BE 可用内存大小的 90%。此值等效于 Process Mem 的值,BE 的默认内存限制是服务器内存大小的 90%(由 be.conf 中的配置 mem_limit 控制)。 如果您在同一服务器上部署了其他服务,请务必调整此值以避免 OOM。 此项的告警阈值应设置为 BE 实际内存限制的 90%,以便您可以确认 BE 内存资源是否已达到瓶颈。
Disks Avail Capacity每个 BE 节点上本地磁盘的可用磁盘空间比率(百分比)。建议配置此项,如果该值小于 20%,则触发告警。建议根据您的业务需求为 StarRocks 保留足够的可用空间。
FE JVM Heap Stat集群中每个 FE 节点的 JVM 堆内存使用率百分比。建议配置此项,如果该值大于或等于 80%,则触发告警。如果为此项触发告警,建议增加 fe.conf 中的 Xmx 堆内存配置; 否则,可能会影响查询效率或导致 FE OOM 问题。

步骤 3:通过电子邮件配置告警

3.1 配置 SMTP 服务

Grafana 支持各种告警解决方案,例如电子邮件和 Webhook。 本教程以电子邮件为例。

要启用电子邮件告警,您首先需要在 Grafana 中配置 SMTP 信息,以便 Grafana 可以向您的邮箱发送电子邮件。 最常用的电子邮件提供商支持 SMTP 服务,您需要为您的电子邮件帐户启用 SMTP 服务并获取授权码。

完成这些步骤后,修改部署 Grafana 的节点上的 Grafana 配置文件。

vim /usr/share/grafana/conf/defaults.ini

示例

###################### SMTP / Emailing #####################
[smtp]
enabled = true
host = <smtp_server_address_and_port>
user = johndoe@gmail.com
# If the password contains # or ; you have to wrap it with triple quotes.Ex """#password;"""
password = ABCDEFGHIJKLMNOP # The authorization password obtained after enabling SMTP.
cert_file =
key_file =
skip_verify = true ## Verify SSL for SMTP server
from_address = johndoe@gmail.com ## Address used when sending out emails.
from_name = Grafana
ehlo_identity =
startTLS_policy =

[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html, emails/*.txt
content_types = text/html

您需要修改以下配置项

  • enabled:是否允许 Grafana 发送电子邮件告警。 将此项设置为 true
  • host:您的电子邮件的 SMTP 服务器地址和端口,以冒号 (:) 分隔。 示例:smtp.gmail.com:465
  • user:SMTP 用户名。
  • password:启用 SMTP 后获得的授权密码。
  • skip_verify:是否跳过 SMTP 服务器的 SSL 验证。 将此项设置为 true
  • from_address:用于发送告警电子邮件的电子邮件地址。

配置完成后,重新启动 Grafana。

systemctl daemon-reload
systemctl restart grafana-server.service

3.2 创建告警渠道

您需要在 Grafana 中创建一个告警渠道(联系点),以指定在触发告警时如何通知联系人。

  1. 登录到 Grafana Web UI,单击左上角的菜单按钮,展开 Alerting,然后选择 Contact Points。 在 Contact points 页面上,单击 Add contact point 以创建新的告警渠道。

    MA-19

  2. Name 字段中,自定义联系点的名称。 然后,在 Integration 下拉列表中,选择 Email

    MA-20

  3. Addresses 字段中,输入接收告警的联系人的电子邮件地址。 如果有多个电子邮件地址,请使用分号 (;)、逗号 (,) 或换行符分隔地址。

    页面上的配置可以保留其默认值,但以下两项除外

    • Single email:启用后,如果有多个联系人,告警将通过一封电子邮件发送给他们。 建议启用此项。
    • Disable resolved message:默认情况下,当导致告警的问题得到解决时,Grafana 会发送另一个通知,通知服务已恢复。 如果您不需要此恢复通知,则可以禁用此项。 不建议禁用此选项。
  4. 配置完成后,单击页面右上角的 Test 按钮。 在出现的提示中,单击 Sent test notification。 如果您的 SMTP 服务和地址配置正确,则目标电子邮件帐户应收到一封主题为“TestAlert Grafana”的测试电子邮件。 确认您可以成功收到测试告警电子邮件后,单击页面底部的 Save contact point 按钮以完成配置。

    MA-21

    MA-22

您可以通过“Add contact point integration”为每个联系点配置多种通知方法,此处不做详细介绍。 有关联系点的更多详细信息,您可以参考 Grafana 文档

对于后续演示,我们假设在此步骤中,您已使用不同的电子邮件地址创建了两个联系点“StarRocksDev”和“StarRocksOp”。

3.3 设置通知策略

Grafana 使用通知策略将联系点与告警规则相关联。 通知策略使用匹配标签来提供一种灵活的方式,将不同的告警路由到不同的联系人,从而允许在 O&M 期间进行告警分组。

  1. 登录到 Grafana Web UI,单击左上角的菜单按钮,展开 Alerting,然后选择 Notification policies

    MA-23

  2. Notification policies 页面上,单击 Default policy 右侧的更多 (...) 图标,然后单击 Edit 以修改默认策略。

    MA-24

    MA-25

    通知策略使用树状结构,默认策略表示通知的默认根策略。 当未设置其他策略时,所有告警规则将默认为匹配此策略。 然后,它将使用其中配置的默认联系点进行通知。

    1. Default contact point 字段中,选择您之前创建的联系点,例如“StarRocksOp”。

    2. Group by 是 Grafana Alerting 中的一个关键概念,它将具有相似特征的告警实例分组到一个漏斗中。 本教程不涉及分组,您可以使用默认设置。

      MA-26

    3. 展开 Timing options 字段,然后配置 Group waitGroup intervalRepeat interval

      • Group wait:在新告警创建新组后,等待发送初始通知的时间。 默认为 30 秒。
      • Group interval:现有组发送告警的间隔。 默认为 5 分钟,这意味着自上次发送告警以来,不会在 5 分钟之内向该组发送通知。 这意味着无论这些告警实例的告警规则间隔是否较低,都不会在自上次交付批量更新之后的 5 分钟(默认)之内发送通知。 默认为 5 分钟。
      • Repeat interval:成功发送告警后重新发送告警的等待时间。 现有组发送告警的间隔。 默认为 5 分钟,这意味着自上次发送告警以来,不会在 5 分钟之内向该组发送通知。

      您可以将参数配置为如下图所示,以便 Grafana 将按照以下规则发送告警:满足告警条件 后 0 秒(Group wait),Grafana 将发送第一封告警电子邮件。 之后,Grafana 将每 1 分钟重新发送告警(Group interval + Repeat interval)。

      MA-27

      注意

      前一段使用“满足告警条件”而不是“达到告警阈值”以避免误报。 建议将告警设置为在达到阈值后的一段时间内触发。

  3. 配置完成后,单击 Update default policy

  4. 如果您需要创建嵌套策略,请单击 Notification policies 页面上的 New nested policy

    嵌套策略使用标签来定义匹配规则。 嵌套策略中定义的标签可以用作稍后配置告警规则时的匹配条件。 以下示例将标签配置为 Group=Development_team

    MA-28

    Contact point 字段中,选择“StarRocksDev”。 这样,当配置标签为 Group=Development_team 的告警规则时,“StarRocksDev”设置为接收告警。

    您可以让嵌套策略继承父策略的时序选项。 配置完成后,单击 Save policy 以保存策略。

    MA-29

如果您对通知策略的详细信息感兴趣,或者您的业务有更复杂的告警场景,您可以参考 Grafana 文档 以获取更多信息。

3.4 定义告警规则

设置通知策略后,您还需要为 StarRocks 定义告警规则。

登录到 Grafana Web UI,搜索并导航到先前配置的 StarRocks Overview 仪表盘。

MA-30

MA-31

3.4.1 FE 和 BE 状态告警规则

对于 StarRocks 集群,所有 FE 和 BE 节点的状态必须为活动状态。 任何状态为 DEAD 的节点都应触发告警。

以下示例使用 StarRocks Overview 下的 Frontends Status 和 Backends Status 指标来监控 FE 和 BE 状态。 由于您可以在 Prometheus 中配置多个 StarRocks 集群,请注意 Frontends Status 和 Backends Status 指标适用于您已注册的所有集群。

配置 FE 的告警规则

请按照以下步骤配置 Frontends Status 的告警

  1. 单击 Frontends Status 监控项目右侧的更多 (...) 图标,然后单击 Edit

    MA-32

  2. 在新页面上,选择 Alert,然后单击此面板中的 Create alert rule 进入规则创建页面。

    MA-33

  3. Rule name 字段中设置规则名称。 默认值为监控指标的标题。 如果您有多个集群,则可以添加集群名称作为前缀以进行区分,例如“[PROD]Frontends Status”。

    MA-34

  4. 按如下方式配置告警规则。

    1. 选择 Grafana managed alert
    2. 对于第 B 部分,将规则修改为 (up{group="fe"})
    3. 单击第 A 部分右侧的删除图标以删除第 A 部分。
    4. 对于第 C 部分,将 Input 字段修改为 B
    5. 对于第 D 部分,将条件修改为 IS BELOW 1

    完成这些设置后,页面将如下图所示

    MA-35

    单击以查看详细说明

    在 Grafana 中配置告警规则通常涉及三个步骤

    1. 通过 PromQL 查询从 Prometheus 检索指标值。PromQL 是 Prometheus 开发的一种数据查询 DSL 语言,也用于 Dashboard 的 JSON 模板中。每个监控项的 expr 属性对应于各自的 PromQL。您可以点击规则设置页面上的运行查询来查看查询结果。
    2. 应用函数和模式来处理上述查询的结果数据。通常,您需要使用 Last 函数来检索最新值,并使用 Strict 模式来确保如果返回值是非数字数据,则可以显示为 NaN
    3. 为处理后的查询结果设置规则。以 FE 为例,如果 FE 节点状态为 alive,则输出结果为 1。如果 FE 节点宕机,则结果为 0。因此,您可以将规则设置为 IS BELOW 1,这意味着当发生这种情况时将触发警报。
  5. 设置告警评估规则。

    根据 Grafana 文档,您需要配置评估告警规则的频率以及其状态变化的频率。简单来说,这涉及配置“多久检查一次告警规则”以及“检测到异常状态后,异常状态必须持续多长时间才触发告警(以避免由瞬时峰值引起的误报)”。每个评估组包含一个独立的评估间隔,以确定检查告警规则的频率。您可以专门为 StarRocks 生产集群创建一个名为 PROD 的新文件夹,并在其中创建一个新的评估组 01。然后,将此组配置为每 10 秒检查一次,如果异常持续 30 秒则触发警报。

    MA-36

    注意

    前面提到的告警通道配置部分中的“禁用已解决消息”选项,它控制集群服务恢复时发送电子邮件的时间,也受到上述“Evaluate every”参数的影响。换句话说,当 Grafana 执行新的检查并检测到服务已恢复时,它会发送电子邮件通知联系人。

  6. 添加告警注解。

    为您的告警规则添加详细信息部分中,点击添加注解以配置告警电子邮件的内容。请注意不要修改 Dashboard UIDPanel ID 字段。

    MA-37

    选择下拉列表中,选择描述,并添加告警电子邮件的描述性内容,例如“您的 StarRocks 生产集群中的 FE 节点失败,请检查!”

  7. 匹配通知策略。

    指定告警规则的通知策略。默认情况下,所有告警规则都匹配 Default 策略。当满足告警条件时,Grafana 将使用 Default 策略中的“StarRocksOp”联系点将告警消息发送到配置的电子邮件组。

    MA-38

    如果要使用嵌套策略,请将 Label 字段设置为相应的嵌套策略,例如 Group=Development_team

    示例

    MA-39

    当满足告警条件时,电子邮件将发送到“StarRocksDev”而不是 Default 策略中的“StarRocksOp”。

  8. 完成所有配置后,点击保存规则并退出

    MA-40

测试告警触发

您可以手动停止一个 FE 节点来测试告警。此时,Frontends Status 右侧的心形符号将从绿色变为黄色,然后变为红色。

绿色:表示在上次定期检查期间,指标项的每个实例的状态都是正常的,并且没有触发告警。绿色状态不能保证当前节点处于正常状态。节点服务异常后,状态变化可能会有延迟,但通常情况下,延迟不会以分钟为单位。

MA-41

黄色:表示在上次定期检查期间,发现指标项的某个实例异常,但异常状态持续时间尚未达到上面配置的“Duration”。此时,Grafana 不会发送告警,并将继续定期检查,直到异常状态持续时间达到配置的“Duration”。在此期间,如果状态恢复,符号将变回绿色。

MA-42

红色:当异常状态持续时间达到配置的“Duration”时,符号变为红色,Grafana 将发送电子邮件告警。该符号将保持红色,直到异常状态解决,届时它将变回绿色。

MA-43

手动暂停告警

假设异常需要很长时间才能解决,或者由于异常以外的某些原因不断触发告警。您可以暂时暂停评估告警规则,以防止 Grafana 持续发送告警电子邮件。

导航到 Dashboard 上与指标项对应的 Alert 选项卡,然后点击编辑图标

MA-44

告警评估行为部分中,将暂停评估开关切换到 ON 位置。

MA-45

注意

暂停评估后,您将收到一封电子邮件,通知您服务已恢复。

配置 BE 的告警规则

您可以按照上述流程配置 BE 的告警规则。

编辑指标项 Backends Status 的配置

  1. 设置告警规则名称部分中,将名称配置为“[PROD]Backends Status”。
  2. 设置查询和告警条件部分中,将 PromSQL 设置为 (up{group="be"}),并对其他项目使用与 FE 告警规则中相同的设置。
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“您的 StarRocks 生产集群中的 BE 节点失败,请检查!BE 故障的堆栈信息将打印在 BE 日志文件 be.out 中。您可以根据日志识别原因”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。

3.4.2 查询告警规则

查询失败的指标项是 Query Statistic 下的 Query Error

按如下方式配置指标项“Query Error”的告警规则

  1. 设置告警规则名称部分中,将名称配置为“[PROD] Query Error”。
  2. 设置查询和告警条件部分中,移除 B 部分。将 A 部分中的 Input 设置为 C。在 C 部分中,使用 PromQL 的默认值,即 rate(starrocks_fe_query_err{job="StarRocks_Cluster01"}[1m]),表示每分钟失败的查询数除以 60 秒。这包括失败的查询和超过超时限制的查询。然后,在 D 部分中,将规则配置为 A IS ABOVE 0.05
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“查询失败率高,请检查资源使用情况或合理配置查询超时。如果查询因超时而失败,您可以通过设置系统变量 query_timeout 来调整查询超时”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。

3.4.3 用户操作失败告警规则

此项目监控 Schema Change 操作失败的速率,对应于 BE tasks 下的指标项 Schema Change。它应该配置为在大于 0 时发出警报。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] Schema Change”。
  2. 设置查询和告警条件部分中,移除 A 部分。将 C 部分中的 Input 设置为 B。在 B 部分中,使用 PromQL 的默认值,即 irate(starrocks_be_engine_requests_total{job="StarRocks_Cluster01", type="create_rollup", status="failed"}[1m]),表示每分钟失败的 Schema Change 任务数除以 60 秒。然后,在 D 部分中,将规则配置为 C IS ABOVE 0
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到失败的 Schema Change 任务,请及时检查。您可以通过调整 BE 配置参数 memory_limitation_per_thread_for_schema_change 来增加 Schema Change 可用的内存限制,默认设置为 2GB”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。

3.4.4 StarRocks 操作失败告警规则

BE Compaction Score

此项目对应于 Cluster Overview 下的 BE Compaction Score,用于监控集群上的 Compaction 压力。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] BE Compaction Score”。
  2. 设置查询和告警条件部分中,将 C 部分中的规则配置为 B IS ABOVE 0。您可以对其他项目使用默认值。
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“Compaction 压力高。请检查是否存在高频率或高并发的加载任务,并降低加载频率。如果集群有足够的 CPU、内存和 I/O 资源,请考虑调整集群 Compaction 策略”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。
Clone

此项目对应于 BE tasks 中的 Clone,主要用于监控 StarRocks 内的副本平衡或副本修复操作,通常不应失败。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] Clone”。
  2. 设置查询和告警条件部分中,移除 A 部分。将 C 部分中的 Input 设置为 B。在 B 部分中,使用 PromQL 的默认值,即 irate(starrocks_be_engine_requests_total{job="StarRocks_Cluster01", type="clone", status="failed"}[1m]),表示每分钟失败的 Clone 任务数除以 60 秒。然后,在 D 部分中,将规则配置为 C IS ABOVE 0
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到 Clone 任务失败。请检查集群 BE 状态、磁盘状态和网络状态”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。

3.4.5 服务可用性告警规则

此项目监控 BDB 中的元数据日志计数,对应于 Cluster Overview 下的 Meta Log Count 监控项。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] Meta Log Count”。
  2. 设置查询和告警条件部分中,将 C 部分中的规则配置为 B IS ABOVE 100000。您可以对其他项目使用默认值。
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到 FE BDB 中的元数据计数远高于预期值,这可能表明 Checkpoint 操作失败。请检查 FE 配置文件 fe.conf 中的 Xmx 堆内存配置是否合理”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。

3.4.6 系统过载告警规则

BE CPU Idle

此项目监控 BE 节点上的 CPU 空闲率。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] BE CPU Idle”。
  2. 设置查询和告警条件部分中,将 C 部分中的规则配置为 B IS BELOW 10。您可以对其他项目使用默认值。
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到 BE CPU 负载持续较高。这将影响集群中的其他任务。请检查集群是否异常,或者是否存在 CPU 资源瓶颈”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。
BE Memory

此项目对应于 BE 下的 BE Mem,监控 BE 节点上的内存使用情况。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] BE Mem”。
  2. 设置查询和告警条件部分中,将 PromSQL 配置为 starrocks_be_process_mem_bytes{job="StarRocks_Cluster01"}/(<be_mem_limit>*1024*1024*1024),其中 <be_mem_limit> 需要替换为当前 BE 节点的可用内存限制,即服务器的内存大小乘以 BE 配置项 mem_limit 的值。示例:starrocks_be_process_mem_bytes{job="StarRocks_Cluster01"}/(49*1024*1024*1024)。然后,在 C 部分中,将规则配置为 B IS ABOVE 0.9
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到 BE 内存使用率持续较高。为防止查询失败,请考虑扩大内存大小或添加 BE 节点”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。
Disks Avail Capacity

此项目对应于 BE 下的 Disk Usage,监控 BE 存储路径所在目录中的剩余空间比率。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] Disks Avail Capacity”。
  2. 设置查询和告警条件部分中,将 C 部分中的规则配置为 B IS BELOW 0.2。您可以对其他项目使用默认值。
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到 BE 磁盘可用空间低于 20%,请释放磁盘空间或扩展磁盘”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。
FE JVM Heap Stat

此项目对应于 Overview 下的 Cluster FE JVM Heap Stat,监控 FE 的 JVM 内存使用量与 FE 堆内存限制的比例。

  1. 设置告警规则名称部分中,将名称配置为“[PROD] FE JVM Heap Stat”。
  2. 设置查询和告警条件部分中,将 C 部分中的规则配置为 B IS ABOVE 80。您可以对其他项目使用默认值。
  3. 告警评估行为部分中,选择之前创建的 PROD 目录和评估组 01,并将持续时间设置为 30 秒。
  4. 为您的告警规则添加详细信息部分中,点击添加注解,选择描述,并输入告警内容,例如“检测到 FE 堆内存使用率较高,请调整 FE 配置文件 fe.conf 中的堆内存限制”。
  5. 通知部分中,将 Labels 配置为与 FE 告警规则相同。如果未配置 Labels,Grafana 将使用 Default 策略并将告警电子邮件发送到“StarRocksOp”告警通道。

Q&A

Q:为什么 Dashboard 无法检测到异常?

A:Grafana Dashboard 依赖于其托管服务器的系统时间来获取监控项的值。如果在集群异常后 Grafana Dashboard 页面保持不变,您可以检查服务器的系统时钟是否同步,然后执行集群时间校准。

Q:如何实现告警分级?

A:以 Query Error 项为例,您可以为其创建两个具有不同告警阈值的告警规则。例如

  • 风险级别:将失败率设置为大于 0.05,表示存在风险。将告警发送给开发团队。
  • 严重级别:将失败率设置为大于 0.20,表示严重性。此时,告警通知将同时发送给开发和运维团队。