合 使用Prometheus+Grafana对StarRocks数据库监控
Tags: 监控StarRocksPrometheusStarRocksManager
简介
StarRocks 提供两种监控报警的方案。企业版用户可以使用内置的 StarRocksManager,其自带的 Agent 从各个 Host 采集监控信息,上报至 Center Service,然后做可视化展示。StarRocksManager 提供邮件和 Webhook 的方式发送报警通知。如果您有二次开发需求,需要自行搭建部署监控服务,也可以使用开源 Prometheus+Grafana 方案,StarRocks 提供了兼容 Prometheus 的信息采集接口,可以通过直接连接 BE 或 FE 的 HTTP 端口来获取集群的监控信息。
使用 StarRocksManager
StarRocks Manager 为企业版功能,目前不提供单独下载。
StarRocksManager 的监控可以分成 集群 和 节点 两个维度。
您可以在集群页面可以看到下列监控项:
- 集群性能监控
- CPU 使用率
- 内存使用
- 磁盘 I/O 使用率,磁盘使用量、磁盘空闲量
- 发包带宽、收包带宽,发包数、收包数
- 集群查询监控
- QPS
- 平均响应时间
- 50/75/90/95/99/999 分位响应时间
- 数据导入量监控
- 发起导入次数
- 导入行数
- 导入数据量
- 数据组合并(Compaction)监控
- 基线合并数据组速率
- 基线合并数据量
- 增量合并数据组速率
- 增量合并数据量
在节点页面可以看到所有 BE/FE 的机器列表和状态等基础信息。
点击节点链接可以看到每一个节点的详细监控信息。在右侧的节点列表中选择多个节点同时展示,也可以在上方的下拉框中选择各类指标。
使用 Prometheus+Grafana
您可以使用 Prometheus 作为 StarRocks 监控数据存储方案,并使用 Grafana 作为可视化组件。
Prometheus 是一个拥有多维度数据模型的、灵活的查询语句的时序数据库。它可以通过 Pull 或 Push 采集被监控系统的监控项,存入自身的时序数据库中。并且通过丰富的多维数据查询语言,满足用户的不同需求。
Grafana 是一个开源的 Metric 分析及可视化系统。支持多种数据源,详情可参考官网文档。通过对应的查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。
本文档仅提供基于 Prometheus 和 Grafana 实现的一种 StarRocks 可视化监控方案,原则上不维护和开发这些组件。更多详细的介绍和使用,请参考对应的官网文档。
监控架构
Prometheus 通过 Pull 方式访问 FE 或 BE 的 Metric 接口,然后将监控数据存入时序数据库。
用户可以通过 Grafana 配置 Prometheus 为数据源,自定义绘制 Dashboard。
部署 Prometheus
下载并安装 Prometheus
1. 从 Prometheus 官网下载最新版本的 Prometheus。
以下示例以 prometheus-2.29.1.linux-amd64 版本为例。
1 2 | wget https://github.com/prometheus/prometheus/releases/download/v2.29.1/prometheus-2.29.1.linux-amd64.tar.gz tar -xf prometheus-2.29.1.linux-amd64.tar.gz |
配置 Prometheus
在 prometheus.yml 中添加 StarRocks 监控相关的配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # 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_host1:http_port','fe_host3:http_port','fe_host3:http_port'] labels: group: fe # 这里配置了 fe 的 group,该 group 中包含了 3 个 Frontends - targets: ['be_host1:be_http_port', 'be_host2:be_http_port', 'be_host3:be_http_port'] labels: group: be # 这里配置了 be 的 group,该 group 中包含了 3 个 Backends - job_name: 'StarRocks_Cluster02' # 可以在Prometheus中监控多个StarRocks集群 metrics_path: '/metrics' static_configs: - targets: ['fe_host1:http_port','fe_host3:http_port','fe_host3:http_port'] labels: group: fe - targets: ['be_host1:be_http_port', 'be_host2:be_http_port', 'be_host3:be_http_port'] labels: group: be |
启动 Prometheus
通过以下命令启动 Prometheus。
1 2 3 4 | nohup ./prometheus \ --config.file="./prometheus.yml" \ --web.listen-address=":9090" \ --log.level="info" & |
该命令将后台运行 Prometheus,并指定其 Web 端口为 9090
。启动后,即开始采集数据,并将数据存放在 ./data 目录中。
访问 Prometheus
您可以通过 Web 页面访问 Prometheus。通过浏览器打开 9090
端口,即可访问 Prometheus 的页面。依次点击导航栏中 Status 和 Targets,即可看到所有分组 Job 的监控主机节点。正常情况下,所有节点都应为 UP,表示数据采集正常。如果节点状态不为 UP,您可以访问 StarRocks 的 Metrics 接口(http://fe_host:fe_http_port/metrics
或 http://be_host:be_http_port/metrics
)检查是否可以访问。如果仍无法解决,您可以查询 Prometheus 相关文档寻找解决方案。
至此,一个简单的 Prometheus 已经搭建、配置完毕。更多高级使用方式,请参阅官方文档
数据接入自有 Prometheus
如果需要将监控数据接入自有的 Prometheus 系统,您可以通过下列接口访问:
- FE:
fe_host:fe_http_port/metrics
- BE:
be_host:be_web_server_port/metrics
如果需要 JSON 格式数据,您可以通过下列接口访问:
- FE:
fe_host:fe_http_port/metrics?type=json
- BE:
be_host:be_web_server_port/metrics?type=json
部署 Grafana
下载并安装 Grafana
从 Grafana 官网 下载最新版本的 Grafana。
以下示例以 grafana-8.0.6.linux-amd64 版本为例。
1 2 | wget https://dl.grafana.com/oss/release/grafana-8.0.6.linux-amd64.tar.gz tar -zxf grafana-8.0.6.linux-amd64.tar.gz |
配置 Grafana
在 ./conf/defaults.ini 中添加相关的配置。
1 2 3 4 5 6 7 8 9 | ... [paths] data = ./data logs = ./data/log plugins = ./data/plugins [server] http_port = 8000 domain = localhost ... |
启动 Grafana
通过以下命令启动 Grafana。
1 2 | nohup ./bin/grafana-server \ --config="./conf/defaults.ini" & |
配置 DashBoard
通过先前配置的地址(http://grafana_host:8000
)登录 Grafana,默认用户名为 admin
,密码为 admin
。
1. 配置数据源。
依次点击 Configuration,Data sources,Add data source,和 Prometheus。
Data Source 配置项简介
- Name: 数据源的名称,自定义,比如
starrocks_monitor
- URL: Prometheus 的 web 地址,如
http://prometheus_host:9090
- Access: 选择 Server 方式,即通过 Grafana 进程所在服务器,访问 Prometheus。
其他配置项可使用默认设置。