• Главная
  • DataScience
  • CloudServicesEngineer
  • Поиск
Data Science

МА. ПР. Отправка собственных метрик

Практическая работа. Отправка собственных метрик

Кратко:

  • Отправка собственных метрик в 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

  1. Получите IAM-токен:
    • Инструкция для аккаунта на Яндексе.
    • Инструкция для сервисного аккаунта.
Обратите внимание — токены устаревают через 12 часов после создания. Поэтому если вы сделаете паузу при выполнении данной практической работы, для продолжения лучше запросить новый токен.
  1. Сохраните токен в переменной окружения, так его будет проще использовать:
    export IAM_TOKEN=<IAM-токен>
     
     
  2. Создайте файл с телом запроса, например 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"
            }
          ]
        }
      ]
    }
 
  1. Отправьте запрос, указав в нем идентификатор каталога и имя сервиса 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"}
 
Если это произошло - подождите несколько минут и повторите запрос.

Мониторинг пользовательских метрик

  1. Создайте на вашем дашборде новый виджет с графиком, назовите его «Число пользователей сайта».
  2. В виджете создайте запрос с параметрами service = Custom Metrics и name = number_of_users. Убедитесь, что в виджете выбран нужный период:
    image
    Этот график станет нагляднее, если вместо точек отображать столбцы. Тип графика можно изменить с помощью кнопки в правом верхнем углу виджета:
    image

Мониторинг метрик Linux

Другой пример — ваши приложения запущены на виртуальных машинах под Linux. По умолчанию вы можете посмотреть утилизацию ресурсов процессора или диска для ВМ в целом. Но вам будет полезно знать, сколько ресурсов потребляет каждое из них. В Yandex Monitoring вы можете отслеживать системные метрики Linux, такие как объём свободной памяти или загрузка процессора. Но для этого нужно дополнительно настроить отправку этих метрик с помощью Yandex Unified Agent, который мы уже упоминали.

Установка Yandex Unified Agent

  1. Создайте виртуальную машину. На неё вы будете устанавливать Yandex Unified Agent. Можете использовать образ с ОС Ubuntu, который вы создали ранее и поместили в Container Registry. Назовите машину, например, for-ua.
    При создании используйте ваш сервисный аккаунт. Задайте логин (например ua-user) и ssh-ключ.
  2. Для сервисного аккаунта добавьте роль monitoring.editor.
  3. Посмотрите публичный 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 будет установлен автоматически.
  4. Создайте файл 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 вы можете почитать в документации.
  5. Скопируйте файл спецификации в виртуальную машину for-ua:
    scp config.yml Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.:config.yml
     
     
  6. Теперь запустите Unified Agent с созданной спецификацией:
    sudo ./unified_agent --config config.yml
     
     
    Если запуск прошел успешно, в конце вы увидите сообщение такого вида:
    ... NOTICE agent started
     
     

Настройка виджета для мониторинга метрик Linux

  1. Создайте на вашем дашборде новый виджет с графиком, назовите его «Метрики Linux».
  2. В виджете создайте запрос с параметром service = Custom Metrics. В параметре name выберите любой параметр, начинающийся с sys — всё это системные метрики, поставляемые Unified Agent. Например, name = sys.memory.MemAvailable.
    image
    Теперь в виджете отображается график наличия свободной оперативной памяти в виртуальной машине for-ua.

 

 

Категория: Cloud Services Engineer
Просмотров: 857

МА. Начало работы с Yandex Monitoring

Начало работы с Yandex Monitoring

Кратко:

  • Создание дашборда в Yandex Monitoring
  • Мониторинг сайта клиники «Доктор Айболит» с помощью утилиты wget
  • Добавление виджета с графиком в дашборд
  • Настройка периода времени для графика
  • Растяжка и перемещение виджета на дашборде
  • Редактирование и настройка виджета
  • Добавление функции суммирования трафика в виджет

Начало работы с Yandex Monitoring

В этой практической работе вы создадите свой дашборд в сервисе Yandex Monitoring.

Подготовка. Что мониторить

