使用 Prometheus 和 Grafana 监控报警
StarRocks 支持基 于 Prometheus 和 Grafana 实现可视化监控。该方式允许您可视化集群的运行情况,便于监控和故障排除。
概述
StarRocks 提供了兼容 Prometheus 的信息采集接口,Prometheus 可以通过连接 BE 和 FE 节点的 HTTP 端口来获取集群监控指标的指标信息,存储在自身的时序数据库中。Grafana 则可以将 Prometheus 作为数据源将指标信息可视化。搭配 StarRocks 提供的 Dashboard 模板,您可以便捷的实现 StarRocks 集群监控指标的统计展示和阈值报警。
具体操作按照以下步骤展开:
- 安装监控组件
- 理解核心监控项
- 配置邮件报警
一、安装监控组件
默认情况下,Prometheus 和 Grafana 的端口不与 StarRocks 的端口冲突,但建议您将生产集群的监控组件单独部署,以此减少服务资源占用冲突,同时规避混合部署导致当前服务器异常宕机而外部无法及时感知的风险。
此外,Prometheus 和 Grafana 是无法监控自身服务的存活状态的,因此生产环境中建议您搭配 Supervisor 设置心跳服务,以下不做展开。
以下教程在监控节点(IP:192.168.110.23)使用操作系统 root 用户部署监控组件,对以下 StarRocks 集群进行监控(StarRocks 集群使用默认端口)。您在参考该指南为自己的集群配置监控时,通常只需替换 IP。
Host | IP | 操作系统用户 | 部署服务 |
---|---|---|---|
node01 | 192.168.110.101 | root | 1 FE + 1 BE |
node02 | 192.168.110.102 | root | 1 FE + 1 BE |
node03 | 192.168.110.103 | root | 1 FE + 1 BE |
说明
Prometheus+Grafana 当前只能监控 StarRocks 的 FE、BE 和 CN 节点,不能监控 Broker 节点。
1.1 部署 Prometheus
1.1.1 下载 Prometheus
StarRocks 的监控报警服务只需要使用 Prometheus 的 Server 安装包。您只需将安装包下载至监控节点。
以 LTS 版本 v2.45.0 为例,直接点击下载。
您也可以运行以下命令通过 wget
下载 Prometheus:
# 此处以 LTS 版本 v2.45.0 为例。您也可以替换命令行中的版本号下载其他版本。
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
在下载完成后,将安装包上传或拷贝至监控节点的 /opt 路径下。
1.1.2 安装 Prometheus
-
进入 /opt 路径下,解压 Prometheus 安装包。
cd /opt
tar xvf prometheus-2.45.0.linux-amd64.tar.gz -
为方便后续管理,将解压缩后的路径重命名为 prometheus:
mv prometheus-2.45.0.linux-amd64 prometheus
-
为 Prometheus 创建数据存储路径。
mkdir prometheus/data
-
由于 Prometheus 官方只提供了二进制文件压缩包,为了方便管理,您可以为 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”,您可以按需修改。
-
修改 Prometheus 配置文件 prometheus/prometheus.yml。由于该文件对于配置内容的格式要求严格,请在修改时特别注意空格和缩进。
vim prometheus/prometheus.yml
在文件中添加以下内容:
global:
scrape_interval: 15s # 全局的采集间隔,默认是 1 min,此处设置为 15 sec。
evaluation_interval: 15s # 全局的规则触发间隔,默认是 1 min,此处设置为 15 sec。
scrape_configs:
- job_name: 'StarRocks_Cluster01' # 监控每一个集群称之为一个 job,您可以在此自定义 StarRocks 集群名。
metrics_path: '/metrics' # 指定获取监控项目的 Restful API。
static_configs:
# 当前部分配置了 FE 群组,其中包含了 3 个 FE 节点,您需填写各个 FE 对应的 IP 和 HTTP 端口。
# 如果您在部署集群时修改过 HTTP 端口,请注意进行调整。
- targets: ['192.168.110.101:8030','192.168.110.102:8030','192.168.110.103:8030']
labels:
group: fe
# 当前部分配置了 BE 群组,其中包含了 3 个 BE 节点,您需填写各个 BE 对应的 IP 和 HTTP 端口。
# 如果您在部署集群时修改过 HTTP 端口,请注意进行调整。
- 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
-
启动 Prometheus。
systemctl daemon-reload
systemctl start prometheus.service -
查看服务状态。
systemctl status prometheus.service
如果显示
Active: active (running)
即表明 Prometheus 启动成功。您还可以通过
netstat
命令查看 Prometheus 默认端口(9090)的状态。netstat -nltp | grep 9090
-
为 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
。
在 UI 主页的导航栏中选择 Status-->Targets,您可以看到配置文件 prometheus.yml 中所有分组 Job 的监控主机节点。正常情况下,所有节点都应为 UP,表示服务通信正常。
至此,Prometheus 配置完成。详细信息可以参阅 Prometheus 官方文档。