)
Doris集群监控实战从零构建企业级可视化看板第一次登录Doris Manager控制台时那个简陋的监控界面让我有些失望——几个基础指标图表连历史趋势都无法查看。直到发现它内置了Prometheus和Grafana全家桶才意识到这是个被低估的监控利器。本文将分享如何用这套组合拳打造媲美大厂的监控体系包括磁盘水位预警、慢查询分析等核心场景以及最容易被忽略的自定义指标配置技巧。1. 监控体系架构解析Doris Manager的监控模块实际上采用了云原生监控的黄金组合各节点上的Exporter采集指标 → Prometheus进行存储和告警计算 → Grafana实现可视化展示。这套架构的优势在于开箱即用所有组件已预置在安装包中无需额外部署零配置对接Grafana已预装官方仪表盘模板弹性扩展支持添加自定义Exporter采集业务指标关键组件路径/opt/module/doris-manager/deps/ ├── prometheus-2.37.0.linux-amd64 ├── grafana-9.0.6 └── alertmanager-0.24.0提示生产环境建议将Prometheus数据目录挂载到独立磁盘避免监控数据影响系统稳定性2. 五分钟快速启用监控看板2.1 组件激活流程登录Doris Manager控制台进入集群管理 → 监控配置开启Prometheus和Grafana服务开关设置数据保留周期默认7天点击立即生效按钮首次启动约需2分钟完成组件初始化。成功后会在/opt/module/doris-manager/logs/下生成组件日志prometheus.loggrafana.log2.2 关键监控指标说明系统预置了六大类监控指标指标类型示例指标告警阈值建议资源使用CPU利用率、内存占用CPU80%持续5分钟查询性能99分位查询延迟、QPSP99500ms存储状态磁盘使用率、副本健康度磁盘85%节点状态BE节点存活数、FE选举状态存活BE副本数1导入吞吐导入速率、失败导入次数失败率1%元数据表数量、分区增长速率单日增长1000分区3. 深度定制监控看板3.1 Grafana高级功能实战访问http://manager_ip:3000默认账号admin/admin推荐进行以下优化仪表盘克隆# 备份原始仪表盘 cp /opt/module/doris-manager/deps/Doris-Dashboard.json \ /opt/module/doris-manager/deps/Doris-Dashboard-BAK.json添加智能告警进入Alert → New Alert Rule设置磁盘预警规则disk_used_percent{instance~.*be.*} 85变量联动添加$host变量label_values(up, instance)在面板中使用{host~$host}实现动态过滤3.2 自定义指标接入以监控业务表查询热度为例创建自定义ExporterPython示例from prometheus_client import start_http_server, Gauge import psycopg2 query_gauge Gauge(doris_table_query_count, Query count by table, [table]) def collect_metrics(): conn psycopg2.connect(dbnamedoris usermonitor) cur conn.cursor() cur.execute( SELECT table_name, COUNT(*) FROM query_log WHERE time NOW() - INTERVAL 1 hour GROUP BY 1 ) for table, count in cur.fetchall(): query_gauge.labels(tabletable).set(count) if __name__ __main__: start_http_server(8000) while True: collect_metrics() time.sleep(60)在Prometheus配置中添加抓取目标# 修改/opt/module/doris-manager/deps/prometheus.yml scrape_configs: - job_name: custom_metrics static_configs: - targets: [localhost:8000]重启Prometheus服务/opt/module/doris-manager/deps/prometheus-2.37.0.linux-amd64/prometheus \ --config.file/opt/module/doris-manager/deps/prometheus.yml \ --web.listen-address:90904. 生产环境优化指南4.1 性能调优参数在conf/manager.conf中增加# Prometheus配置 prometheus.storage.tsdb.retention.time30d prometheus.query.max-concurrency20 prometheus.query.timeout10m # Grafana配置 grafana.dashboard.default_home_dashboard_path/opt/module/doris-manager/deps/Doris-Prod-Dashboard.json4.2 高可用部署方案当监控集群规模超过50节点时建议Prometheus分片按业务线拆分采集任务使用hashmod实现水平分片scrape_configs: - job_name: doris_be_metrics relabel_configs: - source_labels: [__address__] modulus: 3 target_label: __tmp_hash action: hashmod - source_labels: [__tmp_hash] regex: ^0$ action: keepGrafana多数据源配置Prometheus集群联邦查询设置智能缓存[grafana] cache_enabled true cache_max_age 5m5. 典型故障排查案例场景凌晨收到磁盘告警但Grafana显示使用率仅60%排查步骤确认Prometheus抓取间隔grep -A 3 scrape_interval /opt/module/doris-manager/deps/prometheus.yml检查BE节点实际磁盘状态ssh be-node-01 df -h | grep doris发现Prometheus的disk_used_percent指标未包含数据目录挂载点修改BE监控配置be monitor disk_monitor_path/data1,/data2/disk_monitor_path /monitor /be最终通过调整监控路径配置实现了对数据盘的真实监控。这个案例让我养成了定期验证监控指标准确性的习惯——毕竟错误的监控比没有监控更危险。