使用HTTP输入插件与Citi Bike数据
此示例演示了如何使用Telegraf HTTP输入插件收集纽约市Citi Bike站点的实时指标。实时站点数据可直接从Citi Bike以JSON格式获取。
要使以下示例正常工作,请配置 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特定选项。在本例中,我们使用对象子表从JSON Objects中收集数据。
JSON
path
要解析一个 JSON 对象,使用 path 选项设置一个 GJSON 路径。查询的结果应包含一个 JSON 对象或一个对象数组。GJSON playground 是检查您的查询的一个非常有用的工具。
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并验证数据是否出现
要测试数据是否正在发送到 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 分钟内可用自行车的数量。
