跳转到主要内容

用于解析Prometheus指标的命令行工具

项目描述

Prometheus端点解析和过滤指标,以便它们可以可视化、存储到InfluxDB或用作Juju charm指标。

安装

运行pip install firestealer。这将使fsteal命令可用。

CLI

从Prometheus端点打印JSON格式的样本

$ fsteal http://localhost:8000/metrics

使用正则表达式根据样本名称过滤指标

$ fsteal http://localhost:8000/metrics -m '^myservice(Downloads|Uploads)'

将样本存储到InfluxDB中

$ fsteal localhost:8000/metrics influxdb://user:passwd@10.0.0.1:8086/mydb

将样本的子集存储到InfluxDB中

$ fsteal localhost:8000/metrics influxdb://user:passwd@10.0.0.1:8086/mydb -m '^myservice'

在上面的示例中,InfluxDB连接信息使用一个influxdb://$user:$passwd@$host:$port/$database连接字符串提供。

仅打印特定的指标值(当执行fsteal以检索charm指标时很有用)

$ fsteal localhost:8000/metrics a-single-specific-key --format values-only

API使用

暴露了一个API,以便firestealer可以从Python应用程序中使用作为库。例如,一个charm可以使用以下片段在collect-metrics钩子中将Prometheus指标传播到Juju

from firestealer import (
    add_metrics,
    retrieve_metrics,
)

url = 'https://localhost:8000/metrics'
with open('metrics.yaml') as f:
    metrics = yaml.safe_load(f)
samples = retrieve_metrics(url, metrics, noverify=True)
add_metrics(samples)

类似地,要写入相关样本到InfluxDB,可以使用以下片段

from firestealer import (
    retrieve_metrics,
    write_to_influx,
)

url = 'https://localhost:8000/metrics'
with open('metrics.yaml') as f:
    metrics = yaml.safe_load(f)
samples = retrieve_metrics(url, metrics)
write_to_influx('user:passwd@1.2.3.4/dbname', samples)

API参考

add_metrics(samples)

将给定的样本作为指标添加到Juju。

此函数假设PATH中存在一个add-metric可执行文件。

retrieve_metrics(url, metrics, noverify=False)

从给定的Prometheus URL检索给定指标的数据样本。

如果无法检索数据样本,则抛出firestealer.PrometheusError。

仅返回名称包含在给定metrics对象中的样本,metrics对象是解码后的metrics.yaml内容。样本名称根据提供的指标进行重命名。如果noverify为True,则不验证URL证书。

retrieve_samples(url, regex='', prefix='', noverify=False)

从给定的Prometheus URL检索并返回样本。

如果无法检索数据样本,则抛出firestealer.PrometheusError。

仅返回名称与给定regex匹配的样本。如果提供前缀,则将其包含在结果样本名称中。如果noverify为True,则不验证URL证书。

samples_to_points(samples)

将样本转换为InfluxDB点。

仅包括具有实际值的样本在结果列表中。

text_to_samples(text, regex='', prefix='')

解析给定的指标文本并返回一系列样本。

仅返回名称与给定regex匹配的样本。如果提供前缀,则将其包含在结果样本名称中。

write_to_influx(conn_string, samples)

将给定样本写入给定连接字符串的InfluxDB。

连接字符串的形式为“$user:$passwd@$host:$port/$database”。如果连接字符串格式不正确或无法与InfluxDB通信,则抛出firestealer.InfluxError。

Sample = namedtuple('Sample', ['name', 'tags', 'value'])

样本表示Prometheus的单个键/值度量。

项目详情


下载文件

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

源分发

firestealer-0.5.0.tar.gz (9.4 kB 查看哈希值)

上传时间

构建分发

firestealer-0.5.0-py3-none-any.whl (9.1 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面