Серверы и деплой

Как подключить сервер к мониторингу без входящих портов

Установка агента одной командой, что он присылает, откуда берутся инциденты и почему платформе не нужны ни ключи от сервера, ни открытые порты.

Александр ЦапковОбновлено 23 сентября 20263 мин
Схема: ваш сервер исходящим запросом идёт за заданием к платформе, входящих подключений нет

Сервер подключается одной командой, выполненной по SSH вами, — платформе для этого не нужны ни ключи, ни пароль от машины.

Что понадобится

  • сервер с Linux и Docker, от 2 ГБ оперативной памяти;
  • доступ к нему по SSH — свой собственный, чтобы выполнить одну команду;
  • ничего больше: ни открытых входящих портов, ни белого списка адресов.

Шаг 1. Добавьте сервер

Проект → Мониторинг → Серверы → Подключить сервер. Введите понятное название — «Продакшн», «Песочница», имя клиента.

Дальше два пути:

  • Вручную — команда на сервере. Платформа покажет команду установки с одноразовым ключом. Копируете, выполняете у себя по SSH.
  • По SSH — автоматически. Агента ставит платформа: она подключается к серверу по SSH с вашим паролем. Пароль используется один раз при установке и не сохраняется.

Ключ показывается один раз и живёт 60 минут. Восстановить его нельзя: если потеряли — подключайте сервер заново.

Шаг 2. Выполните команду на сервере

Установщик создаёт на сервере пару ключей, регистрирует его и запускает фоновую службу. Закрытая часть ключа остаётся на вашем сервере и не передаётся никуда, включая нас.

Через минуту сервер в интерфейсе станет активным. Первые метрики приходят следующим тактом.

Шаг 3. Укажите, что проверять

Кроме метрик хоста агент опрашивает адреса проверок здоровья ваших приложений — с самого сервера, изнутри. Это отличается от внешней проверки доступности: внешняя отвечает на вопрос «видно ли снаружи», внутренняя — «жив ли процесс». Обе нужны, и они ловят разные отказы.

Что показывает мониторинг

  • процессор, память, диск;
  • контейнеры Docker и их состояние;
  • задержку на проверках здоровья;
  • историю по каждому показателю.

Откуда берутся инциденты

Инцидент открывается сам, без вашего участия, в трёх случаях: пропал сигнал от агента, кончается диск, упал контейнер. Участникам проекта уходит письмо со ссылкой на карточку.

«Пропал сигнал» здесь — полноценное событие, а не пробел в графике. Сервер, который перестал отвечать, и сервер, о котором нет данных, для дежурного одно и то же.

Почему агент не требует входящих портов

Агент работает по pull-модели: он сам обращается наружу за заданием и присылает результат. Поэтому входящие порты ему не нужны — хватает исходящего соединения.

Только не путайте это с отсутствием доступа. Задания присылает платформа, агент их выполняет, так что доступ к серверу у платформы есть — и мы его сужаем: агент развёртывания ходит к Docker через белый список вызовов, а всё, что платформа ему отправила, видно вам в журнале на странице сервера. Подробно, с механизмом за каждым пунктом, — на странице Безопасность.

Отсюда же второе: у нас нет ваших SSH-ключей. Их негде взять — при установке ключи создаёт сам сервер, а секреты развёртывания оператор платформы не читает по устройству хранилища, а не по регламенту.

Что дальше

Полное описание раздела — Мониторинг серверов и Docker.

Мониторинг серверов и DockerАгент на сервере присылает метрики процессора, памяти, диска и контейнеров.

Автор

Александр ЦапковОснователь Скоупворк

Веду платформу и её боевой контур сам: разработка, выкат, дежурство. Пишу о том, на чём мы обожглись, — с датами, замерами и ссылками на решения в репозитории.