Часто бывает полезно отслеживать более широкий набор метрик, чем тот, что из коробки доступно в Yandex Monitoring.Предположим, вам интересно узнать, сколько людей заходит на ваш сайт и как их число зависит от времени дня или дня недели. Вы можете выгружать эти данные из Яндекс.Метрики или вашей собственной аналитической системы и самостоятельно загружать в Yandex Monitoring с помощью API.Давайте попробуем сделать это с нашим сайтом.
Отправка метрик через API
- Получите IAM-токен:
- Инструкция для аккаунта на Яндексе.
- Инструкция для сервисного аккаунта.
Обратите внимание — токены устаревают через 12 часов после создания. Поэтому если вы сделаете паузу при выполнении данной практической работы, для продолжения лучше запросить новый токен.
- Сохраните токен в переменной окружения, так его будет проще использовать:
export IAM_TOKEN=CggaATEVAgA...
- Создайте файл с телом запроса, например
my-metrics.json
. В свойствеmetrics
указывается список метрик для записи. Пусть это будет количество пользователей сайта. В массивеtimeseries
указываются значения на разные моменты времени (измените число на сегодняшнее).
{
"metrics": [
{
"name": "number_of_users",
"labels": {
"site": "aibolit"
},
"type": "IGAUGE",
"timeseries": [
{
"ts": "2021-05-10T10:00:00Z",
"value": "22"
},
{
"ts": "2021-05-10T11:00:00Z",
"value": "44"
},
{
"ts": "2021-05-10T12:00:00Z",
"value": "11"
},
{
"ts": "2021-05-10T13:00:00Z",
"value": "55"
},
{
"ts": "2021-05-10T14:00:00Z",
"value": "33"
}
]
}
]
}
- Отправьте запрос, указав в нем ID каталога и имя сервиса custom (это имя указывается для всех пользовательских метрик):
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${IAM_TOKEN}" \
-d '@my-metrics.json' \
'https://monitoring.api.cloud.yandex.net/monitoring/v2/data/write?folderId=b1gfdbij3ijgopgqv9m9&service=custom'
Мониторинг пользовательских метрик
- Создайте на вашем дашборде новый виджет, назовите его «Число пользователей сайта».
- В виджете создайте запрос с параметрами
service = Custom
иname = number_of_users
. Убедитесь, что в виджете выбран нужный период:
Этот график станет нагляднее, если вместо точек отображать столбцы. Тип графика можно изменить с помощью кнопки в правом верхнем углу виджета:
Мониторинг метрик Linux
Другой пример — ваши приложения запущены на виртуальных машинах под Linux. По умолчанию вы можете посмотреть утилизацию ресурсов процессора или диска для виртуальной машины в целом. Но вам будет полезно знать, сколько ресурсов потребляет каждое из них. В Yandex Monitoring вы можете отслеживать системные метрики Linux, такие как объем свободной памяти или загрузка процессора. Но для этого нужно дополнительно настроить отправку этих метрик с помощью Yandex Unified Agent, который мы уже упоминали.
Установка Yandex Unified Agent
- Создайте виртуальную машину. На нее вы будете устанавливать Yandex Unified Agent. Можете использовать образ с ОС Ubuntu, который вы создали ранее и поместили в Container Registry. Назовите машину, например, for-ua.При создании используйте ваш сервисный аккаунт. Задайте логин (например, ua-user) и ssh-ключ.
- Для сервисного аккаунта добавьте роль monitoring.editor.
- Посмотрите публичный IP-адрес машины for-ua и зайдите на нее по ssh:
ssh ua-user@84.252.135.237
Теперь вы можете установить Yandex Unified Agent:
Скопировать кодua_version=$(curl -s https://storage.yandexcloud.net/yc-unified-agent/latest-version) bash -c 'curl -s -O https://storage.yandexcloud.net/yc-unified-agent/releases/$ua_version/unified_agent && chmod +x ./unified_agent'
- Создайте файл config.yml с типовой спецификацией для доставки метрик Linux.
В параметре folder_id
укажите ID вашего каталога.
status:
port: "16241"
storages:
- name: main
plugin: fs
config:
directory: /var/lib/yandex/unified_agent/main
max_partition_size: 100mb
max_segment_size: 10mb
channels:
- name: cloud_monitoring
channel:
pipe:
- storage_ref:
name: main
output:
plugin: yc_metrics
config:
folder_id: "b1gfdbij3ijgopgqv9m9"
iam:
cloud_meta: {}
routes:
- input:
plugin: linux_metrics
config:
namespace: sys
channel:
channel_ref:
name: cloud_monitoring
- input:
plugin: agent_metrics
config:
namespace: ua
channel:
pipe:
- filter:
plugin: filter_metrics
config:
match: "{scope=health}"
channel_ref:
name: cloud_monitoring
import:
- /etc/yandex/unified_agent/conf.d/*.yml
В секции status
достаточно указать порт для просмотра статуса Yandex Unified Agent.Секция storage
содержит список хранилищ, в которых будут находиться выгруженные данные. Для практической работы достаточно одного файлового хранилища (fs
).Секция channels
содержит список именованных каналов, к этим каналам можно обращаться по имени из других секций спецификации. Здесь обозначен один канал с именем cloud_monitoring
. К нему идет обращение из секции routes
, которая содержит список маршрутов доставки метрик.Подробнее о конфигурировании Yandex Unified Agent вы можете почитать в документации.
- Скопируйте файл спецификации в виртуальную машину for-ua:
scp config.yml ua-user@84.252.135.237:config.yml
- Теперь запустите Unified Agent с созданной спецификацией:
sudo ./unified_agent --config config.yml
Если запуск прошел успешно, в конце вы увидите сообщение такого вида:
... NOTICE agent started
Настройка виджета для мониторинга метрик Linux
- Создайте на вашем дашборде новый виджет, назовите его «Метрики Linux».
- В виджете создайте запрос с параметром
service = Custom
. В параметре name выберите любой параметр, начинающийся с sys — все это системные метрики, поставляемые Unified Agent. Например,name = sys.memory.MemAvailable
.
Теперь в виджете отображается график наличия свободной оперативной памяти в виртуальных машинах вашего облака.
Свежие комментарии