问题描述
我想监视Superset仪表板,并计划与Prometheus一起使用我自己的自定义Python导出器。每当仪表板被记录以供某些用户访问时,我都会将量规设置为值1。我的目标图是:y轴为访问次数,x轴为时间,dashboard_id为图。
我的Python导出器如下:
class DashboardMonitor:
def __init__(self):
self.dashboard_gaguge_map = defaultdict(Gauge)
def create_dashboard_gauges(self,dashboards_list):
for dashboard_id,dashboard_name in dashboards_list.items():
gauge_name = 'dashboard_{}_gauge'.format(dashboard_id)
gauge_description = dashboard_name
dashboard_gauge = Gauge(gauge_name,gauge_description)
self.dashboard_gaguge_map[dashboard_id] = dashboard_gauge
def get_dashboard_gauge(self,dashboard_id):
return self.dashboard_gaguge_map.get(dashboard_id,None)
def set_dashboard_gauge(self,dashboard_id):
dashboard_gauge = self.get_dashboard_gauge(dashboard_id)
dashboard_gauge.set(1)
我当前对Prometheus的查询是:
sum(rate(dashboard_1_gauge[1m])) * 60
绘制以下内容:
我不确定该图是否显示我想要的图形,还是每次在日志中遇到该仪表板时将仪表设置为1的方法是否是执行此操作的最佳方法。
我该怎么做?
解决方法
如https://prometheus.io/docs/prometheus/latest/querying/functions/#rate中所述,rate
仅应与计数器一起使用,而不应与量规一起使用。
我将此指标更改为一个计数器,然后使用sum(rate(dashboard_1_counter[1m]))
来绘制每秒访问次数的使用率,或者,如果您想获取每个时间段的访问次数,请使用sum(increase(dashboard_1_counter[1m]))
1m
。