Практическая работа. Отправка собственных метрик
Кратко:
- Отправка собственных метрик в Yandex Monitoring возможна через API.
- Для этого нужно получить IAM-токен и создать файл с телом запроса (my-metrics.json).
- В файле указывается список метрик и значения на разные моменты времени.
- Отправлять запрос с указанием идентификатора каталога и имени сервиса custom.
- На дашборде можно создать виджет с графиком пользовательских метрик.
- Мониторинг метрик Linux возможен с помощью Yandex Unified Agent.
- Установка Yandex Unified Agent на виртуальной машине с ОС Ubuntu.
- Создание файла config.yml с типовой спецификацией для доставки метрик Linux.
- Настройка виджета для мониторинга метрик Linux с использованием системных метрик Linux.
Практическая работа. Отправка собственных метрик
Часто бывает полезно отслеживать более широкий набор метрик, чем тот, что доступен в Yandex Monitoring «из коробки».
Предположим, вам интересно узнать, сколько людей заходит на ваш сайт и как их число зависит от времени дня или дня недели. Вы можете выгружать эти данные из Яндекс Метрики или вашей собственной аналитической системы и самостоятельно загружать в Yandex Monitoring с помощью API.
Давайте попробуем сделать это с нашим сайтом.
Отправка метрик через API
-
Получите IAM-токен:
- Инструкция для аккаунта на Яндексе.
- Инструкция для сервисного аккаунта.
Обратите внимание — токены устаревают через 12 часов после создания. Поэтому если вы сделаете паузу при выполнении данной практической работы, для продолжения лучше запросить новый токен.
-
Сохраните токен в переменной окружения, так его будет проще использовать:
export IAM_TOKEN=<IAM-токен> -
Создайте файл с телом запроса, например
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" } ] } ] }
-
Отправьте запрос, указав в нем идентификатор каталога и имя сервиса
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=<идентификатор_каталога>&service=custom'
При выполнении этой команды может вернуться ошибка:
{"writtenMetricsCount":0,"errorMessage":"Response not OK from all clusters
UNKNOWN_SHARD: Metrics storage is not initialized yet, please wait
UNKNOWN_SHARD: Metrics storage is not initialized yet, please wait"}
Если это произошло - подождите несколько минут и повторите запрос.
Мониторинг пользовательских метрик
-
Создайте на вашем дашборде новый виджет с графиком, назовите его «Число пользователей сайта».
-
В виджете создайте запрос с параметрами
service = Custom Metricsи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@<публичный_адрес_ВМ>Теперь вы можете установить 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'Также вы можете выбрать опцию Установить в поле Агент сбора метрик при создании ВМ, тогда Yandex Unified Agent будет установлен автоматически. -
Создайте файл
config.ymlс типовой спецификацией для доставки метрик Linux.В параметреfolder_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: "<идентификатор_каталога>" 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Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. :config.yml -
Теперь запустите Unified Agent с созданной спецификацией:
sudo ./unified_agent --config config.ymlЕсли запуск прошел успешно, в конце вы увидите сообщение такого вида:... NOTICE agent started
Настройка виджета для мониторинга метрик Linux
-
Создайте на вашем дашборде новый виджет с графиком, назовите его «Метрики Linux».
-
В виджете создайте запрос с параметром
service = Custom Metrics. В параметреnameвыберите любой параметр, начинающийся сsys— всё это системные метрики, поставляемые Unified Agent. Например,name = sys.memory.MemAvailable.
Теперь в виджете отображается график наличия свободной оперативной памяти в виртуальной машинеfor-ua.