Мы запускаем Elasticsearch с установленным агентом NewRelic Java. Мы хотим записать пользовательские показатели без изменения чего-либо в ES.Возможно ли записать пользовательские показатели в приложение с другим вторичным агентом?
Я знаю, что предложенный NewRelic способ сделать это - Стивен Экстейнс Elasticsearch Plugin, но он основан на Ruby, и мы стараемся избегать добавления другого языка в наш стек. Я попытался повторить усилия Stevens в Python, с помощью агента NewRelic Python и newrelic.agent.record_custom_metric функции:
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-агентом, оно регистрирует новое приложение в NewRelic с приложением '(Python)'. Я хочу добавить метрики к оригиналу. Это возможно?
О? Это означает, что «официальный» плагин Elasticsearch не может сосуществовать с java-агентом? Нет статистики ES и JVM-показателей одновременно? – Tarwin
Они сосуществуют просто отлично. Вы просто не можете объединить их в один график. Так же, как вы не можете создать, например, рубиновое приложение и приложение python с тем же именем и ожидать, что они закроют одно и то же пространство приложений в New Relic. Они оба будут сообщать, но в отдельных экземплярах приложений в новой панели инструментов Relic. – Walden