Для мониторинга используйте сайт клиники «Доктор Айболит», который вы создавали на уроке про Object Storage. Будем отслеживать объём трафика, поступающий на сайт. Чтобы имитировать нагрузку, мы воспользуемся утилитой wget, которую уже использовали в практической работе с кластером Managed Kubernetes. Если у вас не установлена эта утилита, её можно скачать здесь. Адрес же своего сайта можно посмотреть в Object Storage.
while true; do wget -q -O- <адрес_сайта>; done

Создание дашборда и виджета

  1. Откройте начальную страницу Yandex Monitoring. На вкладке Главная нажмите кнопку Создать дашборд.
    iamge
  2. Открылось окно создания дашборда. В правом верхнем углу нажмите кнопку Сохранить, введите название нового дашборда и сохраните его.
  3. Новый дашборд пустой, он не содержит виджетов. Давайте добавим виджет с графиком. Нажмите кнопку Редактировать и в блоке Добавить виджет выберите График.
  4. Метрики добавляются в виджет с помощью запросов. Но это совсем не сложно — запросы создаются с помощью удобного конструктора, размещённого в нижней части страницы.
    Конструктор сам предлагает, какие параметры нужно заполнить, и показывает доступные значения.
    image
  5. Выберите service = Object Storage, затем name = traffic и resource_id = <имя_бакета_с_сайтом>. Больше ничего выбирать не нужно. Этот запрос означает, что вы хотите мониторить входящий и исходящий трафик своего сайта.
    Сразу после сохранения запроса вверху отобразятся графики, которые соответствуют указанным параметрам.
    image
  6. Вы можете настроить период времени, который хотите видеть на графике. В нашем случае будет более наглядно, если вы укажете небольшой период, например, 10 или 15 минут.
    image
  7. Нажмите кнопку Сохранить, чтобы созданный виджет появился на вашем новом дашборде.
    Вы можете растянуть или сжать виджет до нужного размера, потянув мышью за правый нижний угол с треугольником, и перетащить виджет на нужное место на дашборде.
    В правом верхнем углу виджета отображаются значки для редактирования («карандаш») и настройки («шестеренка»). Вы можете в любой момент отредактировать запрос, по которому строится график, а в настройках можете изменить название виджета или включить отображение легенды. Также вы можете удалить виджет, если он больше не нужен.
    image
  8. Задайте название для вашего виджета, например: «Трафик сайта клиники Айболит».
  9. Нажмите кнопку Сохранить, чтобы сохранить новый виджет на дашборде.

Использование функций в виджетах

  1. На виджете вы видите два отдельных графика для входящего и исходящего трафика. Допустим, вы хотите также посмотреть и суммарный трафик. Вернёмся в созданный ранее виджет и добавим к нему еще один график.
    Нажмите на виджете значок редактирования («карандаш»).
  2. Внизу нажмите кнопку Добавить запрос. Повторите все настройки предыдущего запроса. Затем в строке ниже добавьте функцию — нажмите значок «+», выберите раздел Комбинирование и функцию series_sum(). В скобках в данном случае ничего указывать не нужно.
    image
  3. На графике появилась ещё одна линия, которая показывает значения суммарного трафика. Если вы наведете на неё указатель мыши, то во всплывающем окне увидите, что у этой метрики нет имени.
    Чтобы добавить имя, в той же строке, где вы описывали функцию, снова нажмите на значок «+», выберите раздел Другое и функцию alias. В скобках введите имя метрики, например, Traffic_Total.
    Теперь при наведении указателя мыши на график будет отображаться это имя.
    image
  4. Нажмите кнопку Сохранить. На дашборде вы увидите обновленный виджет с тремя графиками. Снова нажмите кнопку Сохранить, чтобы сохранить изменения на дашборде.
  5. Виджеты можно копировать с одного дашборда на другой с помощью меню:
    image

 

Категория: Cloud Services Engineer
Просмотров: 702

МА. Зачем нужен мониторинг. Yandex Monitoring

Зачем нужен мониторинг. Yandex Monitoring

