cloud-monitoring-chart-generation
Официальный skill Google преобразует уже разрешённый PromQL-запрос или JSON-запрос ListTimeSeries вместе с метаданными метрики в валидный Protocol Buffer textproto для виджета Google Cloud Monitoring. Результат имеет форму google.monitoring.dashboard.v1.Widget и рассчитан на передачу в Cloud Monitoring Dashboards API, gcloud CLI или декларативный pipeline создания dashboard. Skill не занимается поиском метрик и не генерирует PromQL: descriptor метрики, запрос, единица измерения и тип ресурса должны уже находиться в контексте задачи. Рабочий каталог менять нельзя, а bundled Python-скрипты запускаются непосредственно из корня. В качестве предпочтительного варианта используется ListTimeSeries с time_series_filter; PromQL выбирается только по явному запросу или когда математическое выражение действительно требует его. В одном time_series_query разрешено ровно одно поле данных: time_series_filter либо prometheus_query, но никогда оба сразу. Переданный PromQL или JSON-фильтр ListTimeSeries проходит strict passthrough посимвольно: skill не переписывает, не исправляет и не дополняет запрос. Pipeline состоит из трёх этапов. Сначала compute_labels.py строит кандидаты подписей и unitOverrideCandidate. Затем формируется SemanticPlotSpec из четырёх ключей: короткий title до 80 символов, понятная подпись оси без символов единицы, plotType и UCUM unitOverride. По умолчанию используется LINE, а STACKED_AREA допустим по запросу пользователя или для distribution-запросов. Для ListTimeSeries берётся рассчитанная кандидатом единица, включая результат ALIGN_RATE и процент для ALIGN_PERCENT_CHANGE. Для PromQL rate и irate добавляют /s к исходной единице, но rate внутри histogram_quantile сохраняет единицу bucket; отношение одинаковых единиц обычно даёт %, 10^2.% нормализуется в %, а простые avg_over_time и sum by сохраняют исходную единицу. legend_template намеренно не задаётся, чтобы интерфейс Cloud Monitoring сам построил табличную легенду. На третьем этапе assemble_widget_proto.py сохраняет textproto под уникальным UUID-именем и печатает точный префикс Wrote widget textproto to:, который нужно извлечь из stderr, а не угадывать имя файла. После генерации обязательна независимая проверка validate_chart.py с идентифицирующей частью исходного запроса и ожидаемой единицей; при ошибке выполняется до двух повторов сборки. В ответе готовый textproto показывается в блоке textproto. Если Python-скрипт нельзя запустить из-за ограничений среды, skill требует явно назвать невозможный шаг, вывести полный best-effort textproto и дать команды локальной проверки. Ограничения важны: отсутствие исходного запроса или метаданных нельзя компенсировать поиском, изменение working directory запрещено, а успешная генерация не отменяет валидацию сохранённого файла.
Для чего подходит
- Подготовка XyChart из PromQL
- Генерация SDUI widget для Cloud Monitoring
- Создание textproto для dashboard-конфигурации
Установка
Сначала прочитайте SKILL.md и scripts в исходном репозитории. Затем выполните команду в каталоге проекта:
npx skills add https://github.com/google/skills/tree/main/skills/cloud/cloud-monitoring-chart-generation