#prometheus #nushell-plugin #prometheus-metrics #plugin #nu

app nu_plugin_prometheus

用于查询 Prometheus 的 nushell 插件

4 个版本 (破坏性更新)

新版本 0.4.0 2024 年 8 月 9 日
0.3.0 2024 年 6 月 27 日
0.2.0 2024 年 6 月 15 日
0.1.0 2024 年 6 月 2 日

命令行工具 中排名第 166

每月下载量 39

MIT 和可能 CC-PDDC

81KB
2K SLoC

nu_plugin_prometheus

用于查询 Prometheus 的 nushell 插件

支持

  • nushell 0.96.1
  • Prometheus API
    • 即时查询
    • 范围查询
    • 目标状态
    • 系列
    • 标签名称
    • 标签值
  • 保存源以方便使用或相互 TLS 验证

用法

可以使用 --url 直接查询 Prometheus 插件

"up" | prometheus query --source https://test.prometheus.example/

可以使用 nushell 插件配置来保存配置 Prometheus 源,包括 mTLS。

$env.config.plugins.prometheus = {
  sources: {
    prod: {
      url: "https://prod.prometheus.example/"
      cert: ( $env.HOME | path join ".config/nu_plugin_prometheus/user.crt" )
      key: ( $env.HOME | path join ".config/nu_plugin_prometheus/user.pk8.key" )
      cacert: ( $env.HOME | path join ".config/nu_plugin_prometheus/ca.crt" )
    }
  }
}

密钥必须是 PKCS#8 格式。您可以使用以下命令将 PEM 密钥转换为 PKCS#8 格式:

openssl pkcs8 -topk8 -inform PEM -outform DER -in user.key -out user.pk8.key

使用 --source-s 使用配置的源

"up" | prometheus query --source prod

查询

即时

将 Prometheus 查询管道传递到 prometheus query 以进行即时查询

"up" | prometheus query --url https://prometheus.example:9090/

这将输出一个表格

名称 标签 时间戳
状态 {job: prometheus, instance: prometheus.example:9090} 1 1435781451
状态 {job: node, instance: prometheus.example:9100} 0 1435781451

范围

范围查询需要 --start--end--step 参数

"up" | prometheus query range --url https://prometheus.example:9090/ --start ((date now) - 30sec) --end (date now) --step 15sec
名称 标签
状态 {job: prometheus, instance: prometheus.example:9090} [{value: 1, timestamp: 1435781430}, {value: 1, timestamp: 1435781445} {value: 1, timestamp: 1435781460}]
状态 {job: node, instance: prometheus.example:9100} [{value: 0, timestamp: 1435781430}, {value: 0, timestamp: 1435781445} {value: 1, timestamp: 1435781460}]

展开标签

添加 --flatten 将标签展开到每一行。

"up" | prometheus query --url https://prometheus.example:9090/ --flatten

输出

名称 实例 任务 时间戳
状态 prometheus.example:9090 prometheus 1 1435781451
状态 prometheus.example:9100 任务 0 1435781451

如果度量使用 "name" 作为标签,它将覆盖 "name" 列。

对于范围查询,值不会展开。

标签名称

使用以下方式检索标签名称

prometheus label names --url https://prometheus.example:9090/

标签名称可以通过选择器作为输入进行过滤,并通过 --start--end 作为时间进行过滤。

查询 "up" 标签名称

"up" | prometheus label names --url https://prometheus.example:9090/

标签值

使用以下方式检索标签值

"version" | prometheus label values --url https://prometheus.example:9090/

标签值可以通过名称作为输入进行过滤,通过 --start--end 作为时间进行过滤,并通过额外参数作为选择器进行过滤。

查询 "postgres" 任务的 "version" 标签值

"version" | prometheus label values --url https://prometheus.example:9090/ 'job="postgres"'

度量元数据

使用以下方式检索度量元数据

prometheus metric metadata --url https://prometheus.example:9090/

这可能需要一些时间,因此请提供指标名称作为输入,或者提供 --limit 来减少检索的记录数。使用 --limit-per-metric 来减少每个指标检索的元数据项数。

系列

使用以下命令检索与给定标签集匹配的系列:

[up process_start_time_seconds{job="prometheus"}] |
prometheus series -s home

系列通过输入的选择器检索。检索到的系列可以通过 --start--end 根据时间进行过滤。

目标

使用以下命令检索 Prometheus 目标发现:

prometheus targets --url https://prometheus.example:9090/

这检索了处于活动或已删除状态的目标。使用 any 参数也会检索这两种状态。

使用 activedropped 直接过滤活动或已删除的目标。这将仅输出所选状态。

依赖关系

~30–64MB
~1M SLoC