Ошибка чтения конфигурации достигла конца файла с недопустимым текущим состоянием кодировки

Обновлено: 02.07.2024

Обзор формата

Формат ответа API — JSON. Каждый успешный запрос API возвращает код состояния 2xx.

  • 400 Bad Request, когда параметры отсутствуют или неверны.
  • 422 Unprocessable Entity, когда выражение не может быть выполнено (RFC4918).
  • 503 Служба недоступна, когда время ожидания запросов истекает или прерывается.

Другие коды, отличные от 2xx, могут быть возвращены для ошибок, возникших до достижения конечной точки API.

При наличии ошибок, не препятствующих выполнению запроса, может быть возвращен массив предупреждений. Все данные, которые были успешно собраны, будут возвращены в поле данных.

Формат конверта ответа JSON выглядит следующим образом:

Общие заполнители определяются следующим образом:

Примечание. Имена параметров запроса, которые могут повторяться, заканчиваются на [] .

Выражения запросов

Выражения языка запросов могут оцениваться в один момент или в течение определенного диапазона времени. В разделах ниже описаны конечные точки API для каждого типа выражения запроса.

Мгновенные запросы

Следующая конечная точка оценивает мгновенный запрос в определенный момент времени:

Параметры запроса URL:

  • query= : строка запроса выражения Prometheus.
  • time= : отметка времени оценки. Необязательно.
  • timeout= : время ожидания оценки. Необязательный. По умолчанию имеет значение флага -query.timeout и ограничивается им.

Если параметр времени опущен, используется текущее время сервера.

Вы можете закодировать эти параметры в URL-адресе непосредственно в тексте запроса, используя метод POST и заголовок Content-Type: application/x-www-form-urlencoded. Это полезно при указании большого запроса, который может нарушить ограничения на количество символов в URL на стороне сервера.

Раздел данных результата запроса имеет следующий формат:

относится к данным результата запроса, формат которых зависит от типа результата. См. форматы результатов выражения запроса.

В следующем примере вычисляется выражение up в момент времени 2015-07-01T20:10:51.781Z :

Запросы диапазона

Следующая конечная точка оценивает запрос выражения за определенный период времени:

Параметры запроса URL:

  • query= : строка запроса выражения Prometheus.
  • start= : отметка времени начала включительно.
  • end= : отметка времени окончания включительно.
  • step= : ширина шага разрешения запроса в формате длительности или числа с плавающей запятой в секундах.
  • timeout= : время ожидания оценки. Необязательный. По умолчанию имеет значение флага -query.timeout и ограничивается им.

Вы можете закодировать эти параметры в URL-адресе непосредственно в тексте запроса, используя метод POST и заголовок Content-Type: application/x-www-form-urlencoded. Это полезно при указании большого запроса, который может нарушить ограничения на количество символов в URL на стороне сервера.

Раздел данных результата запроса имеет следующий формат:

Формат заполнителя см. в формате вектора диапазона.

В следующем примере выражение вычисляется в диапазоне 30 секунд с разрешением запроса 15 секунд.

Запрос метаданных

Prometheus предлагает набор конечных точек API для запроса метаданных о сериях и их метках.

ПРИМЕЧАНИЕ. Эти конечные точки API могут возвращать метаданные для рядов, для которых нет образца в выбранном временном диапазоне, и/или для рядов, образцы которых были помечены как удаленные через конечную точку API для удаления. Точный объем дополнительно возвращаемых метаданных серии — это деталь реализации, которая может измениться в будущем.

Поиск серий по сопоставителям ярлыков

Следующая конечная точка возвращает список временных рядов, соответствующих определенному набору меток.

Параметры запроса URL:

  • match[]= : Аргумент селектора повторяющейся серии, который выбирает возвращаемую серию. Должен быть указан хотя бы один аргумент match[].
  • start= : отметка времени начала.
  • end= : отметка времени окончания.

Вы можете закодировать эти параметры в URL-адресе непосредственно в тексте запроса, используя метод POST и заголовок Content-Type: application/x-www-form-urlencoded. Это полезно при указании большого или динамического количества селекторов серий, которые могут нарушать ограничение на количество символов в URL на стороне сервера.

