Ваши данные не являются Protobuf.Protobuf - это двоичный формат, а не текстовый, поэтому он не будет удобочитаемым, как данные, которые вы видите.Технически, у Protobuf есть альтернативное текстовое представление, используемое для отладки, но ваши данные тоже не тот формат.
Вместо этого ваши данные выглядят как текстовый формат Prometheus, который не является форматом Protobuf.Чтобы разобрать это, вам понадобится анализатор текста Prometheus.Обычно только Prometheus использует этот формат, поэтому не так много библиотек для его анализа (в то время как существует множество библиотек для его создания).Тем не менее, формат довольно прост, и вы можете проанализировать его с помощью подходящего регулярного выражения.
Некоторые серверы, которые экспортируют метрики Prometheus, также поддерживают экспорт в альтернативный формат на основе Protobuf.Если ваш сервер поддерживает это, вы можете запросить его, отправив заголовок:
Accept: application/vnd.google.protobuf; proto=io.prometheus.client.MetricFamily; encoding=delimited
Если вы отправите это в запросе, вы могли бы получить обратно формат на основе Protobuf, еслиСервер поддерживает это.Обратите внимание, что формат Protobuf устарел и удален в Prometheus 2, поэтому, вероятно, в наши дни его поддержит меньшее количество серверов.
Если ваш сервер поддерживает этот формат, обратите внимание, что результат все еще не является простым Protobuf.Скорее, это коллекция протобуфов в формате «с разделителями».Каждый Protobuf имеет префикс с длиной, закодированной в varint («varint» - это целочисленное кодирование Protobuf с переменной шириной).В C ++ или Java есть функции «parseDelimitedFrom», которые можно использовать для разбора этого формата, но похоже, что Ruby в настоящее время не имеет встроенной поддержки.