如何显示在Prometheus上的时间间隔内访问Superset仪表板的用户数量?

问题描述

我想监视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绘制以下内容

enter image description here

我不确定该图是否显示我想要的图形,还是每次在日志中遇到该仪表板时将仪表设置为1的方法是否是执行此操作的最佳方法

我该怎么做?

解决方法

https://prometheus.io/docs/prometheus/latest/querying/functions/#rate中所述,rate仅应与计数器一起使用,而不应与量规一起使用。

我将此指标更改为一个计数器,然后使用sum(rate(dashboard_1_counter[1m]))来绘制每秒访问次数的使用率,或者,如果您想获取每个时间段的访问次数,请使用sum(increase(dashboard_1_counter[1m])) 1m