Skip to content

Метрики и логи воркера (опционально)

Метрики и логи опциональны. Если не планируете отправлять метрики и логи, то эту главу можно пропустить.

Воркер умеет посылать логи в Kibana и метрики в Graphite. Метрики визуализируются с помощью Grafana или других инструментов, поддерживаюших работу с Graphite.

Пример дашборда с реальными метриками.

Конфигурация метрик и логов#

Перед получением метрик и логов необходимо самостоятельно настроить Graphite и Kibana.

Для включения метрик и логов передайте параметры в переменные окружения (см. главу Конфигурация воркера).

Для включения метрик Graphite используйте переменные окружения:

  • EMCEE_WORKER_GRAPHITE_IS_ENABLED
  • EMCEE_WORKER_GRAPHITE_SOCKET_ADDRESS
  • EMCEE_WORKER_GRAPHITE_SOCKET_PORT
  • EMCEE_WORKER_GRAPHITE_METRIC_PREFIX

Для включения логов Kibana используйте переменные окружения:

  • EMCEE_WORKER_KIBANA_IS_ENABLED
  • EMCEE_WORKER_KIBANA_ENDPOINTS
  • EMCEE_WORKER_KIBANA_INDEX_PATTERN
  • EMCEE_WORKER_ELASTIC_API_KEY

Какие метрики и логи отправляет воркер#

Воркер отправляет информацию о состоянии системы и шагах выполнения работы.

Детализация логов зависит от заданного уровня логгирования (см. главу Конфигурация воркера).

Список отправляемых воркером метрик:

Метрика Имя метрики в Graphite
Время сетевого запроса network_request_time
Код ответа сетевого запроса network_response_code
Время загрузки apk файлов artifacts_download_time
Факт загрузки или переиспользования apk файлов artifact_downloaded artifact_reused
Время работы воркера при успешном прогоне (включая загрузку apk файлов, прогон тестов, и отправку тестовых артефактов) work_time
Время получения эмулятора (старт нового или переиспользование существующего) time_to_get_device

В Graphite метрика будет выглядеть как your.graphite.prefix.metric_name.

Пример готового дашборда для метрик воркера#

Пример json-файла дашборда для Grafana и Graphite в качестве источника данных доступен здесь.

В качестве EMCEE_WORKER_GRAPHITE_METRIC_PREFIX в дашборде было использовано значение apps.mobile.metrics.awesomeapp. А для переменной $worker_id используется запрос tag_values(worker_id, name=~apps.mobile.metrics.awesomeapp.*) (указывается в настройках дашборда в Variables), либо можно заменить значение $worker_id на ~*.

Этот дашборд можно импортироать в Grafana при создании нового дашборда. Дашборд был экспортирован для версии Grafana 9.1.7 и Graphite 1.0.0

Корректная работа дашборда при импорте не гарантируется так как в новых версиях Grafana и Graphite старый функционал может работать по-другому. Поэтому готовый дашборд может нуждаться в доработке в зависимости от ваших инструментов.