Grafana + Prometheus 是当前企业级大数据监控体系中最主流、最可靠的开源组合之一。它不仅适用于云原生环境,也广泛应用于传统数据中心、数字孪生系统、数据中台和实时可视化平台。对于追求高可用、强扩展性和精准指标采集的企业而言,这套方案提供了从数据采集、存储、查询到可视化展示的完整闭环。
大数据监控的核心需求是:实时性、高吞吐、多维度、可追溯。Prometheus 作为时序数据库(TSDB),专为指标采集设计,支持拉取(pull)模式,具备强大的标签(label)体系,可对海量服务实例进行细粒度分类。Grafana 则作为前端可视化引擎,支持多数据源接入,提供灵活的仪表盘构建能力,两者结合形成“采集+展示”的黄金搭档。
与传统监控工具相比,Prometheus 不依赖代理推送,避免了单点故障和网络拥塞;Grafana 的面板模板和变量系统,让不同团队可基于同一数据源构建个性化视图,无需重复开发。
Prometheus 本身是一个单二进制文件,部署极其轻量。推荐使用 Docker 或 Kubernetes 部署,便于版本管理和扩缩容。
docker run -d \ --name=prometheus \ -p 9090:9090 \ -v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus核心配置文件 prometheus.yml 需定义 scrape_configs,即监控目标列表。对于大数据平台,需重点监控以下组件:
示例配置片段:
scrape_configs: - job_name: 'hadoop-namenode' static_configs: - targets: ['namenode-host:9101'] # JMX Exporter 端口 metrics_path: '/metrics' scrape_interval: 15s - job_name: 'kafka-brokers' static_configs: - targets: ['kafka1:9308', 'kafka2:9308'] scrape_interval: 30s - job_name: 'spark-jobs' static_configs: - targets: ['spark-history:4040'] metrics_path: '/metrics'✅ 关键提示:Prometheus 默认保留 15 天数据,如需长期存储(如用于趋势分析),应对接 Thanos 或 Cortex 实现分布式存储。
大数据平台通常由多个异构组件构成,Prometheus 本身不直接采集所有指标,需借助 Exporters。
| 组件 | 推荐 Exporter | 功能说明 |
|---|---|---|
| Hadoop | jmx_exporter | 采集 NameNode、ResourceManager 的 JVM 和 HDFS 指标 |
| Kafka | kafka-exporter | 监控 Topic 分区、消费者滞后、Broker 吞吐 |
| Flink | Flink Prometheus Reporter | 自动上报 TaskManager 的 CPU、内存、反压、Checkpoint 状态 |
| MySQL/PostgreSQL | mysqld_exporter | 监控数据中台底层存储性能 |
| 自定义应用 | client_python / client_java | 在业务代码中埋点,暴露 Counter、Gauge、Histogram |
以 Flink 为例,在 flink-conf.yaml 中启用:
metrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReportermetrics.reporter.prom.port: 9249启动后,Flink 会自动在 http://taskmanager:9249/metrics 暴露 200+ 个指标,包括:
flink_taskmanager_job_task_operator_numRecordsInflink_taskmanager_job_task_operator_numRecordsOutjvm_memory_used这些指标可直接被 Prometheus 抓取,用于构建实时作业健康看板。
安装 Grafana:
docker run -d \ --name=grafana \ -p 3000:3000 \ grafana/grafana登录后,添加 Prometheus 数据源:
http://prometheus:9090接着,创建仪表盘。推荐使用以下核心面板:
sum(rate(process_cpu_seconds_total{job="hadoop-namenode"}[5m])) by (instance)kafka_consumergroup_lag{group="my-consumer-group"}flink_taskmanager_job_task_operator_isBackPressuredhadoop_dfs_namesystem_capacity_remaining_bytes使用 变量(Variables) 提升复用性:
$job:选择监控目标(如 hadoop-namenode、kafka-brokers)$instance:选择具体节点$time_range:动态切换时间窗口(1h / 6h / 24h)📌 最佳实践:将常用仪表盘导出为 JSON,纳入 Git 管理,实现“监控即代码”(Monitoring as Code)。
在大数据监控中,不能只看“是否在线”,更要关注性能瓶颈和资源效率。
| 指标 | 含义 | 告警阈值 |
|---|---|---|
hadoop_dfs_namesystem_capacity_used_bytes | 已用存储空间 | >85% 触发扩容告警 |
hadoop_dfs_namesystem_blocks_total | 数据块总数 | 异常波动可能表示数据丢失 |
hadoop_dfs_datanode_dfs_used | 每个 DataNode 使用量 | 均衡性差 → 数据倾斜 |
| 指标 | 用途 |
|---|---|
spark_job_numActiveJobs | 当前活跃作业数,过高表示资源竞争 |
spark_stage_numTasks | 每个 stage 的任务数,判断并行度是否合理 |
spark_executor_memoryUsed | 内存使用峰值,避免 OOM |
| 指标 | 说明 |
|---|---|
flink_taskmanager_job_task_operator_isBackPressured | 反压标志,1 表示阻塞,是性能瓶颈的首要信号 |
flink_taskmanager_job_task_operator_numRecordsInPerSecond | 输入吞吐量,用于评估数据源压力 |
flink_taskmanager_job_checkpoint_duration | Checkpoint 耗时,>5s 表示状态后端(RocksDB)写入瓶颈 |
⚠️ 重要提醒:不要忽略“延迟”指标。在数字孪生系统中,数据从采集到可视化的时间差(end-to-end latency)直接影响决策有效性。建议在 Kafka 和 Flink 之间增加
latency_ms自定义指标。
单节点 Prometheus 在生产环境中存在风险。推荐以下架构:
💡 对于超大规模集群(>1000 节点),建议采用 Prometheus Operator(基于 CRD)自动化管理,减少人工配置错误。
Grafana 不仅是图表工具,更是业务洞察的入口。在数据中台场景中,一个优秀的仪表盘应包含:
例如,某金融企业使用 Grafana 监控实时风控系统,发现某类交易的处理延迟在每天15:00突然升高,经排查是日终批量任务抢占资源所致,最终优化调度策略,降低延迟63%。
namespace_component_metric 格式,如 hadoop_hdfs_capacity_used。虽然 Grafana 和 Prometheus 是开源方案,但在大规模部署中,仍需专业支持。无论是架构设计、性能调优,还是与现有数据中台集成,都需要经验丰富的团队介入。
如果您正在构建企业级大数据监控体系,或希望快速上线一套稳定、可扩展的可视化平台,申请试用&https://www.dtstack.com/?src=bbs 可为您提供定制化部署方案、预置监控模板和7×24小时技术支持。
申请试用&https://www.dtstack.com/?src=bbs申请试用&https://www.dtstack.com/?src=bbs
对于正在建设数据中台、推进数字孪生项目、或构建实时数据可视化平台的企业,Grafana + Prometheus 不仅是工具,更是数据驱动决策的基础设施。
不要等到系统崩溃才想起监控。现在就开始部署,让每一个数据流都透明可见。
申请试用&https://www.dtstack.com/?src=bbs
申请试用&下载资料