как отправлять метрики с OpenCensus - PullRequest
0 голосов
/ 11 декабря 2019

Я пытаюсь отправить метрики в Python с использованием OpenCensus и Azure Application Insights.

В идеале я хотел бы отправить некоторые словари Python с произвольной структурой, однако кажется, что OpenCensus «автоматически прослушивает операторы записи / печати», но я не вижу доказательств этого на портале Azure при поискеэти вещи.

Является ли print(...) чем-то особенным для OpenCensus? Как это захватывает содержимое операторов печати?

Я пробовал 2 разные вещи (см. Код ниже):

  • Отправка «метрик Azure» (см. https://pypi.org/project/opencensus-ext-azure/, затем параграф «Метрики»): пока я ничего не вижу на портале Azure, щелкая мое приложение для Application Insights. Я отслеживал последние 24 часа на вкладке «Поиск».
  • Отправка каких-то «промежутков» через реализацию Azure (см. https://github.com/census-instrumentation/opencensus-python/tree/master/contrib/opencensus-ext-azure#trace):, когда я нажимаю на проверку вкладки «Поиск»). последние 24 часа, затем я на самом деле вижу там некоторые события, представляющие промежутки (по названию промежутка), но затем не добавляются метрики, например, этот ключ / значение атрибута и т. д. 1020 *
    • должен быть «трассировщик», который управляет «пролетом»
    • могут быть родительские / дочерние трассеры / промежутки
    • каждый отрезок должен позволять отправлять«сборщик» некоторых метрик (HTTP-контент, произвольные словари / JSON и т. д.)
    • должна быть панель управления (например, Insight Application Azure), которая должна показывать эти родительские / дочерние промежутки на временной шкале с прикрепленными метриками/ messages

    Я хотел бы понять:

    • Как я могу отправлять произвольные словари как "метрики" в OpenCensus? Как это будет отображаться на портале Azure при использованииприложение для заявкиation Insights?
    • Что особенного в print(...) (или logging.info(...)) и HTTP-запросах в OpenCensus? Как эта информация должна быть полезна на портале Azure в приложении для Application Insights?
    • Является ли вышеприведенное как-то не зависимым от трассировщиков / промежутков или является обязательным интервалом, когда необходимо отправить метрику?
    
    import json
    import psutil
    
    from opencensus.trace.samplers import AlwaysOnSampler
    from opencensus.trace.tracer import Tracer
    
    from opencensus.ext.azure import metrics_exporter
    from opencensus.ext.azure.trace_exporter import AzureExporter
    
    if __name__ == "__main__":
        # loading the instrumentation key (for the Azure Application Insights app) from a JSON file
        azure_conf = json.loads(open("tf/ai_details.json", 'r').read())
        ai_instrumentation_key = azure_conf['instrumentation_key']['value']
        # print(ai_instrumentation_key)
    
        # test 1: trying to "send a metric", does that mean that the metric exporter listens to "print(...)"?
        _me = metrics_exporter.new_metrics_exporter(connection_string='InstrumentationKey={}'.format(ai_instrumentation_key))
        print(psutil.virtual_memory())
        print("Done recording metrics")
    
        # test 2: trying to "send a metric", how can I make the "span" to send a dictionary?
        azure_exporter = AzureExporter(connection_string='InstrumentationKey={}'.format(ai_instrumentation_key))
        # https://opencensus.io/api/python/trace/api/tracer.html
        tracer = Tracer(exporter=azure_exporter, sampler=AlwaysOnSampler())
        # https://opencensus.io/api/python/trace/api/span.html#opencensus.trace.span.Span
        with tracer.span(name='TestSpan') as span:
            print('Hello, World!') # is the span only listening to "print(...)"?
            span.add_attribute("foo-span-key", "foo-span-value") # this does not seem to do anything
    

1 Ответ

1 голос
/ 13 декабря 2019

Спасибо за использование OpenCensus с Azure Monitor! Вы можете найти мои ответы в строке.

Как я могу отправлять произвольные словари в качестве "метрик" в OpenCensus? Как это будет отображаться на портале Azure при использовании приложения для Application Insights?

Что вы подразумеваете под произвольными словарями? В вашем фрагменте кода создается впечатление, что вы хотите отправить отдельные точки данных в виде метрических данных в серверную часть монитора Azure (Application Insights). Инструкции по началу работы с OpenCensus см. На странице обзор на веб-сайте Microsoft. Это покажет вам, как правильно настроить ваше приложение с помощью OpenCensus и как отправить вашу телеметрию в Azure Monitor. Если вы все еще не знаете, как настроить приложение для удовлетворения ваших бизнес-задач, вот еще примеров , на которые вы можете взглянуть.

Что особенного в печати (...) (или logging.info (...)) и HTTP-запросы в OpenCensus? Чем эта информация должна быть полезна на портале Azure в приложении для Application Insights?

Команда print не имеет особых последствий в OpenCensus. Для журналов вы можете автоматически отправлять журналы телеметрии из стандартной библиотеки журналов Python, если вы работаете с OpenCensus Azure Monitor и используете экспортер журналов . Для HTTP-запросов вы можете отслеживать входящих запросов и исходящих запросов с помощью средства экспорта трассировки и различных библиотек OpenCensus в зависимости от того, для какой библиотеки вы хотите отслеживать телеметрию.

Является ли приведенное выше как-то не зависимым от трассировщиков / промежутков или является обязательным интервалом, когда необходимо отправить метрику?

Пролеты - это концепция, используемая только при трассировке (с использованием AzureExporter). Вам не нужно создавать интервалы для отправки метрических данных (экспортер метрик). Посмотрите на приведенные выше ссылки, чтобы узнать, как использовать каждый из них.

...