grafana - 从influxdb查询经纬度到grafana geomap
问题描述
我正在创建一个 Nginx 代理管理器监视器应用程序,以将请求位置显示到 grafana 地理地图中。
我可以解析 IP、纬度、经度和其他信息并将其发送到 InfluxDB2 实例中。简而言之,如下所示:
def _record_log_entry(self, logts, scheme, domain, ip):
country, city, latitude, longitude = self._get_location_from_ip(ip)
p = Point("Access") \
.tag('domain', domain) \
.tag('scheme', scheme) \
.field('ip', ip) \
.field('city', city) \
.field('country', country) \
.field('latitude', float(latitude)) \
.field('longitude', float(longitude)) \
.time(logts)
self._influxdb_write_api.write(bucket=self._cfg.influxdb.bucket, record=p)
现在我想显示这些位置以及已收到多少请求。通常,我想要一个这样的表:
latitude | longitude | n requests (in time interval)
我做了这样的事情:
from(bucket: "npm")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "Access")
|> filter(fn: (r) => r["_field"] == "ip" or r["_field"] == "latitude" or r["_field"] == "longitude")
|> group(columns: ["_field"])
|> aggregateWindow(every: v.windowPeriod, fn: count, createEmpty: false)
|> yield(name: "count")
但我只得到三个结果集:
Time | IP (n occurence)
Time | latitude (n occurence)
Time | longitude (n occurence)
关于如何做的任何想法?
解决方案
推荐阅读
- sql - 在 Presto 上添加两次相同的过滤器?
- regex - grep 在两个单词之间,这是 curl 命令的输出
- python - 当由 python 使用 f2py 调用时,fortran 矩阵乘积变慢
- javascript - 如何“取消引用”一个对象?
- sdkman - 使用 sdkman 切换到系统版本
- delphi - Firebird 使用生成的密钥更新或插入
- angular - 在 Firebase/Angular 应用程序中使用清晰的 API 后 MIME 类型错误
- vue.js - Vue核心UI针对不同用户的不同菜单
- haskell - Cabal 为 mac-os 失败安装 Wx
- android - 如何为 API < 21 的 EditText 焦点颜色着色?