Передача логов кластера Hive Metastore в Yandex Cloud Logging
Вы можете настроить регулярный сбор логов, в которых собрана информация о работе кластера Hive Metastore. Логи будут поставляться в пользовательскую лог-группу в сервисе Yandex Cloud Logging.
Чтобы настроить передачу логов кластера Metastore в Cloud Logging:
- Создайте лог-группу.
- Создайте сервисный аккаунт.
- Назначьте сервисному аккаунту роль на каталог.
- Создайте кластер Metastore.
- Проверьте передачу логов кластера в лог-группу.
Если созданные ресурсы вам больше не нужны, удалите их.
Создайте лог-группу
- В консоли управления
перейдите в каталог, в котором хотите создать лог-группу. - Выберите сервис Cloud Logging.
- Нажмите кнопку Создать группу.
- Укажите имя
metastore-log-group
. - Задайте срок хранения записей в лог-группе.
- Нажмите кнопку Создать группу.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать лог-группу, выполните команду:
yc logging group create \
--name metastore-log-group \
--retention-period <срок_хранения_записей>
В результате будет создана группа с именем metastore-log-group
.
Срок хранения записей можно указать только в часах, минутах или секундах. Например, 1h
или 1440m
.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры лог-группы:
resource "yandex_logging_group" "metastore-log-group" { name = "metastore-log-group" folder_id = "<идентификатор_каталога>" retention_period = "<срок_хранения_записей>" }
Идентификатор каталога можно получить со списком каталогов.
Срок хранения записей можно указать только в часах, минутах или секундах. Например,
1h
или1440m
.Более подробную информацию о параметрах ресурса
yandex_logging_group
в Terraform см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc logging group list
-
Чтобы создать лог-группу, воспользуйтесь методом REST API create для ресурса LogGroup или вызовом gRPC API LogGroupService/Create и передайте в теле запроса:
-
Идентификатор каталога в параметре
folderId
. Идентификатор можно получить со списком каталогов. -
Имя лог-группы
metastore-log-group
в параметреname
. -
Срок хранения записей в лог-группе в параметре
retentionPeriod
.Значение можно указать только в секундах в формате
<число>s
. Если указать пустое значение или0s
, срок хранения будет не ограничен.
Создайте сервисный аккаунт
Используйте сервисный аккаунт, чтобы от его имени поставлять логи в Cloud Logging.
Чтобы создать сервисный аккаунт:
- В консоли управления выберите каталог, в котором вы создали лог-группу.
- Выберите сервис Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- Укажите имя сервисного аккаунта
metastore-logging-sa
. - Нажмите кнопку Создать.
Чтобы создать сервисный аккаунт, выполните команду:
yc iam service-account create --name metastore-logging-sa
Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Чтобы создать сервисный аккаунт:
-
Опишите в конфигурационном файле параметры сервисного аккаунта:
resource "yandex_iam_service_account" "sa" { name = "metastore-logging-sa" folder_id = "<идентификатор_каталога>" }
Более подробную информацию о параметрах ресурса
yandex_iam_service_account
в Terraform см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится информация о сервисном аккаунте. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание сервисного аккаунта: введите в терминал слово
yes
и нажмите Enter.После этого будет создан сервисный аккаунт. Проверить появление сервисного аккаунта можно в консоли управления или с помощью команды CLI:
yc iam service-account list
-
Чтобы создать сервисный аккаунт, воспользуйтесь методом REST API create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create и передайте в теле запроса:
- идентификатор каталога в параметре
folderId
; - имя сервисного аккаунта
metastore-logging-sa
в параметреname
.
Назначьте сервисному аккаунту роль на каталог
Назначьте сервисному аккаунту metastore-logging-sa
роль managed-metastore.integrationProvider на каталог. Она позволяет кластеру Metastore взаимодействовать с различными ресурсами Yandex Cloud, в том числе отправлять логи в Cloud Logging.
Чтобы назначить роль:
- В консоли управления выберите нужный каталог.
- Перейдите на вкладку Права доступа.
- Нажмите кнопку Настроить доступ.
- В открывшемся окне введите имя сервисного аккаунта
metastore-logging-sa
и выберите его. - Нажмите кнопку
Добавить роль и выберите рольmanaged-metastore.integrationProvider
. - Нажмите кнопку Сохранить.
Чтобы назначить роль, выполните команду:
yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
--role managed-metastore.integrationProvider \
--subject serviceAccount:<идентификатор_сервисного_аккаунта>
Идентификатор сервисного аккаунта можно получить со списком сервисных аккаунтов.
Чтобы назначить роль:
-
Опишите в конфигурационном файле параметры роли для сервисного аккаунта:
resource "yandex_resourcemanager_folder_iam_member" "managed-metastore-integration-provider" { folder_id = "<идентификатор_каталога>" role = "managed-metastore.integrationProvider" member = "serviceAccount:<идентификатор_сервисного_аккаунта>" }
Идентификатор сервисного аккаунта можно получить со списком сервисных аккаунтов.
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить создание ресурса можно в консоли управления или с помощью команды CLI:
yc resource-manager folder list-access-bindings <имя_или_идентификатор_каталога>
-
Чтобы назначить роль, воспользуйтесь методом REST API updateAccessBindings для ресурса Folder или вызовом gRPC API FolderService/UpdateAccessBindings и передайте в теле запроса:
- Значение
ADD
в параметреaccessBindingDeltas.action
, чтобы добавить роль. - Роль
managed-metastore.integrationProvider
в параметреaccessBindingDeltas.accessBinding.roleId
. - Идентификатор сервисного аккаунта в параметре
accessBindingDeltas.accessBinding.subject.id
. Идентификатор можно получить со списком сервисных аккаунтов. - Значение
serviceAccount
в параметреaccessBindingDeltas.accessBinding.subject.type
, чтобы указать, что роль назначают сервисному аккаунту.
В URL запроса укажите идентификатор нужного каталога.
Создайте кластер Metastore
-
В подсети, к которой будет подключен кластер, настройте NAT-шлюз. Это нужно, чтобы кластер мог взаимодействовать с сервисами Yandex Cloud.
-
Создайте кластер Metastore:
Консоль управления-
В консоли управления выберите нужный каталог.
-
Выберите сервис Yandex MetaData Hub.
-
На левой панели выберите страницу
Metastore-сервер. -
Нажмите кнопку Создать кластер.
-
Укажите имя кластера
metastore-cluster
. -
В поле Сервисный аккаунт выберите
metastore-logging-sa
. -
В блоке Сетевые настройки выберите сеть и подсеть с настроенным NAT-шлюзом.
-
В блоке Логирование:
-
Включите опцию Запись логов.
-
Чтобы логи записывались в пользовательскую лог-группу, выберите значение Лог-группа в поле Назначение.
-
Укажите лог-группу
metastore-log-group
. -
Выберите минимальный уровень логирования.
В журнал выполнения записываются логи указанного уровня и выше. Доступные уровни —
TRACE
,DEBUG
,INFO
,WARN
,ERROR
иFATAL
. Уровень по умолчанию —INFO
.
-
-
Нажмите кнопку Создать.
-
Проверьте передачу логов кластера в лог-группу
- В консоли управления перейдите в нужный каталог.
- Выберите сервис Cloud Logging.
- Нажмите на строку с лог-группой
metastore-log-group
.
На открывшейся странице отобразятся записи.
Чтобы посмотреть записи в формате JSON, выполните команду:
yc logging read --group-name=metastore-log-group --format=json
Результат:
[
{
"uid": "488ece3c-75b8-4d35-95ac-2b49********",
"resource": {},
"timestamp": "2024-08-22T02:10:40Z",
"ingested_at": "2024-08-22T08:49:15.716Z",
"saved_at": "2024-08-22T08:49:16.176097Z",
"level": "INFO",
"message": "My message",
"json_payload": {
"request_id": "1234"
}
}
]
Чтобы посмотреть записи в лог-группе, воспользуйтесь вызовом gRPC API LogReadingService/Read.
Подробнее см. в разделе Чтение записей.
Удалите созданные ресурсы
Некоторые ресурсы платные. Удалите ресурсы, которые вы больше не будете использовать, чтобы не платить за них:
Удалите:
-
В терминале перейдите в директорию с планом инфраструктуры.
-
Удалите конфигурационные файлы с инфраструктурой, созданной для передачи логов кластера Metastore.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Все ресурсы, которые были описаны в удаленных конфигурационных файлах, будут удалены.
-