Кратко:

  • Мониторинг - контроль за изменяющимися со временем характеристиками системы (метриками).
  • Задачи мониторинга: хранение и визуализация метрик в реальном времени, оповещение пользователя о проблемах.
  • Мониторинг необходим для построения надёжных приложений и сервисов.
  • Yandex Monitoring - инструмент для мониторинга облачной инфраструктуры Yandex Cloud.
  • Системные метрики регистрируются сразу при создании ресурса в Yandex Cloud.
  • Метрики визуализируются с помощью графиков, виджеты позволяют группировать метрики.
  • В Yandex Monitoring есть готовые дашборды для облачных сервисов.
  • Пользовательские дашборды позволяют вывести любые метрики, включая свои.
  • Метрики Yandex Cloud можно использовать в других сервисах и приложениях.

Зачем нужен мониторинг. Yandex Monitoring

Мониторинг — это контроль за характеристиками системы, меняющимися со временем. Это могут быть трафик сайта, утилизация памяти или ресурсов процессора и т.д. Такие характеристики называются метриками. Их изменение отслеживают для того, чтобы они не выходили за границы приемлемых значений. Например, если загруженность процессора близка к 100%, то стоит нарастить вычислительные ресурсы.
Задачи мониторинга — хранить и визуализировать метрики в реальном времени, а также оповещать пользователя, если что-то пошло не так.

Нужен ли вам мониторинг

Единственно верный ответ — да, мониторинг нужен всегда. Без мониторинга невозможно построить надёжное приложение или сервис.
Даже если ваше приложение небольшое и не критически важное, мониторинг будет полезен. Он поможет вовремя обнаружить, что на сервере заканчивается оперативная память или свободное место на диске, позволит отследить аномально быстрый рост числа аккаунтов и т.д.
В Yandex Cloud есть собственный инструмент для мониторинга облачной инфраструктуры и размещённых в ней сервисов — Yandex Monitoring.

Обзор Yandex Monitoring

У каждого ресурса в Yandex Cloud есть набор системных метрик. Такие метрики начинают регистрироваться сразу же в момент создания ресурса. Например, для виртуальной машины можно следить за загрузкой процессора и утилизацией оперативной памяти.
Метрики обычно визуализируются с помощью графиков (значения метрик можно выводить и в текстовом виде, но это менее наглядно). Блоки с графиками или текстом называются виджетами. Несколько виджетов можно расположить рядом, тогда получается дашборд.
В Yandex Monitoring есть готовые дашборды для облачных сервисов — виртуальных машин, балансировщиков, кластеров Managed Kubernetes и других. Сервисные дашборды не надо настраивать, они работают из коробки.
image
Когда вы наводите указатель мыши на какой-то график на дашборде, всплывает окно со значением метки.
image
Если на сервисных дашбордах информации недостаточно, можно настроить собственные, пользовательские дашборды и вывести на них практически любые системные или пользовательские метрики. Вы узнаете, как это сделать, в следующей практической работе.
Пользовательские метрики можно создавать не только для сервисов Yandex Cloud, но и для своих приложений. Так вы сможете собрать все критические показатели вместе и наблюдать за ними, не переключаясь между различными системами мониторинга.

Выгрузка и загрузка метрик

Вы можете использовать метрики Yandex Cloud в другом сервисе или приложении. Для этого их выгружают в файл. И наоборот, в Yandex Cloud Monitoring можно загружать метрики из других приложений и сервисов, чтобы было удобнее контролировать их работу без переключения на разные дашборды. Подробнее мы рассмотрим эти кейсы в практических работах.
За загрузку метрик отвечает агент для поставки метрик Yandex Unified Agent.

Хранение метрик и удаление устаревших метрик

