Статьи

Централизованное управление журналами и мониторинг для кластеров CoreOS

[Примечание: мы проводим вебинары Docker Monitoring и Docker Logging в сентябре — зарегистрируйтесь сегодня!]

Если вас интересуют такие вещи, как  CoreOS , журналы и мониторинг, вам следует ознакомиться с нашими предыдущими публикациями, посвященными CoreOS, о мониторинге кластеров ОС и узнать, как получить журналы CoreOS в ELK за 5 минут.   И это только начало интеграции SPM с CoreOS! Пример: мы недавно оптимизировали настройку SPM в CoreOS и интегрировали шлюз регистрации в Logsene в агент SPM для Docker . И это еще не все …

В этом посте мы хотим рассказать о текущем состоянии мониторинга и управления журналом CoreOS из Sematext, чтобы вы знали, что происходит, а также о вещах, которые могут быть полезны для вашей организации, таких как:

  1. Обзор возможностей
  2. Автопарк для СЗМ
  3. Как настроить службы мониторинга и ведения журнала

1. Обзор возможностей

  • Быстрая установка
    • добавить мониторинг и ведение журнала для всего кластера за 5 минут
  • Метрики производительности коллекции для кластера CoreOS
    • Метрики для всех узлов кластера CoreOS (хосты)

      • ЦП, память, использование диска
    • Подробные метрики для всех контейнеров на каждом хосте

      • ЦП, память, ограничения, сбои, сетевой и дисковый ввод-вывод,…
    • Обнаружение аномалий и оповещения для всех метрик
    • Обнаружение аномалий и оповещения для всех журналов
  • Связанные события контейнера, метрики и журналы
    • События Docker, такие как запуск / остановка / уничтожение, связаны с развертыванием, обслуживанием или иногда с ошибками и нежелательными перезапусками; Корреляция метрик, событий и журналов является естественным способом выявления проблем с использованием SPM.
  • Докер События

  • Централизованная настройка через etcd
    • Часто существует сочетание конфигураций в переменных среды, статических настроек в файлах конфигурации облака и комбинаций confd и etcd . Мы решили сохранить все настройки в etcd, поэтому настройки выполняются только один раз и к ним легко получить доступ.
    • Агент SPM для Docker включает службу шлюза ведения журнала для получения сообщения журнала через TCP. Обнаружение службы решается через etcd (где хранится незащищенный TCP). Все полученные сообщения анализируются, и поддерживаются следующие форматы:

      • journalctl -o короткий | шорт-исо | JSON
      • встроенный анализатор сообщений (например, для времени, уровня и текста сообщения dockerd)
      • JSON с разделителями
      • текстовые сообщения
      • В случаях, когда синтаксический анализ завершается неудачно, шлюз добавляет временную метку и сохраняет сообщение 1: 1.
    • Шлюз регистрации может быть настроен с помощью токена приложения Logsene — это делает его совместимым с большинством инструментов Unix, например journalctl -o json -n 10 | netcat localhost 9000
    • SPM для Docker собирает все журналы из контейнеров непосредственно из Docker API. Шлюз регистрации обычно используется для системных журналов — или для чего-либо еще, настроенного в journald (см. Ниже «Служба пересылки журналов»)
    • Передача в приемники Logsene зашифрована через HTTPS.
  • Служба пересылки журналов передает потоки в шлюз регистрации, извлекая их из journald. Кроме того, он сохраняет «время последнего журнала» для восстановления после перезапуска службы. Большинство людей принимают это как должное; но не все службы регистрации имеют такую ​​функцию восстановления. Есть много инструментов, которые просто фиксируют текущий поток журнала. Часто люди осознают это только когда пропускают журналы в один прекрасный день из-за перезагрузки, сбоя в сети, обновления программного обеспечения и т. Д. Но это как раз те типы ситуаций, когда вы хотели бы знать, что происходит!
  • Интеграция SPM в CoreOS

    2. Единицы флота для СЗМ

    Службы агента SPM устанавливаются через флот  (распределенную систему инициализации) во всем кластере. Давайте посмотрим эти файлы юнитов, прежде чем мы запустим их в облако.

    Первый файл модуля spm-agent.service запускает агент SPM для Docker. Он использует токены и порты приложения SPM и Logsene для шлюза регистрации и т. Д. Он запускается на каждом хосте CoreOS (глобальный модуль).

    Файл блока флота — агент SPM вкл. Лог Шлюз: spm-agent.service

    Файл второго модуля logsene-service.service пересылает журналы из journald на этот шлюз регистрации, работающий как часть spm-agent-docker . Все поля, хранящиеся в журнале (вплоть до уровня исходного кода и номеров строк, предоставляемых модулями GO), затем доступны в Logsene.

    Файл блока флота — экспедитор журналов: logsene.service

    3. Настройте службы мониторинга и ведения журнала.

    Приготовление:

    1. Получить бесплатный аккаунт apps.sematext.com
    2. Создайте приложение SPM типа «Docker» и скопируйте маркер приложения SPM

    3. Сохраните конфигурацию в etcd
    # PREPARATION
    # set your application tokens for SPM and Logsene
    export $SPM_TOKEN=YOUR-SPM-TOKEN
    export $LOGSENE_TOKEN=YOUR-LOGSENE-TOKEN
    # set the port for the Logsene Gateway
    export $LG_PORT=9000
    # Store the tokens in etcd
    # please note the same key is used in the unit file!
    etcdctl set /sematext.com/myapp/spm/token $SPM_TOKEN
    etcdctl set /sematext.com/myapp/logsene/token $LOGSENE_TOKEN
    etcdctl set /sematext.com/myapp/logsene/gateway_port $LG_PORT
    
    

    Скачайте файлы юнитов флота и запустите сервис через fleetclt

    # INSTALLATION
    # Download the unit file for SPM
    wget https://raw.githubusercontent.com/sematext/spm-agent-docker/master/coreos/spm-agent.service
    # Start SPM Agent in the whole cluster
    fleetctl load spm-agent.service; fleetctl start spm-agent.service
    # Download the unit file for Logsene
    wget https://raw.githubusercontent.com/sematext/spm-agent-docker/master/coreos/logsene.service
    # Start the log forwarding service
    fleetctl load logsene.service; fleetctl start logsene.service
    

    Проверьте установку

    systemctl status spm-agent.service
    systemctl status logsene.service
    

    Отправьте несколько строк журнала, чтобы увидеть их в Logsene.

    journalctl -o json -n 10 | ncat localhost 9000

    Примерно через минуту вы увидите Метрики в SPM и Журналы в Logsene.

    Здоровье кластера в ‘птичьем обзоре’

    Обзор метрик хоста и контейнера для всего кластера

    Логи и метрики

    Ресурсы с открытым исходным кодом

    Некоторые из описанных здесь вещей с открытым исходным кодом:

    Резюме — Что это дает вам

    Вот что эта настройка обеспечивает для вас:

    • Метрики операционной системы каждого узла кластера CoreOS
    • Метрики контейнера и хоста на каждом узле
    • Все журналы из Docker-контейнеров и хостов (через journald)
    • События Docker со всех узлов
    • Журналы CoreOS со всех узлов

    Наличие этой настройки позволяет вам в полной мере использовать преимущества SPM и Logsene , определяя интеллектуальные оповещения для метрик и журналов (доставляемых по таким каналам, как электронная почта, PagerDuty, Slack, HipChat или любой WebHook), а также устанавливая корреляции между показателями производительности, события, журналы и оповещения.

    Запуск CoreOS? Нужна помощь в получении метрик CoreOS и / или журналов в SPM & Logsene? Дайте нам знать! Да, и если вы небольшой стартап — ping @sematext — вы можете получить хорошую скидку как на SPM, так и на Logsene!