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

Posted

技术标签:

【中文标题】如何在 Prometheus 上显示一段时间内访问 Superset 仪表板的用户数?【英文标题】:How to display the number of users visiting a Superset dashboard within a time interval on Prometheus? 【发布时间】:2021-01-28 07:00:52 【问题描述】:

我想监控 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 的方法是否是执行此操作的最佳方法。

我该怎么做?

【问题讨论】:

抱歉跑题了。你在哪里打电话给你的set_dashboard_gauge?我们同样需要监控用户活动。 【参考方案1】:

如https://prometheus.io/docs/prometheus/latest/querying/functions/#rate 中所述,rate 只能与计数器一起使用,而不应与仪表一起使用。

我会将此指标更改为计数器,然后使用sum(rate(dashboard_1_counter[1m])) 来绘制每秒访问的使用率或sum(increase(dashboard_1_counter[1m])),如果您想获取每个时间段中的访问计数,例如1m in这种情况。

【讨论】:

那1m不固定怎么办?例如,您选择一个时间段,在该时间段内,您可以看到对该仪表板的总访问量。你会怎么做? 使用$__interval 代替1m。就是 Grafana 中显示的粒度或者分辨率,一般是自动设置的,但是可以通过查询选项中的Min stepMin time interval 调整最小值。 嘿,谢谢,但我计划跟踪一段时间内的访问次数(动态)而不是访问率。我该怎么做?正如您在我的问题中看到的那样,我的目标是绘制访问次数与时间的关系。 Grafana 时间范围被分割成区间。通常间隔会自动设置,具体取决于屏幕大小、分辨率等。但是您可以如上所述控制最小值。如前所述,使用sum(increase(dashboard_1_counter[$__interval]))。 ìncrease() 函数为您提供每个间隔的终点和起点之间的差异。而rate()只是“ncrease()”除以每个区间的时间跨度。 所以,绘制sum(increase(dashboard_1_counter[$__interval]))。 ìncrease()` 将为您提供每个时间间隔内的访问次数。但所有这一切的先决条件是,你的指标是一个计数器,而不是衡量标准。见sum(increase(dashboard_1_counter[1m]))。 ì增加()`。

以上是关于如何在 Prometheus 上显示一段时间内访问 Superset 仪表板的用户数?的主要内容,如果未能解决你的问题,请参考以下文章

获取一段时间内的总请求数

#yyds干货盘点#Prometheus 之 exporter 及查询持久性

如何在 Prometheus 查询中设置返回样本频率?

串口屏开发之历史曲线控件的使用总结——如何将传感器采集的温度数据在一段时间内的变化曲线显示在屏幕上

串口屏开发之历史曲线控件的使用总结——如何将传感器采集的温度数据在一段时间内的变化曲线显示在屏幕上

如何在很长一段时间内逐步向浏览器显示 HTML?