文档文档

usage.from() 函数

usage.from() 是实验性的,并且随时可能更改

usage.from()InfluxDB Cloud 组织返回使用情况数据。

输出数据模式

  • http_request 测量
    • req_bytes 字段
    • resp_bytes 字段
    • org_id 标签
    • endpoint 标签
    • status 标签
  • query_count 测量
    • req_bytes 字段
    • endpoint 标签
    • orgID 标签
    • status 标签
  • storage_usage_bucket_bytes 测量
    • gauge 字段
    • bucket_id 标签
    • org_id 标签
函数类型签名
(
    start: A,
    stop: B,
    ?host: string,
    ?orgID: string,
    ?raw: C,
    ?token: string,
) => stream[D] where D: Record

有关更多信息,请参阅函数类型签名

参数

start

(必需) 结果中包含的最早时间。

stop

(必需) 结果中包含的最晚时间。

host

InfluxDB Cloud 区域 URL。 默认为 ""

(如果在您的 InfluxDB Cloud 组织或区域之外执行,则为必需).

orgID

InfluxDB Cloud 组织 ID。 默认为 ""

(如果在您的 InfluxDB Cloud 组织或区域之外执行,则为必需).

token

InfluxDB Cloud API 令牌。 默认为 ""

(如果在您的 InfluxDB Cloud 组织或区域之外执行,则为必需).

raw

返回原始的、高分辨率的使用情况数据,而不是降采样的使用情况数据。 默认为 false

usage.from() 可以查询以下时间范围

数据分辨率最大时间范围
raw1 小时
降采样30 天

示例

查询您的 InfluxDB Cloud 组织的降采样使用情况数据

import "experimental/usage"
import "influxdata/influxdb/secrets"

token = secrets.get(key: "INFLUX_TOKEN")

usage.from(start: -30d, stop: now())

查询您的 InfluxDB Cloud 组织的原始使用情况数据

import "experimental/usage"
import "influxdata/influxdb/secrets"

token = secrets.get(key: "INFLUX_TOKEN")

usage.from(start: -1h, stop: now(), raw: true)

查询不同的 InfluxDB Cloud 组织的降采样使用情况数据

import "experimental/usage"
import "influxdata/influxdb/secrets"

token = secrets.get(key: "INFLUX_TOKEN")

usage.from(
    start: -30d,
    stop: now(),
    host: "https://us-west-2-1.aws.cloud2.influxdata.com",
    orgID: "x000X0x0xx0X00x0",
    token: token,
)

查询到 /api/v2/write 端点的请求中的字节数

import "experimental/usage"

usage.from(start: -30d, stop: now())
    |> filter(fn: (r) => r._measurement == "http_request")
    |> filter(fn: (r) => r._field == "req_bytes")
    |> filter(fn: (r) => r.endpoint == "/api/v2/write")
    |> group(columns: ["_time"])
    |> sum()
    |> group()

查询从 /api/v2/query 端点返回的字节数

import "experimental/usage"

usage.from(start: -30d, stop: now())
    |> filter(fn: (r) => r._measurement == "http_request")
    |> filter(fn: (r) => r._field == "resp_bytes")
    |> filter(fn: (r) => r.endpoint == "/api/v2/query")
    |> group(columns: ["_time"])
    |> sum()
    |> group()

查询 InfluxDB Cloud 查询端点的查询计数

以下查询返回以下查询端点的查询计数

  • /api/v2/query:Flux 查询
  • /query:InfluxQL 查询
import "experimental/usage"

usage.from(start: -30d, stop: now())
    |> filter(fn: (r) => r._measurement == "query_count")
    |> sort(columns: ["_time"])

将使用情况指标与组织使用限制进行比较

以下查询将写入和查询 InfluxDB Cloud 组织的数据量与组织的速率限制进行比较。 它将一个 limitReached 列附加到每一行,以指示是否超过了速率限制。

import "experimental/usage"

limits = usage.limits()

checkLimit = (tables=<-, limit) =>
    tables
        |> map(fn: (r) => ({r with _value: r._value / 1000, limit: int(v: limit) * 60 * 5}))
        |> map(fn: (r) => ({r with limitReached: r._value > r.limit}))

read =
    usage.from(start: -30d, stop: now())
        |> filter(fn: (r) => r._measurement == "http_request")
        |> filter(fn: (r) => r._field == "resp_bytes")
        |> filter(fn: (r) => r.endpoint == "/api/v2/query")
        |> group(columns: ["_time"])
        |> sum()
        |> group()
        |> checkLimit(limit: limits.rate.readKBs)

write =
    usage.from(start: -30d, stop: now())
        |> filter(fn: (r) => r._measurement == "http_request")
        |> filter(fn: (r) => r._field == "req_bytes")
        |> filter(fn: (r) => r.endpoint == "/api/v2/write")
        |> group(columns: ["_time"])
        |> sum()
        |> group()
        |> checkLimit(limit: limits.rate.writeKBs)

union(tables: [read, write])

此页面是否有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。 您可以像现在一样继续使用它,而无需对代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。 更快地扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速的最新数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。 InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。 InfluxDB 3 Enterprise 的免费层可供非商业家用或业余爱好者使用。

有关更多信息,请查看