无法在 Prometheus 中找到指标
Can't found Metrics in Prometheus
我开发了一些 http 服务器,它以这种格式返回了一些指标
Some_Metrics{host="server01", key_="system.cpu.util.usage"} 3
Some_Metrics{host="server01", key_="vfs.fs.size[/data,free]"} 7016763392
Some_Metrics{host="server01", key_="system.uname"} Linux server01 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 03:09:40 PDT 2017 x86_64
Some_Metrics{host="server02", key_="system.cpu.util.usage"} 2
Some_Metrics{host="server02", key_="vfs.fs.size[/data,free]"} 6016763392
Some_Metrics{host="server02", key_="system.uname"} Linux server02 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 01:09:40 PDT 2017 x86_64
在prometheus.yml中的普罗米修斯
我添加了部分
- job_name: some_metrics
metrics_path: /metrics
static_configs:
- targets: ['server01:8001']
params:
collect[]:
- textfile
重新启动 Prometheus 服务器。
在日志模块中开始工作。
在我试图在 Prometheus 中找到新指标之后,但我什么也没找到....
使用了这个请求:
http://server01:9090/api/v1/query_range?query={host=%22server01%22}&start=1513629658.0&end=1513633258.0&step=60
http://server01:9090/api/v1/query_range?query=some_metrics&start=1513629658.0&end=1513633258.0&step=60
为什么我没有找到新指标?如何解决这个问题?
错误 no token found
表示解析服务的指标输出时出错。
我不确定这一点,但我认为您只能提供数字作为值,但您的 uname 系列发布了一个字符串:
Some_Metrics{host="server02", key_="system.uname"} Linux server02 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 01:09:40 PDT 2017 x86_64
提供此信息的常用方法是将其放入标签中:
Some_Metrics{host="server02", key_="system.uname", uname="Linux server02 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 01:09:40 PDT 2017 x86_64"}
而且您似乎是在自己编写指标数据。如果是这样,您还应该看看这些文档:
- https://prometheus.io/docs/instrumenting/writing_exporters/
- https://prometheus.io/docs/practices/naming/
编辑: 您还可以使用 promtool 验证指标。如果非要安装可以直接安装:
go install github.com/prometheus/prometheus/cmd/promtool
否则它应该是您的 Prometheus 发行版的一部分。
你必须通过 stdin 传递它,像这样:
$ promtool check metrics < so47876976
error while linting: text format parsing error in line 3: expected float as value, got "Linux"
或者直接使用curl验证端点:
$ curl server01:8001/metrics | promtool check metrics
这应该不会引发任何错误。如果此命令成功但抓取仍然不起作用,则存在不同的问题。
我开发了一些 http 服务器,它以这种格式返回了一些指标
Some_Metrics{host="server01", key_="system.cpu.util.usage"} 3
Some_Metrics{host="server01", key_="vfs.fs.size[/data,free]"} 7016763392
Some_Metrics{host="server01", key_="system.uname"} Linux server01 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 03:09:40 PDT 2017 x86_64
Some_Metrics{host="server02", key_="system.cpu.util.usage"} 2
Some_Metrics{host="server02", key_="vfs.fs.size[/data,free]"} 6016763392
Some_Metrics{host="server02", key_="system.uname"} Linux server02 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 01:09:40 PDT 2017 x86_64
在prometheus.yml中的普罗米修斯 我添加了部分
- job_name: some_metrics
metrics_path: /metrics
static_configs:
- targets: ['server01:8001']
params:
collect[]:
- textfile
重新启动 Prometheus 服务器。
在日志模块中开始工作。
在我试图在 Prometheus 中找到新指标之后,但我什么也没找到....
使用了这个请求:
http://server01:9090/api/v1/query_range?query={host=%22server01%22}&start=1513629658.0&end=1513633258.0&step=60
http://server01:9090/api/v1/query_range?query=some_metrics&start=1513629658.0&end=1513633258.0&step=60
为什么我没有找到新指标?如何解决这个问题?
错误 no token found
表示解析服务的指标输出时出错。
我不确定这一点,但我认为您只能提供数字作为值,但您的 uname 系列发布了一个字符串:
Some_Metrics{host="server02", key_="system.uname"} Linux server02 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 01:09:40 PDT 2017 x86_64
提供此信息的常用方法是将其放入标签中:
Some_Metrics{host="server02", key_="system.uname", uname="Linux server02 4.1.12-94.3.9.el7uek.x86_64 #2 SMP Fri Jul 24 01:09:40 PDT 2017 x86_64"}
而且您似乎是在自己编写指标数据。如果是这样,您还应该看看这些文档:
- https://prometheus.io/docs/instrumenting/writing_exporters/
- https://prometheus.io/docs/practices/naming/
编辑: 您还可以使用 promtool 验证指标。如果非要安装可以直接安装:
go install github.com/prometheus/prometheus/cmd/promtool
否则它应该是您的 Prometheus 发行版的一部分。
你必须通过 stdin 传递它,像这样:
$ promtool check metrics < so47876976
error while linting: text format parsing error in line 3: expected float as value, got "Linux"
或者直接使用curl验证端点:
$ curl server01:8001/metrics | promtool check metrics
这应该不会引发任何错误。如果此命令成功但抓取仍然不起作用,则存在不同的问题。