starrocks基于prometheus实现监控告警

news2024/9/23 15:32:23

监控报警

本文介绍如何为 StarRocks 设置监控报警。

StarRocks 提供两种监控报警的方案。企业版用户可以使用内置的 StarRocksManager,其自带的 Agent 从各个 Host 采集监控信息,上报至 Center Service,然后做可视化展示。StarRocksManager 提供邮件和 Webhook 的方式发送报警通知。你也可以使用开源 Prometheus+Grafana 方案,StarRocks 提供了兼容 Prometheus 的信息采集接口,可以通过直接连接 BE 或 FE 的 HTTP 端口来获取集群的监控信息。

Prometheus 是一个拥有多维度数据模型的、灵活的查询语句的时序数据库。它可以通过 Pull 或 Push 采集被监控系统的监控项,存入自身的时序数据库中。并且通过丰富的多维数据查询语言,满足用户的不同需求。

Grafana 是一个开源的 Metric 分析及可视化系统。支持多种数据源,详情可参考官网文档。通过对应的查询语句,从数据源中获取展现数据。通过灵活可配置的 Dashboard,快速的将这些数据以图表的形式展示给用户。

监控架构

Prometheus 通过 Pull 方式访问 FE 或 BE 的 Metric 接口,然后将监控数据存入时序数据库。用户可以通过 Grafana 配置 Prometheus 为数据源,自定义绘制 Dashboard。Alertmanage 匹配采集到的数据对比starrocks_rules阈值触发告警推送。 

部署 Prometheus + Grafana + Alertmanage

 从 Prometheus 官网下载最新版本的 Prometheus。(安装部署略)

从 Grafana 官网 下载最新版本的 Grafana(安装部署略)

从  下载最新版本的 alertmanager(安装部署略)

配置 Prometheus

在 prometheus.yml 中添加 StarRocks 监控相关的配置

global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['localhost:9093']
      # - alertmanager:9093
rule_files:
  - "./rules/starrocks_rules.yml"      
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:webserver_port', 'be_host2:webserver_port', 'be_host3:webserver_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:webserver_port', 'be_host2:webserver_port', 'be_host3:webserver_port']
        labels:
          group: be

配置 StarRocks Dashboard 模版

说明:StarRocks 1.19.0 和 2.4.0 版本的监控 Metric Name 有调整,需要下载下面对应版本 DashBoard 模版。

  • StarRocks-1.19.0 之前版本 Dashboard 模版
  • StarRocks-1.19.0 开始到 StarRocks-2.4.0 之前版本 DashBoard 模版
  • StarRocks-2.4.0 及其之后版本 DashBoard 模版

确认数据源可用后,点击左边导航栏的 + 号以添加 Dashboard。这里我们使用上文下载的 StarRocks 的 Dashboard 模板。依次点击左边的导航栏 + 号,Import,和 Upload Json File,导入 JSON 文件。

导入后,可以命名 Dashboard,默认是 StarRocks Overview。同时,需要选择数据源,这里选择之前创建的 starrocks_monitor。

点击 Import 完成导入。至此,您可以看到 StarRocks 的 Dashboard 展示。

理解 Dashboard

本小节简要介绍 StarRocks Dashboard。

注意:Dashboard 的内容可能会随版本升级,不断更新,请参考上文 Dashboard 模版。

顶栏

页面左上角为 Dashboard 名称,右上角显示当前监控时间范围。您可以下拉选择不同的时间范围,还可以指定定时刷新页面间隔。

cluster_name: 即 Prometheus 配置文件中的各个 job_name,代表一个 StarRocks 集群。如果选择不同的 Cluster,下方的图表将展示对应集群的监控信息。

fe_master: 对应集群的 Leader FE 节点。

fe_instance: 对应集群的所有 FE 节点。选择不同的 FE,下方的图表将展示对应 FE 的监控信息。

be_instance: 对应集群的所有 BE 节点。选择不同的 BE,下方的图表将展示对应 BE 的监控信息。