Раздел данных результата запроса состоит из списка объектов, содержащих пары "имя-значение" метки, которые идентифицируют каждую серию.

Следующий пример возвращает все серии, соответствующие селекторам up или process_start_time_seconds :

Получение названий ярлыков

Следующая конечная точка возвращает список имен ярлыков:

Параметры запроса URL:

  • start= : метка времени начала. Необязательно.
  • end= : Отметка времени окончания. Необязательно.
  • match[]= : Аргумент селектора повторяющейся серии, который выбирает серию, из которой считываются имена меток. Необязательно.

Раздел данных ответа JSON представляет собой список имен строковых меток.

Вот пример.

Запрос значений ярлыков

Следующая конечная точка возвращает список значений ярлыка для указанного имени ярлыка:

Параметры запроса URL:

  • start= : метка времени начала. Необязательно.
  • end= : Отметка времени окончания. Необязательно.
  • match[]= : Аргумент селектора повторяющейся серии, который выбирает серию, из которой считываются значения метки. Необязательно.

Раздел данных ответа JSON представляет собой список строковых значений меток.

В этом примере запрашиваются все значения ярлыков для ярлыка задания:

Запрос образцов

Это экспериментальный вариант, который может измениться в будущем. Следующая конечная точка возвращает список экземпляров действительного запроса PromQL для определенного диапазона времени:

Параметры запроса URL:

  • query= : строка запроса выражения Prometheus.
  • start= : отметка времени начала.
  • end= : отметка времени окончания.

Форматы результатов запроса выражения

Запросы-выражения могут возвращать следующие значения ответа в свойстве результата раздела данных. заполнители — это числовые образцы значений. JSON не поддерживает специальные значения с плавающей запятой, такие как NaN , Inf и -Inf , поэтому образцы значений передаются как строки JSON в кавычках, а не как необработанные числа.

Векторы диапазона

Векторы диапазона возвращаются в виде матрицы типа результата. Соответствующее свойство результата имеет следующий формат:

Мгновенные векторы

Мгновенные векторы возвращаются как тип результата vector . Соответствующее свойство результата имеет следующий формат:

Скаляры

Скалярные результаты возвращаются как скалярный тип результата. Соответствующее свойство результата имеет следующий формат:

Строки

Результаты типа String возвращаются как строка типа результата. Соответствующее свойство результата имеет следующий формат:

Цели

Следующая конечная точка возвращает обзор текущего состояния обнаружения цели Prometheus:

Как активные, так и отброшенные цели по умолчанию являются частью ответа. labels представляет набор меток после перемаркировки. обнаруженные метки представляют собой неизмененные метки, полученные во время обнаружения службы до того, как произошло изменение метки.

Параметр запроса состояния позволяет вызывающей стороне фильтровать по активным или отброшенным целям (например, состояние=активно, состояние=отброшено, состояние=любое). Обратите внимание, что для отфильтрованных целей по-прежнему возвращается пустой массив. Другие значения игнорируются.

Правила

Конечная точка /rules API возвращает список загруженных в данный момент правил оповещения и записи. Кроме того, он возвращает текущие активные оповещения, запущенные экземпляром Prometheus каждого правила оповещения.

Поскольку конечная точка /rules является довольно новой, она не имеет таких же гарантий стабильности, как всеобъемлющий API v1.

Параметры запроса URL: - type=alert|record : возвращает только правила оповещения (например, type=alert ) или правила записи (например, type=record ). Если параметр отсутствует или пуст, фильтрация не выполняется.

Оповещения

Конечная точка /alerts возвращает список всех активных оповещений.

Поскольку конечная точка /alerts является довольно новой, она не имеет таких же гарантий стабильности, как всеобъемлющий API v1.

Запрос целевых метаданных

Следующая конечная точка возвращает метаданные о метриках, извлеченных в настоящее время из целей. Это экспериментальный вариант, который может измениться в будущем.

Параметры запроса URL:

  • match_target= : селекторы ярлыков, соответствующие целям по их наборам ярлыков. Если оставить поле пустым, будут выбраны все цели.
  • metric= : имя показателя, для которого необходимо получить метаданные. Все метаданные показателей извлекаются, если оставить их пустыми.
  • limit= : максимальное количество целей для сопоставления.