Как мы уже говорили, системные метрики автоматически собираются со всех активных ресурсов Yandex Cloud. После удаления ресурса сбор метрик с него прекращается, но уже собранные метрики не удаляются сразу, а хранятся в течение 30 дней.
Например, если вы удалили виртуальную машину 1 августа, то её метрики будут доступны в Yandex Monitoring до 31 августа.
Любые системные метрики, для которых новые значения не поступали в течение 30 дней, считаются устаревшими. Такие метрики автоматически удаляются из Yandex Monitoring раз в сутки.
Например, даже если вы не удаляли виртуальную машину, а просто остановили её и не запускали в течение месяца, то собранные для неё метрики будут удалены.
Автоматическое удаление затрагивает только системные метрики и не распространяется на пользовательские.
 
Проверьте себя:
Что такое метрика?
 
Правильный ответ:
  • Количественная характеристика системы, меняющаяся во времени.
Что такое сервисный дашборд?
 
Правильный ответ:
  • Дашборд, отражающий текущее состояние какого-то сервиса и доступный без дополнительных настроек, «из коробки»

 

Категория: Cloud Services Engineer
Просмотров: 1044

ОТ. ПР. Сбой приложения

ПР. Сбой приложения

Кратко:

  • Сбой приложения: ситуация, когда ВМ работоспособна, но произошла ошибка в приложении.
  • Проверка состояния ВМ: активация проверки состояний в консоли управления и проверка доступности сервера в браузере.
  • Остановка процессов nginx на виртуальной машине для имитации сбоя приложения.
  • Переключение трафика на другую виртуальную машину при обнаружении сбоя приложения.
  • Подтверждение недоступности сервера после остановки NGINX.
  • Наблюдение за изменением состояния виртуальной машины при сбое приложения.
  • Автоматическая работа Yandex Cloud над восстановлением работоспособности группы виртуальных машин.

Практическая работа. Сбой приложения

Последний сценарий, который мы рассмотрим, это сбой приложения. Ситуация, когда сама ВМ работоспособна, но по каким-то причинам произошла ошибка в приложении. Это может быть потеря соединения с базой данных или какой-то баг в запущенном приложении (например утечка памяти). Давайте сымитируем такой сценарий. На наших виртуальных машинах запущен только веб-сервер NGINX, давайте остановим его. Но сначала включим проверку состояния ВМ.
  1. В консоли управления откройте вкладку Обзор для вашей группы виртуальных машин, нажмите кнопку Изменить и активируйте проверку состояний. Сохраните изменения.
image
  1. В браузере откройте страницу с внешним IP-адресом балансировщика, привязанного к вашей группе, и посмотрите, на какую из машин выводится трафик. Узнайте внешний IP-адрес этой машины.
  2. В новой вкладке браузера откройте IP-адрес этой виртуальной машины и убедитесь, что выводится приветственная страница, т. е. сервер доступен.
  3. Помните, когда вы меняли файл конфигурации для группы машин, вы добавили в него пользователя my-user? Теперь он вам пригодится — из консоли зайдите на ВМ от его имени:
    ssh my-user@<внешний_IP-адрес_ВМ>
     
     
  4. Посмотрите список запущенных процессов:
    ps aux
     
    Убедитесь, что в списке есть процессы nginx:
image
  1. Теперь остановите эти процессы, чтобы сделать сервер недоступным:
    sudo killall nginx
     
     
  2. В браузере обновите страницу балансировщика. Вы увидите, что теперь трафик направляется на другую виртуальную машину группы. Это означает, что Instance Group обнаружил сбой приложения и переключил трафик.
  3. Теперь обновите страницу виртуальной машины, на которой вы остановили NGINX. Убедитесь, что сервер теперь недоступен.
  4. Откройте список машин вашей группы и проследите, как меняется состояние одной из машин.
    Сначала будет закрыт трафик (статус Closing traffic), затем виртуальная машина будет остановлена (статус Stopping instance), а затем перезапущена (статус Running actual).
  5. Убедитесь, что веб-сервер на этой ВМ снова доступен.
Мы проверили четыре основных сценария сбоев и убедились, что Yandex Cloud автоматически отрабатывает их и восстанавливает работоспособность группы.
Теперь вы можете удалить группу виртуальных машин, в этом курсе она больше не понадобится.

 

Категория: Cloud Services Engineer
Просмотров: 571

ОТ. ПР. Обновление приложения

ПР. Обновление приложения

Кратко:

  • Обновление приложений на виртуальных машинах происходит по тем же правилам, что и обновление ОС.
  • Первый вариант обновления: изменить шаблон ВМ и выбрать образ с Ubuntu 22.04, параметры политики развертывания: группу нельзя расширять, уменьшать только на одну ВМ.
  • Второй вариант обновления: изменить параметры развертывания, выбрать образ с Ubuntu и NGINX, создать новую машину, открыть трафик, вывести из строя устаревшие ВМ.

Практическая работа. Обновление приложения

В практической работе с CLI вы уже научились обновлять операционную систему для группы виртуальных машин. Любые приложения, установленные на ВМ, обновляются по тем же правилам. Давайте рассмотрим этот процесс ещё раз.

Первый вариант обновления

  1. Если вы работаете в консоли управления, измените шаблон ВМ и выберите образ с ОС Ubuntu 22.04. Убедитесь, что параметры политики развертывания такие: группу нельзя расширять, а уменьшать можно только на одну ВМ.
image
Политика развёртывания группы виртуальных машин (вариант 1)
Если вы работаете в командной строке, в спецификации specification.yaml измените параметр image_id (например с fd8s2gbn4d5k2rcf12d9 на fd8l45jhe4nvt0ih7h2e) и запустите обновление группы:
yc compute instance-group update \
  --id <instance_group_id> \
  --file <путь_к_файлу_specification.yaml>
  1. В консоли управления на странице группы ВМ перейдите на вкладку Список ВМ и проследите, как меняются статусы машин.
  2. Сначала вы увидите статус Running outdated. Это означает, что машины работают со старой версией приложения.
  3. Затем одна из машин начинает обновляться: для неё закрывается трафик (статус Closing traffic), она останавливается (статус Stopping instance), обновляется (статус Updating instance), затем трафик снова открывается (статус Opening traffic), и наконец статус меняется на Running actual. Обновление выполнено.
  4. Затем то же самое последовательно выполняется для остальных машин в группе.
Порядок обновления зависит от политики развёртывания. Мы запретили увеличивать размер группы и указали, что одновременно неработоспособной может быть только одна машина. Именно так и произошло обновление: машины по одной выводились из строя, обновлялись и запускались снова.

Второй вариант обновления

  1. Теперь давайте изменим настройки политики развёртывания.
Если вы работаете в консоли управления, измените шаблон ВМ и выберите образ с Ubuntu и NGINX, созданный ранее и помещённый в Container Registry.
Измените параметры развёртывания. Теперь группу можно расширять на одну ВМ, а уменьшать нельзя:
image
Политика развёртывания группы виртуальных машин (вариант 2)
Если вы работаете в командной строке, в спецификации specification.yaml измените параметр image_id (например, снова с fd8ju9iqf6g5bcq77jns на fd8s2gbn4d5k2rcf12d9). Параметры обновления измените так:
deploy_policy:
    max_unavailable: 0
    max_expansion: 1
Запустите обновление группы.
  1. В консоли управления на странице группы ВМ перейдите на вкладку Список ВМ и проследите, как меняются статусы машин.
  2. Сначала вы увидите статус Running outdated. Затем создаётся новая машина (статус Creating instance), для неё открывается трафик (статус Opening traffic), статус машины меняется на Running actual, при этом одна из «устаревших» ВМ выводится из строя (статусы Closing traffic и Stopping instance).
  3. Затем то же самое последовательно выполняется для остальных машин в группе.

 

Категория: Cloud Services Engineer
Просмотров: 503
  1. ОТ. ПР. Сбой зоны доступности
  2. ОТ. ПР. Сбой виртуальной машины
  3. ОТ. Принципы отказоустойчивости
  4. МК. Управление доступом

Страница 8 из 19

  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
© Gantry Framework 2016 - 2026
Developed by RocketTheme exclusively
for Gantry 5.
  • Главная
  • Начало
  • Карта
Back to top