Исследовав это, я думаю, что лучший способ решить эту проблему - использовать Google DataFlow.Вот общая идея:
- Используйте плагин вывода Telegraf cloud_pubsub для отправки метрик в формате json в службу pubsub Google
- Используйте службу потока данных Google для загрузки из pubsub иОтправьте Google BigQuery
- Прибыль!
Это может показаться простым, но требует немного знаний об этих инструментах.Вот некоторые вещи, которые вы должны иметь в виду:
- Начните с выяснения того, как выглядят ваши метрики, и создайте для них подходящую схему.BigQuery основан на схемах, и вы ДОЛЖНЫ определить его заранее, иначе загрузка данных не удастся.Я обнаружил, что определение дополнительных выходных данных «файла» для моего клиента Telegraf было полезно, чтобы точно узнать, какие метрики json я отправлял в BiqQuery.Обратите внимание, что вы также можете удалять / редактировать метрики, используя Telegraf measure_filter
- Использование плагина Telegraf cloud_pubsub.Пока я пишу этот ответ (19 февраля), он очень новый и включен только в ветку Master.Я считаю, что он предназначен для Telegraf версии 1.10.
- Создайте тему pubsub, таблицу BigQuery (со схемой) и хранилище Google - вам понадобятся все три элемента для создания проекта DataFlow.Вам также понадобится файл учетных данных, который вы сгенерируете в GCP, а затем укажите клиенту Telegraf:
- После этого создайте проект DataFlow в GCP.Они не могут быть отредактированы после создания и раздражают, они не могут быть удалены (но их можно остановить).Таким образом, вы, вероятно, в конечном итоге создадите несколько проектов, пока не сделаете все правильно.Я обнаружил, что почти все, что я делал, требовало нового проекта (например, удаление и повторное создание таблицы BigQuery с тем же именем требовало нового проекта).
- Если вы видите ошибки в потоке данных, вы должныудалось выяснить, является ли это проблемой схемы из извилистой трассировки стека в подокне журналов в DataFlow.Ваши метрики ДОЛЖНЫ точно соответствовать схеме, иначе она не будет загружена в таблицу.
- Мне не удалось загрузить метрики в формате притока, но мне сказали, что это должно быть возможно.Я использовал формат «JSON», и это сработало.
- Если у вас есть вложенные поля json {"person": {"first-name": "john" и т. Д.}}, Определите свое вложенное поле как тип RECORD в схеме BigQuery и ваше вложенное поле в нем,это не очень очевидно, если вы уже не знаете BigQuery.
- Я обнаружил, что редактирование схемы BigQuery в консоли GCP было очень ограниченным - особенно для вложенных полей json.Мне пришлось заново создавать его несколько раз с нуля, потому что пользовательский интерфейс не позволяет редактировать вложенные поля после начальной конфигурации таблицы.