背景
Flink 的指标非常多,同时由于参数配置的不正确,导致指标上报频率过快,PushGateway集群压力过大。
相关文章
如果读者在找限流、拦截指标的做法,可参考我的其他文章,本篇略显敷衍的文章是记录如何使用 Nginx 对指标上报过程中进一步进行限流。
【Flink系列】使用OpenResty 在InfluxDB协议层拦截Flink指标
【Flink系列】构建实时计算平台——特别篇,用InfluxDb收集Flink Metrics
解决方案
Nginx + limit_req
代码
location ^~ /metrics/job/flink {
limit_req zone=one nodelay;
limit_req_status 503;
error_page 503 =200/process_503;
...
...
}
location /process_503{
return 200;
}
结论
指标上报的时候,超出频率,会返回503,导致NodeManager上打印StackTrace,对排查错误有不良影响,所以process_503直接返回200。避免Prometheus client 报错。