Перейти к основному содержимому
Версия: 1.9

Docker

warning

Раздел в активной разработке, часть информации может быть неактуальной!

Настройте интеграцию, чтобы загрузить данные с Docker в Sage.

Выполните минимальные настройки для начала сбора телеметрии с Docker:

  • загрузка метрик;

  • настройка дашборда на основе метрик;

  • настройка алерта на основе метрик.

Метрики

Настройте загрузку метрик Docker в Sage:

  1. Установите экспортер cAdvisor для сбора метрик согласно инструкции. Метрики должны загружаться в формате Openmetrics.

  2. Зарегистрируйте таргеты для загрузки метрик в Sage с помощью Frost. Для этого создайте конфигурационный файл config.yml:

    # Группа в Sage, в которую будут загружаться метрики
    group: default
    # Имя клана, используемое при установке Sage (значение может быть произвольным)
    clan: example
    # Имя дата-центра, из которого загружаются метрики
    datacenter: dc01
    # Имя окружения, в котором расположен экспортер
    env: test

    # Адрес Sage API
    base_url: https://your.sage.domain/sauron/api

    systems:
    # Имя регистрируемой системы
    new-exporter:
    # Порт, на котором экспортер принимает запросы
    port: 9113
    # Лейблы, которые необходимо добавить к метриками системы
    staticLabels:
    job: exporter-metrics
    collection:
    target:
    # Список имен хостов, на которых установлены экспортеры
    - my-01.lovely.exporter
    - my-02.lovely.exporter
  3. Чтобы применить конфигурацию, выполните запрос:

    curl -i https://your.sage.domain/api/v1/targets \
    -X POST \
    --data-binary @config.yml \
    -H 'Authorization: Bearer eyJraWQ...FLw'

    Примечание: Запросы в Sage API должны включать Bearer-авторизацию с помощью JWT-токена, который передается в запросе в заголовке Authorization.

  4. Проверьте наличие метрик в системе. Для этого выполните поисковый запрос с метрикой up, указав в качестве лейблов интересующие параметры, например:

    pql up{group="sage", env="test", system="cybertruck", instance="apps-sage-1.ds.sage.local"}

    В результатах поиска найдите поле value, в которое передается одно из двух значений:

    • 1 — скрейпинг таргета выполняется успешно;
    • 0 — скрейпинг не работает по причине некорректных настроек или отсутствия доступов.

Grafana

Визуализируйте данные, загруженные в Sage, с помощью Grafana. Для этого:

  1. Перейдите на вкладку Grafana в интерфейсе приложения и авторизуйтесь.

  2. Выберите пункт меню Dashboards в боковой панели. На странице выберите из списка папку SageTemplates.

    Поиск дашбордов в Grafana

  3. Скопируйте из папки пример дашборда для Docker. Если загрузка данных была настроена успешно, на дашборде отобразится соответствующая информация.

Пример дашборда в Grafana:

Пример дашборда в Grafana

Алерты

Настройте алерты на основе загруженных метрик Docker.

Чтобы создать алерт в Sage:

  1. Подготовьте поисковый запрос, который будет использован в качестве условия в алерте. Для этого используйте метрики, экспортируемые с помощью cAdvisor (список см. в документации).

  2. Создайте адрес, на который будут приходить оповещения по алерту.

  3. Задайте логику выполнения алерта с помощью скрипта.

    Пример алерта для отслеживания остановленных контейнеров:

    // Запрос в Sage, который возвращает данные по указанной метрике за последнюю минуту
    const dead_systems = await mage({
    start: '-1m',
    query: 'pql step=1m container_oom_events_total > 0',
    });

    // Фильтрация результата запроса по уникальному имени системы
    const dead_instances = [
    ...new Set(dead_systems.map(point => point.instance))
    ]

    // Отправка оповещения при условии, если найдена хотя бы одна неисправная система
    if (dead_instances.length > 0) {
    // Конкатенация имен неисправных систем в одну строку
    const instances_str = dead_instances.join('\n')

    // Отправка оповещения дежурному
    await page({
    // Список адресов для отправки оповещения
    addresses: ['slack:sage-alerts'],
    // Строка с текстом оповещения
    message: `Containers are killed with OOM!\Reported by:\n${instances_str}`,
    cooldownKey: `my-sys-cooldown`,
    cooldownDuration: 3600,
    });
    }
  4. В результате при выполнении указанных условий на заданный адрес будет доставлено оповещение.