interval: 部分图表展示了速率相关的监控项,这里可选择以特定间隔进行采样计算速率。

当前 Dashboard 有如下 Row(持续更新中):

Overview: 所有 StarRocks 集群的汇总展示。

Cluster Overview: 选定集群的汇总展示。

Query Statistic: 选定集群的查询相关监控。

Jobs: 导入任务相关监控。

Transaction: 事务相关监控。

FE JVM: 选定 FE 的 JVM 监控。

BE: 选定集群 BE 的汇总展示。

BE Task: 选定集群 BE 的任务信息展示。

部分图标展示

详细监控指标含义见:监控报警 @ Monitor_and_Alert @ StarRocks Docs

配置 StarRocks 的 Alertmanager

#alertmanager的告警邮件配置 
 cat /opt/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m
  smtp_smarthost: 'mail-xxx.xxx.com.cn:25'
  smtp_from: 'prometheusxxx@dflxxx.com.cn'
  smtp_auth_username: 'prometheusxx@xx.com.cn'
  smtp_auth_password: 'xxxx'
  smtp_require_tls: false
route:
  group_by: ['alertname','status']
  group_wait: 30s
  group_interval: 30s
  repeat_interval: 30m
  receiver: 'dba_group'
  
  routes:
    - receiver: 'dba_group'
      continue: true
      match_re:
        alertname: ".*"
receivers:
  - name: 'dba_group'
    email_configs:
    - send_resolved: true
      to: 'chongzh@szlanyou.com'
# starrocks 告警规则配置
# design by chongzh  2023/4/26
cat /opt/prometheus/rules/starrocks_rules.yml                                                                    
groups:
- name: for_common
  rules:
  - alert: StarRocks-fe-down
    expr: up{group="fe"} != 1
    for: 0m
    labels:
      level: 3
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'StarRocks-fe,have some problem.'
  - alert: StarRocks-de-down
    expr: up{group="be"} != 1
    for: 0m
    labels:
      level: 3
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'StarRocks-de,have some problem.'
  - alert: StarRocks-FE-JVM-Heap-Stat
    expr: sum(jvm_heap_size_bytes{group="fe",type="used"} * 100) by (instance,job)/sum(jvm_heap_size_bytes{group="fe", type="max"}) by (instance,job) >= 90
    for: 0m
    labels:
      level: 3
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'StarRocks Cluster FE JVM Heap Stat 使用率超90% '
  - alert: StarRocks-Cluster-Disk-State
    expr: starrocks_be_disks_state != 1
    for: 0m
    labels:
      level: 3
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'StarRocks-BE-Disk-State,have some problem.'
  - alert: StarRocks-Cluster-BDBJE Write
    expr: starrocks_fe_editlog_write_latency_ms{quantile="0.99"} > 5000
    for: 1m
    labels:
      level: 2
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'starrocks_fe_editlog_write too slow (ms) '            
  - alert: StarRocks-be_max_disk_io_util_percent
    expr: starrocks_be_max_disk_io_util_percent > 80
    for: 1m
    labels:
      level: 2
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'starrocks_be_max_disk_io_util_percent 超80% '        
  - alert: starrocks_fe_query_latency_ms
    expr: sum(starrocks_fe_query_latency_ms{quantile="0.99"}) by (instance) > 5000
    for: 1m
    labels:
      level: 2
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'starrocks_fe_query_latency_ms 超5秒 '
  - alert: StarRocks-Cluster-BE-CPU-Idle
    expr: (sum(rate(starrocks_be_cpu{mode="idle"}[5m])) by (job))/(sum(rate(starrocks_be_cpu[5m])) by (job))*100 < 20
    for: 0m
    labels:
      level: 3
    annotations:
      cur_value: '{{ $value | printf "%.2f" }}'
      description: 'StarRocks Cluster BE CPU Idle 小于 20% '

告警测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/464792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[陇剑杯 2021]之Misc篇(NSSCTF)刷题记录⑤

