238

学习 Druid(十二):使用 Prometheus 监控 Druid 集群

 4 years ago
source link: https://www.tuicool.com/articles/Q3Yn2eE
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

更新至 Druid 0.15.1 版本

截止目前,Druid 官方并不支持 Prometheus,且使用 Prometheus 监控 Druid 集群面临以下几个问题:

  • Druid 使用 Push 的方式发送指标,而 Prometheus 使用 Pull 的方式;
  • Druid 指标格式为 JSON,而 Prometheus 使用专有的指标格式。

为了解决:point_up_2:的难题,需要动手编写 druid-exporter,从而将 Druid 各个服务的指标提供给 Prometheus。

整体架构如下图所示:

RNRZBbu.png!web

Druid 监控

默认,Druid 并未开启指标采集和发送。编辑 runtime.properties 文件:

druid.monitoring.emissionPeriod=PT1M  
druid.monitoring.monitors=[]

druid.emitter=http  
druid.emitter.http.recipientBaseUrl=http://<DRUID_EXPORTER_HOST>:<DRUID_EXPORTER_PORT>

配置项 druid.monitoring.emissionPeriod 指标发送周期;

配置项 druid.monitoring.monitors 进程监控列表;

配置项 druid.emitter 指标发送方式,使用 HTTP POST;

配置项 druid.emitter.http.recipientBaseUrl 指标发送 URL。

常用的监控有:

  • org.apache.druid.client.cache.CacheMonitor 缓存相关指标,适用于 Broker 和 Historical;
  • org.apache.druid.server.metrics.QueryCountStatsMonitor 查询相关指标,适用于 Broker 和 Historical;
  • org.apache.druid.server.metrics.HistoricalMetricsMonitor 适用于 Historical;
  • org.apache.druid.java.util.metrics.SysMonitor 系统相关指标,使用 SIGAR library 监控系统活动和状态;
  • org.apache.druid.java.util.metrics.JvmMonitor JVM 相关指标;
  • org.apache.druid.java.util.metrics.JvmCpuMonitor JVM CPU 相关指标;
  • org.apache.druid.java.util.metrics.JvmThreadsMonitor JVM 线程相关指标。

监控不是 Druid 的主要功能,官方对监控维护不够及时,缺少了 MiddleManager 和 Peon 相关的指标。

非常遗憾。☹️

Druid Exporter

Python 语言开发的 druid-exporter ,由于版本过久,需要一些定制开发。

Prometheus

编辑 prometheus.yml 文件,添加 druid-exporter,:point_down:是一个模板:

global:  
  scrape_interval: 1m
  evaluation_interval: 1m

rule_files:  
  - rules/druid.yaml

alerting:  
  alertmanagers:
    - static_configs:
      - targets:
        - <ALERT_MANAGER_HOST>:<ALERT_MANAGER_PORT>

scrape_configs:  
  - job_name: druid-coordinator
    static_configs:
      - targets: []
  - job_name: druid-broker
    static_configs:
      - targets: []
  - job_name: druid-historical
    static_configs:
      - targets: []
  - job_name: druid-middlemanager
    static_configs:
      - targets:[]

编辑 rules/druid.yaml 文件,添加告警规则,:point_down:是一个模板:

groups:  
  - name: druid
    rules:
      - alert: CoordinatorOverlordDown
        expr: up{job="druid-coordinator"} == 0
        for: 5m
        labels:
          app: druid
          service: CoordinatorOverlord
      - alert: BrokerDown
        expr: up{job="druid-broker"} == 0
        for: 5m
        labels:
          app: druid
          service: Broker
      - alert: MiddleManagerDown
        expr: up{job="druid-middlemanager"} == 0
        for: 5m
        labels:
          app: druid
          service: MiddleManager
      - alert: HistoricalDown
        expr: up{job="druid-historical"} == 0
        for: 5m
        labels:
          app: druid
          service: Historical

参考


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK