Визуализация логов в Grafana с помощью плагина Yandex Cloud Logging
Плагин Yandex Cloud Logging для Grafana
Чтобы визуализировать логи:
- Установите плагин.
- Создайте сервисный аккаунт.
- Создайте авторизованный ключ для сервисного аккаунта.
- Создайте лог-группу.
- Добавьте записи в лог-группу.
- Подключите источник данных в Grafana.
- Посмотрите логи в Grafana.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость ресурсов входит плата за запись и хранение логов в лог-группе (см. тарифы Yandex Cloud Logging).
Установите плагин
-
Скачайте
архив с последней версией плагина. -
Распакуйте архив в папку с плагинами. Расположение папки с плагинами указывается в конфигурации Grafana
.unzip <путь_к_архиву> -d <путь_к_папке_с_плагинами>
Примечание
Если вы используете macOS, после распаковки плагина вручную запустите файл
/opt/homebrew/var/lib/grafana/plugins/yandexcloud-logging-datasource/yc-logs-plugin_darwin_arm64
и в системных настройках разрешите запуск приложений от сторонних разработчиков . -
Разрешите загрузку плагина без подписи. Для этого в конфигурационном файле Grafana укажите название плагина в параметре
allow_loading_unsigned_plugins
:allow_loading_unsigned_plugins = yandexcloud-logging-datasource
Подробнее о загрузке плагинов без подписи см. в документации Grafana
. -
Перезапустите сервер Grafana:
LinuxWindowsmacOSsudo systemctl restart grafana-server
- Нажмите сочетание клавиш Win+R.
- В открывшемся окне введите
services.msc
и нажмите кнопку ОК. - Нажмите правой кнопкой мыши строку со службой
Grafana
и выберите Перезапустить.
brew services restart grafana
Создайте сервисный аккаунт
- В консоли управления
выберите каталог, в котором хотите создать сервисный аккаунт. - В списке сервисов выберите Identity and Access Management.
- Нажмите кнопку Создать сервисный аккаунт.
- Введите имя сервисного аккаунта:
grafana-plugin
. - Нажмите Добавить роль и выберите роль
logging.reader
. - Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Создайте сервисный аккаунт
grafana-plugin
:yc iam service-account create --name grafana-plugin
Результат:
id: nfersamh4s********** folder_id: b1gc1t4cb6********** created_at: "2023-09-26T10:36:29.726397755Z" name: grafana-plugin
Сохраните идентификатор сервисного аккаунта
grafana-plugin
(id
) и каталога, в котором его создали (folder_id
). -
Назначьте сервисному аккаунту роль
logging.reader
на каталог:yc resource-manager folder add-access-binding <идентификатор_каталога> \ --role logging.reader \ --subject serviceAccount:<идентификатор_сервисного_аккаунта>
Результат:
done (1s)
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры сервисного аккаунта:
resource "yandex_iam_service_account" "grafana-plugin" { name = "grafana-plugin" folder_id = "<идентификатор_каталога>" } resource "yandex_resourcemanager_folder_iam_member" "reader" { folder_id = "<идентификатор_каталога>" role = "logging.reader" member = "serviceAccount:${yandex_iam_service_account.grafana-plugin id}" }
Где:
name
— имя сервисного аккаунта. Обязательный параметр.folder_id
— идентификатор каталога. Необязательный параметр. По умолчанию будет использовано значение, указанное в настройках провайдера.role
— назначаемая роль.
Более подробную информацию о параметрах ресурса
yandex_iam_service_account
в Terraform, см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится информация о сервисном аккаунте. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание сервисного аккаунта: введите в терминал слово
yes
и нажмите Enter.После этого будет создан сервисный аккаунт. Проверить появление сервисного аккаунта можно в консоли управления
или с помощью команды CLI:yc iam service-account list
Чтобы создать сервисный аккаунт, воспользуйтесь методом create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create.
Чтобы назначить сервисному аккаунту роль logging.reader
на каталог, воспользуйтесь методом setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.
Создайте авторизованный ключ для сервисного аккаунта
- В консоли управления
выберите каталог, которому принадлежит сервисный аккаунт. - В списке сервисов выберите Identity and Access Management.
- На панели слева выберите
Сервисные аккаунты. - В открывшемся списке выберите сервисный аккаунт
grafana-plugin
. - Нажмите кнопку Создать новый ключ на верхней панели.
- Выберите пункт Создать авторизованный ключ.
- Выберите алгоритм шифрования.
- Задайте описание ключа, чтобы потом было проще найти его в консоли управления.
- Нажмите кнопку Создать.
- В открывшемся окне нажмите кнопку Скачать файл с ключами.
- Нажмите кнопку Закрыть.
Создайте авторизованные ключи для сервисного аккаунта grafana-plugin
:
yc iam key create --service-account-name grafana-plugin -o authorized_key.json
В случае успеха в файл authorized_key.json
будет записан закрытый ключ (privateKey
) и идентификатор открытого ключа (id
).
Пример файла с ключом:
{
"id": "lfkoe35hsk**********",
"service_account_id": "ajepg0mjt0**********",
"created_at": "2023-10-10T10:04:56Z",
"key_algorithm": "RSA_2048",
"public_key": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n",
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
}
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
service_account_id
— идентификатор сервисного аккаунта. Обязательный параметр.description
— описание ключа. Необязательный параметр.key_algorithm
— алгоритм генерации ключа. Необязательный параметр. По умолчанию используется алгоритмRSA_2048
. Допустимые значения параметра см. в документации API.
Пример структуры конфигурационного файла:
resource "yandex_iam_service_account_key" "sa-auth-key" { service_account_id = "<идентификатор_сервисного_аккаунта>" description = "<описание_ключа>" key_algorithm = "<алгоритм_генерации_ключа>" }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
, а также с помощью команды CLI:yc iam key list --service-account-id <идентификатор_сервисного_аккаунта>
-
Чтобы создать ключ доступа, воспользуйтесь методом REST API create для ресурса Key или вызовом gRPC API KeyService/Create.
Пример запроса с помощью cURL для метода REST API create
:
curl --request POST \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <IAM-токен>" \
--data '{"serviceAccountId": "<идентификатор_сервисного_аккаунта>"}' \
https://iam.api.cloud.yandex.net/iam/v1/keys
Где:
<IAM-токен>
— IAM-токен пользователя, у которого есть права на создание ключей для указанного сервисного аккаунта.<идентификатор_сервисного_аккаунта>
— идентификатор сервисного аккаунта, для которого создаются ключи.
В случае успеха в ответе сервера будет указан закрытый ключ (privateKey
) и идентификатор открытого ключа (id
). Сохраните эти данные. Получить значение ключа снова будет невозможно.
Пример ответа сервера:
{
"key": {
"createdAt": "2023-10-10T10:55:00+00:00",
"description": "",
"id": "lfkoe35hsk**********",
"keyAlgorithm": "RSA_2048",
"publicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----\n",
"serviceAccountId": "ajepg0mjt0**********"
},
"privateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
}
Создайте лог-группу
- В консоли управления
перейдите в каталог, в котором создали сервисный аккаунтgrafana-plugin
. - Выберите сервис Cloud Logging.
- Нажмите кнопку Создать группу.
- Введите имя лог-группы:
grafana-plugin
. - Укажите срок хранения записей в лог-группе.
- Нажмите кнопку Создать группу.
Чтобы создать лог-группу, выполните команду:
yc logging group create \
--name=grafana-plugin \
--retention-period=<срок_хранения> \
Где:
--name
— имя лог-группы.--retention-period
— срок хранения записей в лог-группе.
Результат:
done (1s)
id: af3flf29t8**********
folder_id: aoek6qrs8t**********
cloud_id: aoegtvhtp8**********
created_at: "2023-09-26T09:56:38.970Z"
name: grafana-plugin
status: ACTIVE
retention_period: 3600s
-
Опишите в конфигурационном файле параметры лог-группы:
provider "yandex" { token = "<OAuth-токен>" cloud_id = "<идентификатор_облака>" folder_id = "<идентификатор_каталога>" zone = "ru-central1-a" } resource "yandex_logging_group" "grafana-plugin" { name = "grafana-plugin" folder_id = "<идентификатор_каталога>" retention_period = "1h" }
Где:
name
— имя лог-группы.folder_id
— идентификатор каталога.retention_period
— срок хранения записей в лог-группе.
Более подробную информацию о параметрах ресурса
yandex_logging_group
в Terraform, см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
или с помощью команды CLI:yc logging group list
Чтобы создать лог-группу, воспользуйтесь методом REST API create для ресурса LogGroup или вызовом gRPC API LogGroupService/Create.
Добавьте записи в лог-группу
Чтобы добавить записи в лог-группу, выполните команду:
-
Linux, macOS:
yc logging write \ --group-name=grafana-plugin \ --message="My message" \ --level=INFO
-
Windows (cmd):
yc logging write ^ --group-name=grafana-plugin ^ --message="My message" ^ --level=INFO
-
Windows (PowerShell):
yc logging write ` --group-name=grafana-plugin ` --message="My message" ` --level=INFO
Где:
--group-name
— имя лог-группы, в которую вы хотите добавить записи.--message
— сообщение.--level
— уровень логирования.
Примечание
Флаги --group-name
и --message
можно опустить и указать только значения параметров. Например: grafana-plugin "My message"
.
Чтобы добавить записи в лог-группу, воспользуйтесь вызовом gRPC API LogIngestionService/Write.
Подключите источник данных в Grafana
-
В браузере перейдите по адресу
http://localhost:3000/
.Примечание
По умолчанию Grafana использует порт 3000, если в конфигурационном файле вы не указали другой
. -
На панели слева выберите Connections → Add new connection.
-
В списке источников выберите Yandex Cloud Logging.
-
Нажмите кнопку Add new data source.
-
В блоке Secret config, в поле API Key, вставьте содержимое файла с авторизованными ключами
authorized_key.json
. -
В блоке SDK config, в поле Folder ID, укажите идентификатор каталога, в котором находится лог-группа
grafana-plugin
. -
Нажмите кнопку Save & test.
Посмотрите логи в Grafana
-
В интерфейсе Grafana на панели слева выберите Explore.
-
В левом верхнем углу выберите из выпадающего списка источник данных Yandex Cloud Logging.
-
В редакторе запросов для источника:
-
В поле Group выберите идентификатор лог-группы
grafana-plugin
. -
В поле Filter query введите запрос на языке фильтрующих выражений.
-
В правом верхнем углу нажмите кнопку Run query.
В блоке Logs volume отобразится гистограмма с записями из лог-группы.
-
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы, удалите лог-группу.