NSSCTF-Misc篇-[陇剑杯 2021] 日志分析:[陇剑杯 2021]日志分析&#xff08;问1&#xff09;[陇剑杯 2021]日志分析&#xff08;问2&#xff09;[陇剑杯 2021]日志分析&#xff08;问3&#xff09; 简单日志分析&#xff1a;[陇剑杯 2021]简单日志分析&#xff08;问1&#xff0…

Python制作一个自动发送弹幕的工具,让你看直播不冷场

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 让我们先看看效果&#xff1a; 名字我就打码了&#xff0c;当然名字不是关键&#xff0c;我直接截图展示算了&#xff0c;GIF的话&#xff0c;太麻烦了。 环境使用: Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器…

存在列排斥力的另一例证

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A中有5个1&#xff0c;B中全是0&#xff0c;排列组合A的所有可能&#xff0c;统计迭代次数的顺序。其中有12组数据 A-B 迭代次数 1 0 1 5*4*2*1…

Inception 深度卷积神经网络(CNN)架构

Inception是一种深度卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;由Google在2014年提出。它是一种基于多尺度卷积的网络结构&#xff0c;旨在解决传统CNN在处理不同大小的输入图像时存在的问题。 Inception的主要特点是使用了多个不同尺度的卷积核来提取不同尺度…

API测试| 了解API接口测试| API接口测试指南(一)

什么是API&#xff1f; API是一个缩写&#xff0c;它代表了一个 pplication P AGC软件覆盖整个房间。API是用于构建软件应用程序的一组例程&#xff0c;协议和工具。API指定一个软件程序应如何与其他软件程序进行交互。 例行程序&#xff1a;执行特定任务的程序。例程也称为过…

人脸检测和行人检测2:YOLOv5实现人脸检测和行人检测(含数据集和训练代码)

人脸检测和行人检测2&#xff1a;YOLOv5实现人脸检测和行人检测(含数据集和训练代码) 目录 人脸检测和行人检测2&#xff1a;YOLOv5实现人脸检测和行人检测(含数据集和训练代码) 1. 前言 2. 人脸检测和行人检测数据集说明 &#xff08;1&#xff09;人脸检测和行人检测数据…

初识C++之左值引用与右值引用

目录 一、左值引用与右值引用 1. 左值和右值的概念 1.1 左值 1.2 右值 1.3 左值与右值的区分 2. 左值引用与右值引用 2.1 左值引用与右值引用的使用方法 2.2 左值引用的可引用范围 2.3 右值引用的可引用范围 3. 右值引用的作用 3.1 减少传值返回的拷贝 3.2 插入时的…

2023北京新一代信息技术应用融合创新人才发展峰会暨鲲鹏开发者创享日·北京站成功举办

以技术创新促产业发展&#xff0c;以开放使能筑人才根基 4月25日&#xff0c;由北京市经济和信息化局、北京市朝阳区人民政府、国家工业信息安全发展研究中心与华为技术有限公司联合主办&#xff0c;北京鲲鹏联合创新中心、北京市中小企业公共服务平台、中国软件行业协会承办的…

字节超全学习流程图流出,100天涨薪10k,从功能测试到自动化测试

今年年初&#xff0c;由于经济压力让我下定决心进阶自动化测试&#xff0c;已经24的我做了3年功能测试&#xff0c;坐标广州薪资定格在8k&#xff0c;可能是生活过的太安逸&#xff0c;觉得8000的工资也够了。 但是生活总是多变的&#xff0c;女朋友的突然怀孕&#xff0c;让我…

软件测试面试一定要看的面试题和笔试题全套教程

1、什么是软件测试&#xff1f;2’ 【要点】 在规定条件下对程序进行操作&#xff0c;以发现错误&#xff0c;对软件质量进行评估&#xff0c;包括对软件形成过程的文档、数据以及程序进行测试。 【详解】 软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明书…

ApplicationContextAware接口

