我们可以看到 Flink 在将 Flink Metrics 暴露给 Prometheus 等外部系统时,使用 Pushgateway 而不是 Prometheus 通常的 pull 模型进行一般指标收集。
@Override
public void report() {
try {
pushGateway.push(CollectorRegistry.defaultRegistry, jobName);
} catch (Exception e) {
log.warn("Failed to push metrics to PushGateway with jobName {}.", jobName, e);
}
}
但是从下面的 Prometheus 官方文档中可以看出,“Prometheus 从检测作业中刮取指标,直接或通过中间推送网关进行短期作业”,显然 Flink Streaming 作业不是短期作业,所以为什么 Flink 使用 Pushgateway而不是普罗米修斯通常用于一般指标收集的拉动模型?