如何在Prometheus上显示一段时间内访问Superset dashboard的用户数?

How to display the number of users visiting a Superset dashboard within a time interval on Prometheus?

我想监控 Superset 仪表板,并计划将我自己的自定义 Python 导出器与 Prometheus 一起使用。每次记录仪表板以供某些用户访问时,我都会将仪表设置为值 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