用于解析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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 608042ba4141cd66c485e939d97d1cb00b7e885edbf705fb865929b5aacbafb5 |
|
MD5 | c93b8afd2bbb965a85d68a1edfee62cb |
|
BLAKE2b-256 | 9d704f275586f76c042ae61f252f3436101feeabdd7f612d6072c941fc5a2dfb |
firestealer-0.5.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb32566d7c9843470130c42e5de79b16e0b89604ed4ba08d87f3414b53bc794d |
|
MD5 | 643041efc200392532a88b66d9b837df |
|
BLAKE2b-256 | 27b75cfbcdffe7628a3cd044f435e19b0e1d763deba6b544e40376e0cbd7efa4 |