java - 如何通过默认端点 /metrics 覆盖 prometheus
问题描述
我正在尝试使用 prometheus httpserver (io.prometheus.client.exporter.HTTPServer) 公开指标,我在给定的依赖项下使用它。
<dependency>
<groupId>io.prometheus</groupId>
<artifactId>simpleclient_httpserver</artifactId>
<version>0.2.0</version>
</dependency>
Prometheus httpserver 默认公开“/metrics”端点中的所有指标,我想覆盖它并限制它仅公开任何特定端点的指标(如“/prometheusMetrics”)。使用下面的代码,我运行 prometheus httpserver 并公开指标。
@ServiceBean(singleton = true)
public class PrometheusCustomHTTPServer {
private static Logger s_logger = LoggerFactory.getLogger(PrometheusCustomHTTPServer.class);
private HTTPServer httpServer;
private static CollectorRegistry registry = CollectorRegistry.defaultRegistry;
private static boolean initailized = false;
@PostConstruct
public void start() {
if(httpServer == null) {
String hostAddress;
try {
int port = 9090;
httpServer = new HTTPServer(port,true);
s_logger.error("started prometheus at http://"+port);
} catch (IOException e) {
System.out.println("Exception occured while starting of prometheus server" + e);
}
initialize(registry);
}
}
private static synchronized void initialize(CollectorRegistry registryToUse) {
if(!initailized) {
new StandardExports().register(registry);
new MemoryPoolsExports().register(registry);
new GarbageCollectorExports().register(registry);
new ThreadExports().register(registry);
new ClassLoadingExports().register(registry);
System.out.println("StandardExports initialized");
initailized = true;
}
}
}
解决方案
您正在更改客户端配置,但这还不够。您还应该更新 Prometheus“服务器端”配置的抓取端点。
默认情况下分配给已抓取指标的作业名称。工作名称:<工作名称>
# 从这项工作中抓取目标的频率。[scrape_interval:| 默认 = <global_config.scrape_interval> ]
抓取此作业时的每次抓取超时。[刮超时:| 默认 = <global_config.scrape_timeout> ]
# 从目标获取指标的 HTTP 资源路径。 [指标路径:| 默认 = /指标]
推荐阅读
- wordpress - 将博客文章固定/粘贴到 Wordpress 页面顶部(不是主页)
- python - 使用两个字典中的值搜索键并在 Python 中输出匹配的键
- c# - 如果 DataGridView 已经为空,如何防止用户删除行?
- java - 无法从 NDK 项目中的 android_main 调用任何 JNI 功能
- javascript - 初始化 FB Pixel 后如何使用其他信息更改高级匹配个人信息?
- php - 迁移错误是错误 1045
- neo4j - 是否可以为一台 neo4j 主机配置多个 Graphite 端点
- java - Maven:未经请求的 jar 污染了我的 lib 文件夹
- java - Intellij 新项目 - JDK 不可用
- macos - 如果端口 443 关闭,Mac OS High Sierra 如何连接到 https