Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 普罗米修斯出口商-过滤目标_Go_Prometheus_Exporter - Fatal编程技术网

Go 普罗米修斯出口商-过滤目标

Go 普罗米修斯出口商-过滤目标,go,prometheus,exporter,Go,Prometheus,Exporter,我正在编写一个in-Go来公开从AIX服务器推送的度量。AIX服务器将它们的度量(json格式)推送到一个中央侦听器(导出程序),该侦听器将它们转换为标准的Prometheus度量,并将它们公开以进行刮取 我遇到的问题是,度量的主机名是从推送的json中提取的。我将其存储为每个度量中的标签。例如,njmon_memory_free{lpar=“myhostname”}。虽然这是可行的,但并不理想,因为似乎没有办法将其重新标记到通常的实例标签(njmon_memory_free{instance=

我正在编写一个in-Go来公开从AIX服务器推送的度量。AIX服务器将它们的度量(json格式)推送到一个中央侦听器(导出程序),该侦听器将它们转换为标准的Prometheus度量,并将它们公开以进行刮取

我遇到的问题是,度量的主机名是从推送的json中提取的。我将其存储为每个度量中的标签。例如,njmon_memory_free{lpar=“myhostname”}。虽然这是可行的,但并不理想,因为似乎没有办法将其重新标记到通常的
实例
标签(njmon_memory_free{instance=“myhostname”}。普罗米修斯重新标记发生在刮取之前,因此不需要重新标记lpar标签


一种选择似乎是重写导出器,以便Prometheus服务器探测定义的目标,每个目标都是lpar。为了实现这一点,我需要一种方法来按lpar过滤存储的度量,以便只返回与目标/lpar相关的度量。这是一种实用的解决方案,还是我必须创建一个专用的侦听器来每个lpar的url?

所以我正在修改我在评论中给出的答案,因为它对作者很有帮助

  • 在导出器中使用“实例”标签,而不是“lpar”(更改导出器代码)
  • 在普罗米修斯刮擦配置中使用“荣誉标签:真”

据我所知,您是此导出器的作者。您可以在导出器中使用“实例”标签,而不是“lpar”。您也可以使用“荣誉标签:true”在Prometheus scrape_config.中,这不是推荐的Prometheus体系结构。Prom应该直接刮取这些AIX服务器中的每一个。如果这样做,您将不会在正确识别主机名方面遇到问题。是否有特定的原因使您无法遵循Prometheus的建议?@marco.m有几个原因。*njmon设计用于推送,而不是刮取*njmon json的格式不是以与Prometheus兼容的方式设置的如果Go和在AIX上编译的所需库,我会以这样的方式编写导出程序,以便单独刮取每个目标,但这可能需要一段时间(或永远不会)啊,我明白了,虽然有一个。尽管我爱GO,如果AIX不支持(或痛苦),我会考虑使用另一种语言来编写每个节点上安装的出口商,配置这个NJMON以将本地推送到出口商,并最终配置普罗米修斯来刮除每个节点。在我与普罗米修斯的经验中(我非常喜欢它)。,随波逐流比试图强占某些东西要好。@SashaGolikov您的建议非常有效。我很欣赏这不是普罗米修斯通常的体系结构,但它现在可以工作,只需要对被监视的AIX系统进行最小的更改。感谢您的帮助。