Prometheus 无法提取配置的指标
Prometheus not able to pull configured metrics
我配置了 prometheus.yml 文件
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds.
Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is
every 1 minute.
# scrape_timeout is set to the global default (10s).
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'example-random'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:8090']
labels:
group: 'dummy'
并向 prometheus 注册了一个指标
public class PrometheusMetricsServlet extends MetricsServlet {
private static final Gauge emailCount = Gauge.build().name("email_count")
.help("Number of emails sent by the user")
.register();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setStatus(200);
emailCount.set(54);
}
}
然后在web.xml
中配置了一个servlet
<servlet>
<servlet-name>PrometheusServlet</servlet-name>
<servlet-class>prometheusSpike.PrometheusMetricsServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PrometheusServlet</servlet-name>
<url-pattern>/metrics</url-pattern>
</servlet-mapping>
目标的状态显示 UP,最后一次抓取发生在几秒钟前,但该指标未反映在 prometheus 中。
如何才能让 prometheus 从目标中提取配置的指标?
当您覆盖 doGet
时,您阻止了公开指标的代码 运行。按原样使用 MetricsServlet,您将看到您的指标。
我配置了 prometheus.yml 文件
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds.
Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is
every 1 minute.
# scrape_timeout is set to the global default (10s).
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'codelab-monitor'
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'example-random'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 5s
static_configs:
- targets: ['localhost:8090']
labels:
group: 'dummy'
并向 prometheus 注册了一个指标
public class PrometheusMetricsServlet extends MetricsServlet {
private static final Gauge emailCount = Gauge.build().name("email_count")
.help("Number of emails sent by the user")
.register();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setStatus(200);
emailCount.set(54);
}
}
然后在web.xml
中配置了一个servlet<servlet>
<servlet-name>PrometheusServlet</servlet-name>
<servlet-class>prometheusSpike.PrometheusMetricsServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>PrometheusServlet</servlet-name>
<url-pattern>/metrics</url-pattern>
</servlet-mapping>
目标的状态显示 UP,最后一次抓取发生在几秒钟前,但该指标未反映在 prometheus 中。
如何才能让 prometheus 从目标中提取配置的指标?
当您覆盖 doGet
时,您阻止了公开指标的代码 运行。按原样使用 MetricsServlet,您将看到您的指标。