Раздел данных результата запроса состоит из списка объектов, содержащих метаданные показателей, и набора целевых меток.

В следующем примере возвращаются все записи метаданных для показателя go_goroutines из первых двух целей с меткой job="prometheus" .

В следующем примере возвращаются метаданные для всех показателей для всех целей с экземпляром метки json">curl -G http://localhost:9091/api/v1/targets/metadata \ --data-urlencode 'match_target=' < " status": "success", "data": [ // . < "target": < "instance": "127.0.0.1:9090", "job": "prometheus" >, "metric": "prometheus_treecache_zookeeper_failures_total", "type": "counter", "help": "Общее количество сбоев ZooKeeper.", "unit": "" >, < "target": < "instance": "127.0.0.1:9090", "job ": "prometheus" >, "metric": "prometheus_tsdb_reloads_total", "type": "counter", "help": "Количество раз, когда база данных перезагружала блочные данные с диска.", "unit": "" >, / / . ] >

Запрос метаданных метрики

Он возвращает метаданные о показателях, которые в настоящее время удалены из целей. Однако он не предоставляет никакой целевой информации. Это считается экспериментальным и может измениться в будущем.

Параметры запроса URL:

  • limit= : максимальное количество возвращаемых показателей.
  • metric= : имя показателя для фильтрации метаданных. Все метаданные показателей извлекаются, если оставить их пустыми.

Раздел данных результата запроса состоит из объекта, где каждый ключ представляет собой имя метрики, а каждое значение представляет собой список уникальных объектов метаданных, представленных для этого имени метрики во всех целях.

Алерт-менеджеры

Следующая конечная точка возвращает обзор текущего состояния обнаружения Prometheus alertmanager:

Как активные, так и удаленные Alertmanager являются частью ответа.

Статус

Следующие конечные точки статуса отображают текущую конфигурацию Prometheus.

Конфигурация

Следующая конечная точка возвращает текущий загруженный файл конфигурации:

Конфигурация возвращается в виде файла дампа YAML. Из-за ограничений библиотеки YAML комментарии YAML не включены.

Флаги

Следующая конечная точка возвращает значения флагов, с которыми был настроен Prometheus:

Все значения имеют тип результата string .

Информация о времени выполнения

Следующая конечная точка возвращает различные свойства информации о сервере Prometheus во время выполнения:

Возвращаемые значения относятся к разным типам в зависимости от характера свойства среды выполнения.

Информация о сборке

Следующая конечная точка возвращает различные свойства информации о сборке сервера Prometheus:

Все значения имеют тип результата string .

Статистика TSDB

