文档文档

使用 HTTP 输入插件收集 Citi Bike 数据

本示例将指导您如何使用 Telegraf HTTP 输入插件收集纽约市 Citi Bike 站点上的实时指标。实时站点数据直接以 JSON 格式从 Citi Bike 提供。

要使以下示例正常工作,请配置 influxdb_v2 输出插件。该插件允许 Telegraf 将指标写入 InfluxDB。

在 Telegraf 配置文件中配置 HTTP 输入插件

要从 Citi Bike URL 端点检索数据,请在 Telegraf 配置文件中启用 inputs.http 输入插件。

指定以下选项

urls

要从中读取指标的一个或多个 URL。在本示例中,请使用 https://gbfs.citibikenyc.com/gbfs/en/station_status.json

data_format

Telegraf 将要摄取的数据在 HTTP 端点中的格式。在本示例中,请使用 JSON。

向 Telegraf 配置添加解析器信息

指定以下特定于 JSON 的选项。在本示例中,我们使用 objects 子表从 JSON 对象收集数据。

JSON

path

要解析 JSON 对象,请将 path 选项设置为 GJSON 路径。查询结果应包含 JSON 对象或对象数组。GJSON 游乐场 是检查查询的非常有用的工具。

标签 (tags)

应添加为标签的一个或多个 JSON 键的列表。在本示例中,我们将使用标签键 station_id

timestamp_key

JSON 文件中用于创建时间戳指标的键。在本例中,我们希望使用最后报告站点数据的,即 last_reported 的时间。如果您不指定键,Telegraf 读取数据的时间将成为时间戳。

timestamp_format

用于解释指定的 timestamp_key 的格式。本示例中的 last_reported 时间以 Unix 格式报告。

示例配置

[[inputs.http]]
# URL for NYC's Citi Bike station data in JSON format
urls = ["https://gbfs.citibikenyc.com/gbfs/en/station_status.json"]

# Overwrite measurement name from default `http` to `citibikenyc`
name_override = "citibike"

# Exclude url and host items from tags
tagexclude = ["url", "host"]

# Data from HTTP in JSON format
data_format = "json_v2"


      # Add a subtable to use the `json_v2` parser
      [[inputs.http.json_v2]]

          # Add an object subtable for to parse a JSON object
          [[inputs.http.json_v2.object]]

              # Parse data in `data.stations` path only
              path = "data.stations"

              #Set station metadata as tags
              tags = ["station_id"]

              # Latest station information reported at `last_reported`
              timestamp_key = "last_reported"

              # Time is reported in unix timestamp format
              timestamp_format = "unix"

启动 Telegraf 并验证数据是否出现

启动 Telegraf 服务.

要测试数据是否已发送到 InfluxDB,请运行以下命令(将 telegraf.conf 替换为您的配置文件路径)

telegraf -config ~/telegraf.conf -test

此命令应返回与以下类似的行协议

citibike,station_id=4703 eightd_has_available_keys=false,is_installed=1,is_renting=1,is_returning=1,legacy_id="4703",num_bikes_available=6,num_bikes_disabled=2,num_docks_available=26,num_docks_disabled=0,num_ebikes_available=0,station_status="active" 1641505084000000000
citibike,station_id=4704 eightd_has_available_keys=false,is_installed=1,is_renting=1,is_returning=1,legacy_id="4704",num_bikes_available=10,num_bikes_disabled=2,num_docks_available=36,num_docks_disabled=0,num_ebikes_available=0,station_status="active" 1641505084000000000
citibike,station_id=4711 eightd_has_available_keys=false,is_installed=1,is_renting=1,is_returning=1,legacy_id="4711",num_bikes_available=9,num_bikes_disabled=0,num_docks_available=36,num_docks_disabled=0,num_ebikes_available=1,station_status="active" 1641505084000000000

现在,您可以在 InfluxDB 中探索和查询 Citi Bike 数据。下面的示例是一个 Flux 查询和可视化,显示了过去 15 分钟内可用自行车的数量。

Citi Bike visualization


此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2