追逐天空:使用InfluxDB监控航班

导航到

我们正处于一个每个动作都被监控的时代,粉丝追踪泰勒·斯威夫特的生活方式。虽然有些人梦想在3万英尺高空遇到名人,但航空爱好者和技术专业人士对航班流量和监控的前景更为广阔。

Enter InfluxDB,这个强大的时间序列数据库正在改变我们实时监控航班的方式。无论是关注流行歌星的私人飞机,还是确保商业航班按时运行,InfluxDB都能以前所未有的方式提供航空数据的洞察力。

在这篇博客文章中,我们将学习如何利用FlightAwareInfluxDB Cloud 3.0来监控私人/通用航空和机场延误。然后,我们将使用Grafana构建航班监控仪表板。在此找到相应的repo

要求

要运行此示例,您需要以下内容

您还需要从您的InfluxDB和FlightAware账户收集认证凭证。按照以下文档了解如何获取这些凭证的更多信息

请注意,InfluxDB Cloud 3.0提供免费层,但您需要为Standard FlightAware层付费才能访问该API。然而,您也可以利用存储库中的测试JSON文件和测试Python脚本来尝试这个示例,而无需为FlightAware的实时数据付费。

使用InfluxDB v3 Python客户端库获取航班数据

这个示例的核心是一个Python脚本,flightAware.py。这个Python脚本使用FlightAware AeroAPI和InfluxDB(一个时间序列数据库),在特定地理边界内持续监控和收集航班数据。脚本每5分钟获取一次实时航班数据。以下是其主要组件的分解

  1. 环境和库:首先,我们导入所有库和模块,例如os、requests、pandas和influxdb_client_3。我们还导入datetime、timezone和用于安全处理敏感信息(如API密钥)的自定义secret模块。
  2. 配置变量:接下来,我们设置数据库(db)、组织(org)和API(url)配置的变量。我们使用环境变量和一个自定义的secret.py文件检索认证令牌(token)和API密钥(apikey)。此示例假设您已创建secret.py并将凭证存储在其中。
  3. 配置InfluxDB v3 Python客户端:我们使用指定的主机URL、令牌和组织详细信息初始化InfluxDBClient3对象以进行数据存储。
python
influxdbClient = InfluxDBClient3(host=url, token=token, org=org)
  1. API配置和头信息:使用API密钥定义FlightAware AeroAPI端点和认证头。指定API请求的参数,包括用于飞行跟踪的地理边界框和返回页面的数量限制。
  2. 时间转换函数:包括convert_to_utc函数以确保所有时间戳都是UTC。这有助于在Grafana中更容易地管理和可视化数据。
  3. 数据收集的主循环:这个执行永久循环,向FlightAware AeroAPI发送请求以获取指定参数内的航班数据。它还检查响应是否成功并提取航班详情,特别是忽略未声明目的地的航班。对于每个有效的航班,它构建一个详细字典,包括航班标识符、时间、地理坐标和其他相关航班数据。脚本还处理航路点,仅提取第一个和最后一个以简化。
  4. 数据处理和存储:在这里,我们将所有收集的航班数据合并到单个字典中,并将其转换为Pandas DataFrame。然后,我们将此DataFrame写入InfluxDB,指定测量和标记配置。
python
 for d in flight_data:
                        merged_data.update(d)
                    flight_df = pd.DataFrame([merged_data])
                    flight_df['timestamp'] = flight_df['last_position']
                    influxdbClient._write_api.write(bucket=db, record=flight_df, data_frame_measurement_name='flight', data_frame_tag_columns=['ident', 'fa_flight_id'], data_frame_timestamp_column='timestamp')

在Grafana中可视化航班数据

现在您可以将FlightAware Grafana仪表板JSON导入到Grafana中,以构建飞行监控仪表板。有关在Grafana中从JSON导入仪表板的信息,请参阅此文档。要从InfluxDB Cloud 3.0免费层账户查询数据,利用Grafana InfluxDB v3数据源

在这里,我们可以通过仪表板左上角的地图看到我们特定区域的飞机。例如,我们关注的是拉斯维加斯。我们还可以查看飞机类型、目的地城市和出发城市(右上角的面板)。我们还监控平均海拔、空中飞行次数和平均地面速度等统计数据。我们还拥有一个飞机地面速度时间序列可视化,以查看飞机的起降过程。

我对不同飞机的了解不多,但我想象大型飞机的着陆和起飞速度更陡峭。最后,我们还通过主要航空公司可视化航班,当时西南航空在拉斯维加斯的航班最多。

附加资源和结论

我们希望这个教程能帮助您开始使用InfluxDB可视化飞行数据。我们还希望鼓励您查看以下相关资源,以了解更多关于如何使用InfluxDB与Grafana和Python结合的信息。

注意:这个演示的另一个有趣之处在于,InfluxData的DevRel团队可以完全使用Github Actions运行它,因此如果您在会议展位上看到InfluxData正在运行这个演示,那么很可能我们是在远程运行。

一如既往,从这里开始使用InfluxDB Cloud 3.0。如果您需要帮助,请联系我们的社区网站Slack频道