Клиент телеметрии — это приложение, которое взаимодействует со службой телеметрии для настройки сбора данных, управления конфигурациями метрик и получения отчетов телеметрии. Клиенты используют библиотеку Rust libsdv_telemetry_rust_wrapper для взаимодействия со службой.
Обзор поверхности API
Для получения документации по API см. справочник по API библиотеки клиента телеметрии Rust .
Библиотека предоставляет интерфейс на языке Rust для взаимодействия с базовой службой телеметрии. Библиотека отвечает за следующие области:
Управление жизненным циклом сервиса: управляет подключением к службе телеметрии.
- Инициализация: Устанавливает соединение со службой с помощью блокирующего вызова. После подключения вы можете зарегистрировать обратные вызовы для получения асинхронных уведомлений о состоянии системы и доступности новых отчетов.
- Завершение работы: Обеспечивает корректное отключение от сервиса и очистку всех связанных ресурсов.
Управление жизненным циклом конфигурации метрик: обеспечивает контроль над жизненным циклом конфигураций метрик .
- Управление: Клиенты могут добавлять, удалять, активировать и деактивировать конфигурации метрик.
- Проверка: Вы можете запросить список активных и неактивных конфигураций.
Обработка и поиск отчетов: Обеспечивает доступ к данным, собранным службой телеметрии.
- Уведомления: Асинхронно уведомляет клиентов с помощью функции обратного вызова всякий раз, когда новый отчет по метрикам готов к получению.
- Доступ к данным: Предоставляет методы для получения конкретных отчетов по их UUID, а также для получения списка всех доступных отчетов.
Отчеты о состоянии и ошибках: предоставляют информацию о работоспособности и состоянии службы телеметрии.
- Асинхронные обновления статуса: клиенты получают обновления статуса в режиме реального времени, включая ошибки и предупреждения, через выделенный обратный вызов. Это позволяет реализовать надежную обработку ошибок и отслеживать состояние сервиса.
Пример использования
Полный, компилируемый пример приложения, демонстрирующий весь жизненный цикл, можно найти в примере реализации клиента: samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs .
Пример клиентского приложения представляет собой утилиту командной строки, взаимодействующую с полным API библиотеки. В примере показано, как связать интерфейс библиотеки, основанный на обратных вызовах, с асинхронной средой выполнения Rust (Tokio) с использованием каналов.
Клиент выполняет следующую последовательность операций:
- Устанавливает соединение со службой телеметрии и регистрирует обратные вызовы для получения обновлений статуса и уведомлений об отчетах по метрикам.
- Программа считывает файлы конфигурации метрик, предоставленные в качестве аргументов командной строки, а затем добавляет и активирует конфигурации в службе.
- Использует фоновую задачу для регистрации асинхронных сообщений о состоянии (ошибок или предупреждений), полученных от сервиса.
- Управляет циклом извлечения данных, выполняя следующие действия:
- Ожидает уведомления о готовности отчета по показателям.
- Получает полные данные отчета по показателям.
- При необходимости отчет записывается на диск в виде двоичного файла протокола Protocol Buffer.
- Удаляет конфигурацию метрик из сервиса после того, как он сгенерирует первый отчет по метрикам. Обратите внимание, что это демонстрационная реализация, и ваши собственные клиенты могут получать любое количество отчетов.
- Корректно закрывает соединение со службой.