Следующая конечная точка возвращает различную кардинальность статистики о TSDB Prometheus:

  • headStats: предоставляет следующие данные о головном блоке TSDB:
    • numSeries: количество серий.
    • chunkCount: количество фрагментов.
    • minTime: текущая минимальная метка времени в миллисекундах.
    • maxTime: текущая максимальная метка времени в миллисекундах.

    Статистика воспроизведения WAL

    Следующая конечная точка возвращает информацию о воспроизведении WAL:

    чтение: количество воспроизведенных на данный момент сегментов. total: общее количество сегментов, которые необходимо воспроизвести. progress: Ход повтора (0–100%). состояние: состояние повтора. Возможные состояния: - ожидание: ожидание начала воспроизведения. - в процессе: идет повтор. - сделано: воспроизведение завершено.

    ПРИМЕЧАНИЕ. Эта конечная точка доступна до того, как сервер будет помечен как готовый, и обновляется в режиме реального времени, чтобы упростить мониторинг хода воспроизведения WAL.

    API администратора TSDB

    Это API-интерфейсы, предоставляющие функции базы данных опытным пользователям. Эти API не включены, если не задан параметр --web.enable-admin-api.

    Снимок

    Snapshot создает снимок всех текущих данных в snapshots/ - в каталоге данных TSDB и возвращает каталог в качестве ответа. При необходимости будут пропущены данные моментального снимка, которые присутствуют только в головном блоке и еще не были сжаты на диск.

    Параметры запроса URL:

    • skip_head= : пропустить данные, присутствующие в блоке заголовка. Необязательно.

    Снимок теперь существует по адресу /snapshots/20171210T211224Z-2be650b6d019eb54

    Новое в версии 2.1 и поддержка PUT из версии 2.9

    Удалить серию

    DeleteSeries удаляет данные для выбранных серий во временном диапазоне. Фактические данные по-прежнему существуют на диске и очищаются при будущих сжатиях или могут быть очищены явным образом путем нажатия на конечную точку Clean Tombstones.

    В случае успеха возвращается код 204.

    Параметры запроса URL:

    • match[]= : повторяющийся аргумент сопоставления меток, который выбирает серию для удаления. Должен быть указан хотя бы один аргумент match[].
    • start= : метка времени начала. Необязательно, по умолчанию установлено минимально возможное время.
    • end= : Отметка времени окончания. Необязательно и по умолчанию максимально возможное время.

    Не указание времени начала и окончания приведет к удалению всех данных совпавших серий в базе данных.

    ПРИМЕЧАНИЕ. Эта конечная точка помечает выборки из серии как удаленные, но не обязательно предотвратит возврат связанных метаданных серии в запросах метаданных для затронутого диапазона времени (даже после очистки надгробий). Точный объем удаления метаданных зависит от реализации и может измениться в будущем.

    Новое в версии 2.1 и поддержка PUT из версии 2.9

    Очистить надгробия

    CleanTombstones удаляет удаленные данные с диска и очищает существующие захоронения. Это можно использовать после удаления серии, чтобы освободить место.

    В случае успеха возвращается код 204.

    Это не требует параметров или тела.

    Новое в версии 2.1 и поддержка PUT из версии 2.9

    Удаленный приемник записи

    Prometheus можно настроить как приемник для протокола удаленной записи Prometheus. Это не считается эффективным способом приема образцов. Используйте его с осторожностью для конкретных случаев использования с небольшим объемом.Он не подходит для замены сбора данных с помощью парсинга и превращения Prometheus в систему сбора метрик на основе push-уведомлений.

    При использовании Google Cloud Directory Sync (GCDS) вы можете столкнуться со следующими сообщениями об ошибках. Используйте приведенную ниже таблицу для устранения ошибок.

    Попробуйте анализатор журнала

    Этот инструмент может выявить большинство проблем в течение нескольких секунд после отправки.

    • Отправьте журналы трассировки (в виде несжатых файлов или ZIP-файлов) в анализатор журналов Google Admin Toolbox.
    • Для расширенного анализа журналов вы также можете отправлять несжатые файлы в Log Analyzer 2.

    Сообщения об ошибках и решения

    GCDS требует полного разрешения на доступ к каталогу для ведения базы данных состояния синхронизации. Вы можете увидеть эту ошибку, если:

    • GCDS работает от имени пользователя, отличного от того, который установил GCDS.
    • Разрешения изменились с момента установки.

    GCDS пытается загрузить файл конфигурации с неподдерживаемой кодировкой символов.

    GCDS использует кодировку символов UTF-8 по умолчанию. Рекомендуется использовать одну и ту же кодировку для файлов конфигурации, хотя другие кодировки совместимы.

    Чтобы решить эту проблему:

    1. Измените кодировку файла конфигурации на UTF-8:
      1. Откройте текстовый редактор.
      2. Сохраните файл в другой кодировке.

      Наиболее распространенными неподдерживаемыми кодировками являются UTF-7 и UTF-8 BOM.

      Проблема с сетевым подключением не позволила GCDS выполнить рукопожатие Secure Sockets Layer (SSL) с сервером Google. Эта проблема может быть вызвана слишком медленной маршрутизацией пакетов или временной потерей услуг интернет-провайдером.

      GCDS автоматически пытается завершить SSL-подтверждение до 3 раз. Если вы видите в журналах следующее сообщение, это означает, что GCDS успешно завершила рукопожатие при последующих попытках и дальнейших действий не требуется:
      [2011-12-14 14:20:44,494] [main] [INFO] [usersyncapp .sync.FullSyncAgent] Различий не обнаружено, никаких изменений не требуется.

      Обратитесь к администратору локальной сети, чтобы узнать, что может быть причиной тайм-аутов сети.

      Если вы снова увидите это сообщение об ошибке, проверьте итоговую сводку синхронизации. Если ни одному из пользователей не удалось выполнить синхронизацию, GCDS автоматически повторила заблокированный запрос и выполнила его успешно, и никаких дальнейших действий не требуется.

      Ограничений API Google должно быть достаточно для повседневного использования. Однако вы можете достичь предела, если имитируете несколько синхронизаций или синхронизируете пароли всех пользователей с GCDS. Если вы запускаете sync-cmd с автоматическим скриптом, старайтесь запускать его реже каждый день.

      • Правила поиска LDAP ConfigurationOrg Units
      • Конфигурация LDAPПользователиСинхронизация пользователей
      • Конфигурационные группы LDAPПравила группового поиска
      • Конфигурация LDAPПрофили пользователейСинхронизация профилей пользователей
      • Конфигурация LDAPОбщие контактыСинхронизация контактов

      Метод шифрования паролей для синхронизации паролей неправильно настроен в Configuration Manager, или ваш сервер LDAP использует метод шифрования, который не поддерживается GCDS. Поддерживаемые методы: обычный текст, Base64, MD5 и SHA1. Чтобы синхронизировать пароли с Microsoft Active Directory, используйте G Suite Password Sync.

      1. Добавьте следующую строку в файл конфигурации в разделе:
        GROUP_NESTED_GROUPS_AS_USERS
      2. Сохраните файл конфигурации и выполните синхронизацию.

      GCDS может попытаться внести неожиданные изменения, если вы выполняете синхронизацию с файлом конфигурации, который был продублирован вне Configuration Manager. Новый файл конфигурации обращается к тому же кешу, что и исходный файл конфигурации, и несоответствия между ними могут привести к блокировке пользователей.

      Чтобы дублировать файл конфигурации GCDS, всегда используйте параметр «Сохранить как» в Configuration Manager. Это гарантирует, что новый файл конфигурации будет иметь собственный кеш.

      Вы используете старый XML-файл конфигурации GCDS, и GCDS обнаружил члена группы, который не включен в правила поиска пользователей вашей конфигурации. Вы должны включить всех участников и владельцев групп в свои правила поиска пользователей, даже если вы не хотите синхронизировать этих пользователей с доменом Google. GCDS необходимо извлечь адреса электронной почты, чтобы эти пользователи могли правильно обрабатывать группы.

      В качестве альтернативы создайте новый пустой XML-файл конфигурации. Затем GCDS включает независимую групповую синхронизацию, которая заставляет GCDS разрешать членов группы независимо от правил синхронизации пользователей. Если вы не уверены, это рекомендуемый вариант.

      При внесении каких-либо изменений в конфигурацию или создании нового файла конфигурации убедитесь, что вы запускаете симуляцию и проверяете результаты, прежде чем запускать полную синхронизацию.

      Дополнительную информацию см. в разделе Определение списка пользователей.

      com.google.data.client.GoogleServiceException:
      Неверные учетные данные

      Учетная запись администратора, указанная вами в Configuration Manager, не является администратором, или имя пользователя и пароль неверны.

      В диспетчере конфигураций перейдите в Google DomainSettings и проверьте информацию учетной записи администратора, указанную в адресе электронной почты администратора.

      Достигнут предел удаления или приостановки, установленный в GCDS. Измените параметр «Удалить ограничения» в GCDS, чтобы избежать этой ошибки, или просмотрите журнал синхронизации, чтобы получить дополнительные сведения о том, что было бы удалено или приостановлено, и решить, нужно ли вам изменить ограничение.

      Решения:

      • В Configuration Manager перейдите в раздел LDAP ConfigurationUsersUser SyncExclusion Rules и создайте правила исключения пользователей, исключающие пользователей во внешних доменах.
      • Измените правила поиска пользователей, чтобы пользователи во внешних доменах не возвращались.
      • Добавьте отсутствующий домен в свой аккаунт Google в качестве дополнительного домена.

      GCDS синхронизирует больше пользователей, чем предусмотрено для вашего аккаунта.
      Решения:

      • В Configuration Manager перейдите к LDAP ConfigurationUsersUser Sync и ограничьте область поиска пользователей, чтобы возвращать меньшее количество пользователей.
      • Убедитесь, что в Configuration Manager вы указали правильное базовое различающееся имя (DN), указывающее на корень, содержащий только пользователей, которых необходимо импортировать в домен Google.

      Если для доступа в Интернет с компьютера, на котором работает GCDS, требуется прокси-сервер, его необходимо правильно настроить.

      • Правила поиска оргподразделений конфигурации LDAP
      • Конфигурация LDAPПользователиСинхронизация пользователей
      • Конфигурационные группы LDAPПравила группового поиска
      • Конфигурация LDAPПрофили пользователейСинхронизация профилей пользователей
      • Конфигурация LDAPОбщие контактыСинхронизация контактов

      Эта проблема обычно возникает из-за принудительной передачи трафика через прокси-сервер. Если вы используете прокси-сервер, вам необходимо настроить параметры прокси-сервера GCDS.

      Убедитесь, что GCDS может подключаться к этим конкретным URL-адресам и портам, выполнив действия, описанные в разделе "Подключения и безопасность".

      Программное обеспечение безопасности на локальном компьютере может создавать проблемы с подключением. Попросите администратора отключить любое программное обеспечение безопасности на клиентском компьютере и повторите попытку.

      Подтвердите, что вы включили необходимые API Google.

      Если это не решит проблему, и вы уверены, что DN допустимо, возможно, проблема связана с разрешением DNS. В журнале вы можете увидеть дополнительную информацию об ошибке, например:

      Эти ошибки указывают на то, что имя хоста отказывается от подключения или истекло время ожидания. Попробуйте выполнить поиск DNS для этого имени хоста и убедитесь, что все возвращаемые адреса действительны и разрешают подключения через настроенный вами порт.

      Примечание. Эти ошибки могут возникать, даже если вы указали допустимое имя хоста или IP-адрес в конфигурации GCDS. Active Directory может выдать реферальный ответ LDAP, предписывая GCDS подключиться через имя хоста. В конечном итоге эта ссылка может относиться к имени хоста, которое не удается разрешить. Вы можете избежать этих ссылок, подключившись к серверу Active Directory, используя порт глобального каталога, который по умолчанию равен 3268. Подробную информацию см. в документации Microsoft.

      Некоторая информация в пользовательской схеме недействительна. Чтобы проверить ограничения, которые применяются к настраиваемой схеме, см. API Directory: настраиваемые поля пользователя.

      Превышен заданный лимит памяти. Это событие привело к сбою синхронизации.

      • Вы используете правильный протокол связи. Если для сервера LDAP требуется защищенный протокол, используйте LDAP + SSL.
      • Сервер LDAP активен и не имеет проблем с подключением.

      GCDS не может найти сервер LDAP. Убедитесь, что компьютер, на котором работает GCDS, имеет доступ к указанному хосту и порту.

      Сервер LDAP отклоняет запросы GCDS из-за проблемы с аутентификацией.

      Убедитесь, что авторизованный пользователь и его пароль верны. Авторизованный пользователь должен быть добавлен с использованием его полного отличительного имени (DN). Подробнее о добавлении авторизованного пользователя см. в разделе Параметры подключения LDAP.

      • Базовое DN существует на сервере LDAP.
      • Уполномоченный пользователь имеет разрешения для базового DN. Подробнее см. в разделе Параметры подключения LDAP.
      • Объект существует и доступен авторизованному пользователю. Подробнее см. в разделе Параметры подключения LDAP.
      • Существует для объекта на сервере LDAP.

      Эта ошибка может появиться, если:

        У вас есть участник, чей основной адрес LDAP является псевдонимом в Google Workspace. По возможности избегайте этой ситуации. (Например, используйте другое имя пользователя для псевдонима.)

      Аккаунт пользователя имеет одно и то же имя пользователя для двух адресов-псевдонимов. Кроме того, на странице конфигурации домена Google вы установили флажок Заменить доменные имена в адресах электронной почты LDAP.

      Если установить этот флажок, оба адреса электронной почты будут изменены в соответствии с доменом, указанным в поле Альтернативный домен электронной почты.

      Связанная тема


      Google, Google Workspace и связанные с ними знаки и логотипы являются товарными знаками Google LLC.Все остальные названия компаний и продуктов являются товарными знаками компаний, с которыми они связаны.

      Читайте также: