[Эта статья была написана Миком Эмметтом]
В этом посте вы узнаете, как получить оперативную информацию (например, показатели производительности, события контейнеров и т. Д.) Из CoreOS, и упростите эту задачу с помощью etcd , fleet и SPM .
Мы будем использовать:
- SPM для Docker для запуска агента мониторинга в качестве контейнера Docker и сбора всех метрик и событий Docker для всех других контейнеров на одном хосте + метрики для хостов
- Fleet, чтобы беспрепятственно распространять этот контейнер на все хосты в кластере CoreOS, просто предоставив ему файл модуля флота, показанный ниже
- etcd, чтобы установить свойство для хранения токена приложения SPM для всего кластера
Большая картинка
Прежде чем мы начнем, давайте сделаем шаг назад и посмотрим на нашу конечную цель. Что мы хотим? Нам нужны графики с метриками производительности , нам нужен сбор событий , нам бы хотелось интегрировать обнаружение и оповещение об аномалиях , и мы хотим, чтобы это было не только для контейнеров, но и для хостов, на которых выполняются контейнеры. CoreOS не имеет менеджера пакетов и развертывает службы в контейнерах, поэтому мы хотим запустить агент SPM в контейнере 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.
Открытое Все
Все описанное здесь с открытым исходным кодом:
- Документация, исходный код и информация о поддержке доступна здесь: https://github.com/sematext/spm-agent-docker
- Каталог CoreOS содержит дополнительные примеры, такие как облако-файл конфигурация , позволяющий ФСМ и сервис Logsene для регистрации выхода journalctl в Logsene ELK Stack .
Резюме — Что это дает вам
После этой настройки мы получаем следующее:
- Метрики операционной системы каждого узла кластера CoreOS
- Метрика контейнера для всех контейнеров на каждом узле
- События Docker со всех узлов
- Журналы CoreOS со всех узлов
Имея эту небольшую настройку, вы сможете в полной мере использовать преимущества SPM и Logsene, например, определяя интеллектуальные оповещения для метрик и журналов, доставляемых по таким каналам, как электронная почта, PagerDuty, Slack, HipChat или любой WebHook, а также устанавливая взаимосвязи между показателями производительности, события, журналы и оповещения.
Запуск CoreOS? Нужна помощь в получении метрик CoreOS и / или журналов в SPM & Logsene? Дайте нам знать! Да, и если вы небольшой стартап — ping @sematext — вы можете получить хорошую скидку как на SPM, так и на Logsene!