Статьи

Мониторинг кластеров CoreOS

[Эта статья была написана Миком Эмметтом]

В этом посте вы узнаете, как получить оперативную информацию (например, показатели производительности, события контейнеров и т. Д.) Из CoreOS, и упростите эту задачу с помощью etcd , fleet и SPM .

Мы будем использовать:

  • SPM для Docker для запуска агента мониторинга в качестве контейнера Docker и сбора всех метрик и событий Docker для всех других контейнеров на одном хосте + метрики для хостов
  • Fleet, чтобы беспрепятственно распространять этот контейнер на все хосты в кластере CoreOS, просто предоставив ему файл модуля флота, показанный ниже
  • etcd, чтобы установить свойство для хранения токена приложения SPM для всего кластера

Большая картинка

Прежде чем мы начнем, давайте сделаем шаг назад и посмотрим на нашу конечную цель. Что мы хотим? Нам нужны графики с метриками производительности , нам нужен сбор событий , нам бы хотелось интегрировать обнаружение и оповещение об аномалиях , и мы хотим, чтобы это было не только для контейнеров, но и для хостов, на которых выполняются контейнеры. CoreOS не имеет менеджера пакетов и развертывает службы в контейнерах, поэтому мы хотим запустить агент SPM в контейнере Docker , как показано на следующем рисунке:

SPM_for_Docker

К концу этого поста каждый из ваших хостов Docker может выглядеть как на рисунке выше, с одним или несколькими вашими собственными контейнерами, на которых выполняются ваши собственные приложения, и одним контейнером агента SPM Docker, который контролирует все ваши контейнеры и базовые хосты.

3 простых шага

1)   Создайте новое приложение SPM типа «Docker» и скопируйте маркер приложения SPM

2) Установите токен приложения SPM через etcd. Это делает маркер мгновенно доступным для всех экземпляров агента SPM в кластере:

etcdctl set /sematext.com/myapp/spm/token/SPM_TOKEN YOUR_SPM_APP_TOKEN

Конечно, вы можете изменить часть « myapp » на любую, какую захотите. Это просто действует как пространство имен в etcd, если у вас есть несколько приложений SPM (и, следовательно, несколько токенов приложений SPM).

3) Возьмите файл модуля spm-agent.service и отправьте его во флот:

# download service file for spm-agent-docker
wget https://raw.githubusercontent.com/sematext/spm-agent-docker/master/coreos/spm-agent.service
# Load and start the service with
fleetctl load spm-agent.service
fleetctl start spm-agent.service

Файл флота

О чем этот файл отряда флота? Это просто. Он читает токен приложения SPM из etcd, а затем запускает контейнер Docker с spm-agent-docker внутри. Вот как это выглядит:

[Unit]
Description=SPM Docker Agent
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
EnvironmentFile=/etc/environment
Restart=always
RestartSec=30s
ExecStartPre=-/usr/bin/docker kill spm-agent
ExecStartPre=-/usr/bin/docker rm spm-agent
ExecStartPre=/usr/bin/docker pull sematext/spm-agent-docker:latest
ExecStart=/bin/sh -c 'set -ex; /usr/bin/docker run --name spm-agent -e
SPM_TOKEN=$(etcdctl get /sematext.com/myapp/spm/SPM_TOKEN) -e HOSTNAME=$HOSTNAME -v /var/run/docker.sock:/var/run/docker.sock sematext/spm-agent-docker' ExecStop=/usr/bin/docker stop spm-agent

[Install]
WantedBy=multi-user.target

[X-Fleet]
Global=true

Примерно через минуту вы увидите метрики и события Docker в SPM.

Bildschirmfoto 2015-06-24 мкм 13.56.39

Открытое Все

Все описанное здесь с открытым исходным кодом:

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

После этой настройки мы получаем следующее:

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

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