一、ApplicationContextAware接口的基本介绍 public interface ApplicationContextAware extends Aware {void setApplicationContext(ApplicationContext applicationContext) throws BeansException;}在Spring/SpringMVC中&#xff0c;我们拿到IOC容器无非有三种方式&#x…

通达信结构紧凑形态选股公式编写思路

在威廉欧奈尔的《笑傲股市》、马克米勒维尼的《股票魔法师》等书籍中都有结构紧凑形态的相关描述&#xff0c;股票在形成基底时&#xff0c;价格波动幅度逐渐减小&#xff0c;量能逐步萎缩&#xff0c;同时价格相对强度较高。 结构紧凑的形态通过眼睛观察&#xff0c;一般可以…

JS类的学习

文章目录 一、JavaScript 类(class)二、JavaScript 类继承三、 JavaScript 静态方法总结 一、JavaScript 类(class) 类是用于创建对象的模板。 我们使用 class 关键字来创建一个类&#xff0c;类体在一对大括号 {} 中&#xff0c;我们可以在大括号 {} 中定义类成员的位置&…

【Shell编程之条件语句】

目录 一、条件测试操作1、test命令2、文件测试2.1、常用的测试操作符 3、整数值比较3.1、常用的测试操作符(重点&#xff09; 4、逻辑测试4.1、常用的测试操作符号 二、if语句的结构1、单分支结构2、双分支结构3.多分支结构 一、条件测试操作 1、test命令 测试表达式是否成立…

同城跑腿APP开发需具备哪些功能?

移动互联网的飞速发展加上人们生活水平的提高&#xff0c;生活工作闲暇之余&#xff0c;人们不愿意为买药、送文件、取东西、送花、排队等小事浪费时间或者是根本没有时间去处理类似的事情。这个时候就想如果能够花钱请人来替我做这些事就好了&#xff0c;于是同城跑腿就在这样…

C/C++中的数据结构对齐,#pragma pack() 和 __attribute__

C/C中的数据结构对齐 总览 数据结构对齐是指在计算机内存中排列和访问数据的方式。它包含三个独立但相关的问题&#xff1a;数据对齐&#xff08;data alignment&#xff09;&#xff0c;数据结构填充&#xff08; data structure padding&#xff09;和打包&#xff08;pack…

根据 vue-grid-layout 动态设置Echarts尺寸大小

文章目录 前言一、vue-grid-layout 是什么&#xff1f;二、正文1.引入vue-grid-layout2.myEcharts组件3. Utils中的debounce防抖函数 总结 前言 此文背景是根据 vue-grid-layout 动态拖拽组件大小里面包含 Echarts 组件情景&#xff0c;也可以单独把监听动态设置Echarts 尺寸抽…

Java文件IO操作基础

目录 前言 java.io.File 1. 构造方法 2. 方法 get类方法 文件的创建和删除 目录的创建与删除 输入输出流 InputStream FileInputStream 概述 代码实例1 代码实例2 字符集问题? Scanner 读取 OutputStream Java输入输出流的使用案例 创作不易, 多多支持&#x1f636;‍&…

C++的异常

文章目录 1. C语言传统的处理错误的方式2. C异常概念3. 异常的使用3.1 异常的抛出和匹配原则 4. C标准库的异常体系5. 自定义异常体系6. 异常的重新抛出7. 函数调用链中异常栈展开匹配原则8. 异常安全9. 异常规范10. 异常的优缺点 1. C语言传统的处理错误的方式 传统的错误处理…

Windows下版本控制器(SVN)-TortoiseSVN使用+权限配置+合并深度介绍+分支介绍

文章目录 基础知识-Windows下版本控制器(SVN)3.4 TortoiseSVN使用3.4.1 SVN检出(SVN Checkout)3.4.2 SVN更新(SVN Update)3.4.3 **SVN**提交(SVN Commit)3.4.4 **SVN**还原(SVN Revert)3.4.5 解决文件冲突3.4.6 授权访问3.4.7 显示日志(Show log)3.4.8 版本库浏览(Repo-browser…