跳转到主要内容

通过IPython访问InfluxDB

项目描述

https://circleci.com/gh/bonitoo-io/ipython-flux.svg?style=svg
作者:

Robert Hajek, Bonitoo.io

引入了 %flux (或 %%flux) 魔法。

通过IPython或IPython Notebook连接到InfluxDB并运行Flux命令。

screenshot of ipython-flux in the Notebook

示例

In [1]: %load_ext flux

In [2]: %%flux http://localhost:9999 --token "my-token" --org my-org
   ...: from(bucket: "apm_metricset")
   ...:   |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
   ...:   |> filter(fn: (r) => r["_measurement"] == "apm_metricset")
   ...:   |> filter(fn: (r) => r["_field"] == "samples_system.process.cpu.total.norm.pct")
   ...:
Out[2]: ...

第一次连接后,可以省略连接信息

In [3]: %flux
   ...: from(bucket: "apm_metricset")
   ...:   |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
   ...:   |> filter(fn: (r) => r["_measurement"] == "apm_metricset")
   ...:   |> filter(fn: (r) => r["_field"] == "samples_system.process.cpu.total.norm.pct")

Out[8]: ...

如果没有提供连接字符串,%flux 将使用环境变量 INFLUXDB_V2_URLINFLUXDB_V2_ORGINFLUXDB_V2_TOKEN 来创建到InfluxDB的连接。

常规IPython赋值适用于单行 %flux 查询

In [12]: result = %flux from(bucket: "my-bucket")  |> range(start: 0)

<< 运算符将查询结果捕获到局部变量中,并可用于多行 %%flux

In [19]: %%flux my_dataset <<
    ...: from(bucket: "my-bucket")
    ...: |> range(start: -30m)
    ...: |> filter(fn: (r) => r["_measurement"] == "cpu")
    ...: |> filter(fn: (r) => r["_field"] == "usage_idle" or r["_field"] == "usage_system" or r["_field"] == "usage_user")
    ...: |> filter(fn: (r) => r["cpu"] == "cpu-total")
    ...: |> drop(columns: ["_start", "_stop", "_result", "_measurement", "table", "_result"])
    ...: |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")

Flux命令的结果将自动转换为Pandas数据框。通常使用Flux函数 fieldsAsCol()pivot() 将包含多个时间序列的数据转换为单个数据集很有用。

持久化数据框

使用内存中DataFrame对象的名称的--persist参数将在数据库中创建一个从命名DataFrame生成的测量。

In [1]: %flux --persist <data_frame_variable_name> --bucket my-bucket --measurement <new measurement name> --tags tag_column1,tag_column2

选项

-l / --connections

列出所有活动连接

-t / --token

InfluxDB令牌

-o / --org

InfluxDB组织

--timeout

InfluxDB查询超时(以毫秒为单位,默认超时为10_000毫秒)

-f / --file <路径>

从该路径运行Flux文件

-x / --close <会话名称>

关闭命名连接

持久化选项

-p / --persist

从命名DataFrame创建数据库中的测量

-b / --bucket

目标存储桶名称

-T / --tags

以逗号分隔的列列表,这些列将存储为标签,其余列将存储为字段

-m / --measurement

可选的,目标测量名称,如果未指定,则从DataFrame名称中获取测量

安装

使用以下命令安装最新版本

pip install ipython-flux

或从https://github.com/bonitoo-io/ipython-flux下载,并

cd ipython-flux
sudo python setup.py install

使用以下命令在Jupyter笔记本中启用IPython flux魔法扩展

In [1]: %load_ext flux

开发

https://github.com/bonitoo-io/ipython-flux

新闻

0.0.6

发布日期:2022-11-06

  • #5 - 修复setup.py格式化

0.0.5

发布日期:2022-03-25

  • #2 - 添加连接超时

  • #3 - 将默认InfluxDB端口从9999更改为8086,更新依赖项

0.0.4

发布日期:2020-08-18

  • #1:修复以“-”开头的令牌参数

0.0.3

发布日期:2020-08-12

  • 更新tox.ini和要求依赖项

0.0.2

发布日期:2020-08-06

  • 修复从环境变量创建连接

  • 添加将DataFrame持久化到InfluxDB的功能

0.0.1

发布日期:2020-07-21

  • 初始版本

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

ipython-flux-0.0.6.tar.gz (9.5 kB 查看哈希)

上传时间:

构建分发

ipython_flux-0.0.6-py3-none-any.whl (8.4 kB 查看散列值)

上传时间 Python 3

由以下支持