Добавить в корзинуПозвонить
Найти в Дзене
Слёрм

Мониторинг серверов Elasticsearch. Кейсы использования Python в инфраструктуре.

Это продолжение серии постов про кейсы использования Python в инфраструктуре. Читайте начало по ссылкам: Анализ затрат на инфраструктуру и Разработка планировщика. ___
Эта история из другой компании, которая занимается стримингом больших данных (около полумиллиона вставок в секунду в Elasticsearch).
Проблема. Для мониторинга Elasticsearch-серверов использовали сервис Telegraf от influxData, но он выводил далеко не всю информацию, которая нас интересовала. Можно было узнать, зелёный инстанс, жёлтый или красный. А вот что происходит на уровне шардов (наименьший блок данных в Elasticsearch), понять было невозможно. Telegraf такой информации не давал.
Зачем опускаться на уровень шардов? Чтобы выяснить, что не так с индексом. Индекс — это сущность, которая не привязана к серверу. К серверу привязываются шарды. Предположим, кто-то начал интенсивно писать на диск, чтение или запись индекса на этом диске замедлилась. Что делать? Мигрировать. Но кого и куда? Из мониторинга этого не понять, н
Оглавление

Это продолжение серии постов про кейсы использования Python в инфраструктуре. Читайте начало по ссылкам: Анализ затрат на инфраструктуру и Разработка планировщика.

___

Эта история из другой компании, которая занимается стримингом больших данных (около полумиллиона вставок в секунду в Elasticsearch).

Проблема. Для мониторинга Elasticsearch-серверов использовали сервис Telegraf от influxData, но он выводил далеко не всю информацию, которая нас интересовала. Можно было узнать, зелёный инстанс, жёлтый или красный. А вот что происходит на уровне шардов (наименьший блок данных в Elasticsearch), понять было невозможно. Telegraf такой информации не давал.

Зачем опускаться на уровень шардов? Чтобы выяснить, что не так с индексом. Индекс — это сущность, которая не привязана к серверу. К серверу привязываются шарды. Предположим, кто-то начал интенсивно писать на диск, чтение или запись индекса на этом диске замедлилась. Что делать? Мигрировать. Но кого и куда? Из мониторинга этого не понять, надо идти в Kibana или консоль, опрашивать API Elasticsearch, находить шарды проблемного индекса и тогда уже что-то с ним делать. Не самый удобный путь.

Решение и результат. Я написал на Python экспортёры для Prometheus, которые собирали все необходимые данные. На основе этих данных мы уже настроили группу дашбордов и алёрты (алёрты были привязаны к размеру шард).

В результате получилась таблица, на основе которой можно было тюнить пайплайны. Мы могли видеть, что где-то вставляется три терабайта данных в час, и принимать решение: либо разбивать дневной индекс на часовые, либо увеличивать количество шардов внутри индекса так, чтобы они укладывались между 30 и 50 мегабайтами на шард.

Глобально это позволило нам эффективнее мониторить приложения и свести к минимуму простой платформы.

Где ещё пригодится умение программировать

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

  • бэкапы,
  • мониторинг,
  • анализ входящих логов,
  • безопасность,
  • CI/CD.

Возьмём безопасность. Например, кто-то организовал DDoS-атаку на ваш интернет-магазин. С помощью Python можно проанализировать логи балансера и понять, кого стоит заблокировать и на каком уровне.

В настройке CI/CD тоже может пригодиться Python: можно делать нотификации, алёрты в Slack, изменения DNS-записей. Любую динамическую инфраструктуру (если чего-то нет в продукте, который ты используешь), можно написать на Python достаточно легко и быстро.

Ещё одно применение — тесты конфигурации. Есть мнение, что 20% времени системный администратор тратит на настройку, а 80% — на дебаг. Так вот эти 80% можно сильно сократить, если избежать misconfiguration. А сделать это как раз и позволяют тесты конфигурации, написанные на Python.
При этом я не говорю, что вообще все задачи надо автоматизировать. Надо считать часы и деньги: сколько тратишь денег в год, сколько денег уйдёт на разработку автоматизации. Что будет эффективнее, то и выбираешь.

Python — это мастхев

Мир движется в сторону noOps. Активно развиваются облачные провайдеры, всё становится более автоматизированным. И сервера, как pets, в большинстве случаев пропадут. Поэтому чтобы развить себя как инженера, уметь программировать необходимо. Python — это мастхев.

У Python понятный синтаксис, разрабатывать на нём быстро. В Python есть куча инструментов динамической отладки, тот же IPython. Стартовать с него легко. А если не прокачиваться в программировании, работы не останется — нечего будет кушать. Либо будет работа в очень маленьких компаниях с маленькой зарплатой, либо ничего.

Если не встанешь на ступеньку выше, не научишься работать с инфраструктурой на уровне кода, то ты вымрешь, как вымерли операторы пейджера. Это эволюция, так работает мир.

____

Приглашаем на второй поток Python для инженеров, который стартует 11 октября и продлится 2 месяца. На курсе будем рассматривать админские библиотеки Python, кейсы применения именно для DevOps-задач. В конце курса каждый участник напишет свой проект и получит ревью от спикера. Такой проект можно использовать для CV, а если у вас будет реальная задача с проекта, то вы не только отучитесь, но еще и задачу рабочую решите.