是否可以向Java系统添加一些度量,该系统将作为受监控应用程序的字符串返回版本号?
我的目标是建立一个仪表板,其中监控Kubernetes集群中Docker容器中运行Java应用程序的每个pod,并查看每个Java应用程序的当前版本。
如果不可能,您是否知道如何从Java应用程序中获取这些信息,并使其在Grafana仪表板中可用?
在@Oliver思想的基础上,我添加了一个示例java类,该类在应用程序启动/准备就绪后将当前使用的应用程序版本、git分支和git提交id公开给Prometheus metricsendpoint。
这假设您有一个spring boot应用程序,其中启用了prometheus metrics作为执行器endpoint。
@Component
@RequiredArgsConstructor
public class PrometheusCustomMetricsService implements ApplicationListener<ApplicationReadyEvent> {
private static final int FIXED_VALUE = 1;
@Value("${info.project.version}")
private String applicationVersion;
private final MeterRegistry meterRegistry;
private final GitProperties gitProperties;
@Override
public void onApplicationEvent(@NonNull ApplicationReadyEvent event) {
registerApplicationInfoGauge();
}
private void registerApplicationInfoGauge() {
Tag versionTag = new ImmutableTag("application_version", applicationVersion);
Tag branchTag = new ImmutableTag("branch", gitProperties.getBranch());
Tag commitIdTag = new ImmutableTag("commit_id", gitProperties.getShortCommitId());
meterRegistry.gauge("application_info",
List.of(versionTag, branchTag, commitIdTag),
new AtomicInteger(FIXED_VALUE));
}
}
您的自定义度量应该在prometheusendpoint中显示如下内容:
application_info{application_version="1.2.3",branch="SOME-BRANCH-123",commit_id="123456"} NaN
我不担心application\u info gauge的值是NaN,因为我们不需要这个值,只将它用作发送标签的一种方式。
在您的应用程序中,您可以使用使用标签导出的量表度量,例如版本号或提交/生成哈希,然后将量表的值设置为1。
例如,这就是redis\u exporter导出redis实例信息的方式:
# HELP redis_instance_info Information about the Redis instance
# TYPE redis_instance_info gauge
redis_instance_info{addr="redis://localhost:6379",os="Linux 4.4.0-62-generic x86_64",redis_build_id="687a2a319020fa42",redis_mode="standalone",redis_version="3.0.6",role="master"} 1
您可以看到版本和几个其他属性导出为指标redis_instance_info
的标签。
+++ get:/ <<< success { "code":1, "msg":"恭喜您,API访问成功!", "data":{ "version":"1.0.0", "doc":"http://www.kancloud.cn/thinkcmf/cmf5api" } } +++
这是一个处理需要反复标记的问题的一个小技巧,以一个ACM形式的题目为例: 输入:第一行是一个数字N,表示N个case,之后每个case第一行是一个数字M,表示这个case有M个数字输入,接下来是M个数字,每个数字范围是0<=n<K 输出:对每个case,输出M个数字去重后的数量 当然,这题本身没什么难度,弄个hash_set就行了,不过为了说明问题,我们假定做题的人比较笨,使用bitmap: bm
本文向大家介绍PHP版本号,包括了PHP版本号的使用技巧和注意事项,需要的朋友参考一下 总是向PHP添加不同的功能和选项。尽管新版本通常不会产生太多的向后兼容性问题,但是编写谨慎的生产代码通常是明智的,您知道这些代码将在运行该语言稍旧版本的服务器上运行。 要检查当前使用的PHP版本,可以使用函数phpversion()或常量PHP_VERSION。函数和常量都返回一个包含版本号的字符串。可以使用两
软件的版本号由以下4部分组成: 主要版本号.次要版本号.版本状态码[.修订号] 应根据下面的约定使用这些部分: 主要版本:主要版本号不同,意味着本版本进行了大幅的本质修改,并且可能出现不同版本不兼容的问题。 次要版本:次要版本号不同,意味着功能的显著增强,但考虑了向后兼容性。 版本状态码:版本状态码包含了对当前版本的一些描述。它具体包含了以下信息: 发布状态。 0: 计划版(planned):计
我正试图在我的react-native android项目中升级gradle包装器版本。 我没有在Mac上安装gradle,我只是使用react-native附带的包装器,它是2.14.1版本。我想使用一个库,它要求年级4.4+,我遵循了官方教程。我马上就得到了这个问题。 我发现每当我键入时,它总是引用我的用户目录中的,尽管我已经指定要使用这是较新的版本。zip文件现在在我的项目包装器文件夹中,(
问题内容: 您如何使用既不使用自定义代码也不使用外部依赖关系(例如Shell脚本)的文件来编写: 生成格式major.minor.revision的内部版本号(例如 01.02.34 )。 在每次编译源代码时自动递增修订。 每次执行dist(ribution)任务时,都会自动增加次要版本。 另外: 提供增加主号码的选项。 提供增加小号的选项。 主编号递增时,次编号和修订版本号设置为0。 每当次要编