starrocks基於prometheus實現監控告警
監控報警
本文介紹如何為 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 的任務資訊展示。
部分圖示展示
詳細監控指標含義見:
配置 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% '
告警測試
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2948963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- prometheus監控+alertmanager告警Prometheus
- 基於 Prometheus 的監控系統實踐Prometheus
- 基於Prometheus閘道器的監控完整實現參考Prometheus
- prometheus之docker監控與告警系列(一)PrometheusDocker
- prometheus之docker監控與告警系列(二)PrometheusDocker
- prometheus之docker監控與告警系列(三)PrometheusDocker
- SpringCloud使用Prometheus監控(基於Eureka)SpringGCCloudPrometheus
- 江蘇移動基於Prometheus實現百億級話單實時全景監控Prometheus
- 基於 prometheus 的微服務指標監控Prometheus微服務指標
- 基於Prometheus和Grafana打造業務監控看板PrometheusGrafana
- 使用Prometheus監控Golang服務-基於YoyoGo框架PrometheusGolang框架
- 基於 Prometheus 的監控神器,簡單靈活!Prometheus
- 基於Prometheus+Grafana監控Laravel+Swoole應用PrometheusGrafanaLaravel
- K8S Canal基於Prometheus進行實時指標監控K8SPrometheus指標
- Prometheus監控實戰應用Prometheus
- 圖文詳解Prometheus監控+Grafana+Alertmanager告警安裝使用PrometheusGrafana
- Prometheus+Grafana實現服務效能監控:windows主機監控、Spring Boot監控、Spring Cloud Alibaba Seata監控PrometheusGrafanaWindowsSpring BootCloud
- prometheus JVM監控PrometheusJVM
- Prometheus監控mongoPrometheusGo
- Prometheus 監控arangodbPrometheusGo
- 6.prometheus監控--監控dockerPrometheusDocker
- go-kit 微服務 服務監控 (prometheus 實現)Go微服務Prometheus
- prometheus監控golang服務實踐PrometheusGolang
- 使用Prometheus、Grafana監控Artifactory實踐PrometheusGrafana
- SSH Exporter:基於Prometheus的遠端系統效能監控神器ExportPrometheus
- 3W字乾貨深入分析基於Micrometer和Prometheus實現度量和監控的方案Prometheus
- 基於 ZooKeeper 實現爬蟲叢集的監控爬蟲
- 基於 IntersectionObserver 實現一個元件的曝光監控Server元件
- 基於 Prometheus+Grafana+Alertmanager 搭建 K8S 雲監控告警平臺(附配置告警至QQ、釘釘)PrometheusGrafanaK8S
- Kubernetes監控實踐(2):可行監控方案之Prometheus和SensuPrometheus
- docker部署Prometheus+AlertManager實現郵件告警DockerPrometheus
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- SpringBoot使用prometheus監控Spring BootPrometheus
- prometheus 監控學習Prometheus
- 05 . Prometheus監控NginxPrometheusNginx
- 使用Prometheus監控FlinkPrometheus
- 在k8s中快速搭建基於Prometheus監控系統K8SPrometheus
- prometheus+grafana監控mysql最佳實踐PrometheusGrafanaMySql