说明
StarRocks 存算分离集群在存算一体基础上增加了众多与后端存储相关的监控指标,本文章主要提供这些指标在 Prometheus 和 Grafana 上的部署以及各字段含义说明,存算一体的监控部署可参考 https://docs.starrocks.io/zh-cn/latest/administration/Monitor_and_Alert ,这里不再赘述。
部署 Prometheus 和 Grafana
详情内容请参考:https://docs.starrocks.io/zh-cn/latest/administration/Monitor_and_Alert
部署 Prometheus
下载并解压 Prometheus
# 注意需要使用高版本的 Prometheus
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.45.1/prometheus-2.45.1.linux-amd64.tar.gz
tar -xf prometheus-2.29.1.linux-amd64.tar.gz
准备配置文件:
# prometheus.yml
# my global config
global:
scrape_interval: 15s # 全局的采集间隔,默认是 1m,这里设置为 15s
evaluation_interval: 15s # 全局的规则触发间隔,默认是 1m,这里设置 15s
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'StarRocks_Cluster01' # 每一个集群称之为一个job,可以自定义名字作为StarRocks集群名
metrics_path: '/metrics' # 指定获取监控项目的Restful Api
static_configs:
- targets: ['fe_ip:8030'] # fe http port
labels:
group: fe
- targets: ['be_ip1:8040', 'be_ip2.38:8040', 'be_ip3:8040'] # be http port
labels:
group: be
启动 Prometheus
nohup ./prometheus \
--config.file="./prometheus.yml" \
--web.listen-address=":9090" \
--log.level="info" &
访问 Prometheus 的 9090 端口,如果显示以下内容则表示服务成功启动。
部署 Grafana
curl -LO https://dl.grafana.com/oss/release/grafana-10.1.4.linux-amd64.tar.gz
tar -zxf grafana-8.0.6.linux-amd64.tar.gz
nohup ./bin/grafana-server --config="./conf/defaults.ini" &
为 Grafana 配置 Prometheus 作为数据源。登录用户名和密码都是 admin。
依次点击 Configuration,Data sources,Add data source,和 Prometheus。在下面的页面配置:Name、URL、Access。
添加 Dashboard
添加 Shared Data Dashboard
导入 JSON 文件,文件内容参考 shared_data.json 文件。
shared_data.json (49.2 KB)
添加 Starlet Dashboard
导入 JSON 文件,文件内容参考 starlet_fslib.json 文件。
starlet_fslib.json (97.0 KB)
注意,查看 dashboard 时,需要选择正确的 Datasource 和 NodeGroup 。 注意:不能选择 All。
理解 Dashboard
Shared Data Dashboard
Shared Data Dashboard 总共包含五个监控类别,如下:
Publish Version
名称 | 描述 |
---|---|
Latency / QPS | Public Version $quantile 分位延迟,平均延迟,以及 QPS |
Queued Tasks | 处于排队中的 Public Version 任务数量 |
Metadata
名称 | 描述 |
---|---|
Get Tablet Metadata | Get Tablet Metadata 的 $quantile 分位延迟,平均延迟,以及 QPS |
Put Tablet Metadata | Put Tablet Metadata 的 $quantile 分位延迟,平均延迟,以及 QPS |
Get Txn Log | Get Txn Log 的 $quantile 分位延迟,平均延迟,以及 QPS |
Put Txn Log | Put Txn Log 的 $quantile 分位延迟,平均延迟,以及 QPS |
Metacache
名称 | 描述 |
---|---|
Metacache Usage | Metacache 的利用率 |
Delvec Cache Miss Per Minute | Delvec Cache 每分钟 Miss 的次数 |
Metadata Cache Miss Per Minute | Metadata Cache 每分钟 Miss 的次数 |
Txn Log Cache Miss Per Minute | Txn Log Cache 每分钟 Miss 的次数 |
Segment Cache Miss Per Minute | Segment Cache 每分钟 Miss 的次数 |
Vacuum
名称 | 描述 |
---|---|
Vacuum Deletes | Vacuum Deletes 的 $quantile 分位延迟,平均延迟,以及 QPS |
Errors | Vacuum Deletes 操作失败的次数 |
Loading
名称 | 描述 |
---|---|
Queue Size | BE async delta writer 的队列长度 |
Starlet Dashboard
Starlet Dashboard 总共包含五个监控类别,如下:
在 Grafana 图表中可以按需选择观察的文件系统类型(例如 S3、HDFS、Posix 等)。这里我们以 S3 为例,详细介绍各指标的含义。
FSLIB READ IO METRICS
名称 | 指标类型 | 描述 |
---|---|---|
fslib read io_latency (quantile) | Histogram | 读取 S3 的 $quantile 分位延迟 |
fslib read io_latency (average) | Counter | 读取 S3 的平均延迟 |
fslib total read data | Counter | 累计读取 S3 的数据总量 |
fslib read iosize (quantile) | Histogram | 读取 S3 的 $quantile 分位 IO 大小 |
fslib read iosize (average) | Counter | 读取 S3 的 平均 IO 大小 |
fslib read throughput | Counter | 每秒钟读取 S3 的 IO 吞吐 |
fslib read iops | Counter | 每秒读取 S3 的 IO 次数 |
FSLIB WRITE IO METRICS
名称 | 指标类型 | 描述 |
---|---|---|
fslib write io_latency (quantile) | Histogram | 应用写入的 $quantile 分位延迟,注意这里只是写入缓冲区,因此观察到的值会比较低 |
fslib write io_latency (average) | Counter | 应用写入的平均延迟,注意这里只是写入缓冲区,因此观察到的值会比较低 |
fslib total write data | Counter | 累计写入的数据总量 |
fslib write iosize (quantile) | Histogram | 应用每次写入请求的 $quantile 分位大小 |
fslib write iosize (average) | Counter | 应用每次写入请求的平均大小 |
fslib write throughput | Counter | 应用的写入吞吐 |
S3 IO METRICS
该栏包含 S3 的各种详细指标。
名称 | 指标类型 | 描述 |
---|---|---|
fslib s3 single upload iops | Counter | S3 Put Object 的每秒调用次数 |
fslib s3 single upload iosize (quantile) | Histogram | S3 Put Object 的 $quantile 分位大小 |
fslib s3 single upload latency (quantile) | Histogram | S3 Put Object 的 $quantile 分位延迟 |
fslib s3 multi upload iops | Counter | S3 Multi Upload Object 的每秒调用次数 |
fslib s3 multi upload iosize (quantile) | Histogram | S3 Multi Upload Object 的 $quantile 分位大小 |
fslib s3 multi upload latency (quantile) | Histogram | S3 Multi Upload Object 的 $quantile 分位延迟 |
fslib s3 complete multi upload latency (quantile) | Histogram | S3 Compelete Multi Upload Object 的 $quantile 分位延迟 |
FSLIB CACHE METRICS
名称 | 指标类型 | 描述 |
---|---|---|
fslib cache hit ratio | Counter | 缓存访问的命中率 |
fslib cache hits/misses | Counter | 每秒打开缓存文件的命中次数 |
FSLIB FS METRICS
名称 | 指标类型 | 描述 |
---|---|---|
fslib alive fs instances count | Guage | 文件系统实例存活数。 |
fslib open files | Counter | 累计打开的文件数量 |
fslib create files | Counter | 每秒平均创建的文件数 |
filesystem meta operations | Counter | 每秒平均 list 文件目录的次数 |
fslib async caches | Counter | 累计异步缓存的文件数量 |
fslib create files (TOTAL) | Counter | 累计创建的文件数量 |
fslib async tasks | Counter | 累计排队中的异步任务 |
fslib async writeback | 没有该指标 | |
fslib list latency (quantile) | 没有该指标 | |
fslib list latency (average) | 没有该指标 |