Визуализация логов в Grafana с помощью плагина Cloud Logging
Плагин Yandex Cloud Logging для Grafana
Примечание
Плагин Cloud Logging работает с Grafana версии 11.2.0 и ниже. В разных версиях названия меню и элементы интерфейса могут отличаться.
Чтобы визуализировать логи:
- Установите плагин.
- Создайте сервисный аккаунт.
- Создайте авторизованный ключ для сервисного аккаунта.
- Создайте лог-группу.
- Добавьте записи в лог-группу.
- Подключите источник данных в 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), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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 отобразится гистограмма с записями из лог-группы.
-
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы, удалите лог-группу.