【问题标题】:Correct schema design for InfluxDB for use with Grafana?与 Grafana 一起使用的 InfluxDB 的正确架构设计?
【发布时间】:2021-03-07 17:56:00
【问题描述】:

我设置了各种安全摄像头,以便在检测到运动时触发。然后一个程序从相机中抓取一张静止图像,通过一些深度学习的东西运行它,并尝试对图像中的各种对象进行分类。然后我将对象分类的结果记录到 InfluxDB 中,这样我就可以使用 Grafana 浏览各种对象的检测频率、不同对象的分类置信度等。相机每天处理和分类几千个运动事件。

这是演示我的架构的 Python 代码的 sn-p:

event_name = "object_detection"
camera_name = "front"
label = "person"

json_body = [{
'measurement': event_name,
'tags': {
    'camera': camera_name,
    'label': label,
},
'time': data['timestamp'],
'fields': {
    'confidence': prediction['confidence'],
    'min_confidence': prediction['min_confidence'],
    'alert': prediction['alert'],
    'y_min': prediction['y_min'],
    'x_min': prediction['x_min'],
    'y_max': prediction['y_max'],
    'x_max': prediction['x_max'],                
}
}]

我遇到的问题是我无法(轻松)在 Grafana 中查询这些数据——我只是得到一个空数据集。但是,如果我在查询检查器中向下钻取,我确实会看到数据。它只是重度嵌套。

我不知道我在 InfluxDB 或 Grafana 中做错了什么?有趣的是,InfluxDB Python 库使用了这个example schema in the docs

>>> json_body = [
    {
        "measurement": "cpu_load_short",
        "tags": {
            "host": "server01",
            "region": "us-west"
        },
        "time": "2009-11-10T23:00:00Z",
        "fields": {
            "value": 0.64
        }
    }
]

所以现在我很困惑?我应该将每个字段值分解为它自己的数据点吗?这将使在 Grafana 中的查询更容易,但似乎是一个低效的解决方案。最好的选择是什么?

【问题讨论】:

    标签: python grafana influxdb


    【解决方案1】:

    数据架构看起来很完美。只有 Grafana 查询可能是个问题。但我不确定您要查询什么。看起来您正试图找到每小时置信度最大值。因此,在您没有任何匹配记录的情况下,InfluxDB 返回null 是正常的。如果要自定义该行为,请使用填充。文档:https://docs.influxdata.com/influxdb/v1.8/query_language/explore-data/#group-by-time-intervals-and-fill

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2017-04-19
      • 2018-07-08
      • 1970-01-01
      相关资源
      最近更新 更多