我们正在运行安装了NewRelic Java代理的Elasticsearch。我们希望记录自定义指标而不更改ES中的任何内容。
我知道NewRelic提出的方法是Steven Eksteens Elasticsearch Plugin,但它是基于Ruby的,我们试图避免在我们的堆栈中添加另一种语言。我尝试使用NewRelic Python代理和newrelic.agent.record_custom_metric函数复制Stevens在Python中的工作:
import newrelic.agent
from time import sleep
import logging
logger = logging.getLogger()
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
# generate config file with 'newrelic-admin generate-config <apicode> newrelic.ini'
newrelic.agent.initialize('newrelic.ini')
application_str = dict(newrelic.agent.newrelic.core.config.global_settings())["app_name"]
application = newrelic.agent.register_application(application_str)
while True:
newrelic.agent.record_custom_metric('Custom/Value', 1, application)
sleep(10)
这很好用。唯一的问题:如果配置为使用与现有java-agent控制的App相同的app_name,它会在NewRelic中使用附录'(Python)'注册一个新的应用程序。我想要的是将指标添加到原始指标。这可能吗?
答案 0 :(得分:1)
New Relic Dashboard中的应用程序必须与要合并的语言相同。否则,由于指标的类型和不同语言的报告方式,您最终会得到多个具有相同名称和附加语言名称的应用程序。
无法在New Relic帐户中合并两个使用不同语言编写的同名应用程序。但是,您可以创建一个自定义仪表板,允许您将多个应用程序中的图表放在一个仪表板中。