Я пишу серию о том, как создать платформу данных с нуля, и пришло время для части 2! В части 1 я объяснил, как начать создавать вашу платформу данных. Но когда ваша инфраструктура растет, убедиться, что все работает так, как ожидалось, становится проблемой. И, как говорит мне один из моих самых дорогих коллеги: «Мониторинг и журнал — это искусство!».
Во второй части я хочу рассказать вам, как настроить систему мониторинга производственного уровня для вашей инфраструктуры. Концепции и предостережения более ценны, чем какой-то кусок кода «копия», по той простой причине, что важно понять, почему сделаны определенные варианты.
Инструменты
Ранее Я упомянул, что мы используем кучу инструментов. Когда я начал перечислять их всех, я подумал: вау, так много вещей для чего -то, что выглядит относительно просто в концепции. Я имею в виду, чего мы хотим достичь иметь возможность увидеть журналы и действовать, если что -то произойдет Анкет Просто, верно? Ну, не совсем. Чтобы вернуться к моему коллеге: мониторинг и ведение журнала — это определенно искусство:)
Давайте начнем с разделения проблемы на подпрограммы. В школе они научили нас, что когда проблема слишком большая, мы должны разделять
это и завоевывать
Это (AKA Divide et Impera
Если вы любите латынь).
Проблема 1: регистрация
Поскольку мы хотим понять, что это происходит в нашей инфраструктуре и приложениях, мы должны сначала начать заниматься журналом. Говоря, приложение записывает журналы на Stdout Анкет Поскольку мы используем Kubernetes, это означает, что мы можем читать журналы из регистрация
Консоль, которая поставляется с самим Kubernetes. Поскольку мы можем читать журналы, это означает, что мы можем их собрать. Как мы можем их собрать? Как я упоминал в Предыдущая статья Мы используем Elasticsearch для индексации журналов. Чтобы собрать те, которые мы используем Fluent-Bit Анкет
Раствор 1: беглый бит
Бит Fluent позволяет собирать информацию из разных источников, буферизировать и отправлять их на разные выходы. Хелм -диаграмма Мы используем беги как Демон набор
В Kubernetes ( здесь Больше информации о наборах демона). Это гарантирует, что в кластере Kubernetes будет экземпляр бегемого бита. Процесс будет собирать информацию каждого стручка в Kubernetes из Стандартный выход
и перенаправить их на другую систему. В нашем случае мы выбрали Кафка Анкет
Теперь наши журналы надежно отправляются на тему в Кафке и готовы к употреблению чем -то другим.
Проблема 2: Метрики системы
Приложения записать журналы на стандартном выводе, но Машины
Не пишите журналы, верно? Итак, как мне узнать, как ведет себя машина? Как узнать, если ЦП
Небесносит или Операции ввода/вывода
На диске есть узкое место или мое приложение? Ну, вот где Узел-экспортер вступает в игру.
Решение 2: экспортер узла
Экспортер узлов может собирать метрики из базовой операционной системы. Это мощно, потому что теперь мы можем собрать необходимую информацию о системе. Еще раз, есть Хелм диаграмма Прибыв и спасти нас.
Проблема 3: Метрики приложения
Круто, но что, если приложение может дать мне больше информации, чем простой журнал. Например, что, если моя база данных может дать мне текущую систему информации, такой как Потребление памяти
или Средняя задержка запроса
Анкет Это трудно. Это не журналы, ни метрики, исходящие от машины. Хотя они доступны для того, чтобы мы могли быть использованы. Вот когда Прометей Походит в арену.
Решение 3: Прометей
Прометей — это система систем и мониторинга услуг. Он собирает метрики из настроенных целей через заданные интервалы, оценивает выражения правил, отображает результаты и может вызывать оповещения, если какое -то условие наблюдается правдой. Бинго Анкет Это звучит как инструмент, который сделает для нас многое. Но где это стоит на общей картине? Давайте посмотрим на изображение ниже
Я сделал эту фотографию из это Отличная статья, и она четко описывает, что делает Прометей. По сути, его роль — тянуть и толкать Информация. Но что имеет отношение к знанию, так это то, что Прометеус стандартизировал способ, которым должна генерироваться информация, чтобы их можно было проанализировать и, на более позднем этапе, запрашивается.
Поскольку наша платформа данных имеет несколько кластеров Kubernetes (помните управление, производство, разработку и т. Д.), Прометея должна быть установлена во всех из них. Благодаря потрясающему сообществу разработчиков, есть Хелм диаграмма что мы можем использовать. Этот оператор позволяет нам также использовать Prometheus в Федерация
режим, который очень важно в контексте. Концепция федерации позволяет Prometheus в Controlplane к скрежетать
Информация из других услуг Прометея, чтобы мы могли централизовать все показатели в одной уникальной точке.
Проблема 4: Извлечение журналов
Мы решили создать ControlPlane
Для централизации информации о других средах и обзор того, что она происходит на нашей платформе. Поскольку мы подтолкнули наши журналы в Кафку, теперь нам нужно употреблять их и хранить их в формате, который читается для людей.
Есть известная аббревиатура под названием Лось
И это означает Elasticsearch, Logstash, Kibana. Пока что мы упоминаем E и K но никогда L Анкет Ну, это время только что прибыло.
Решение 4: logstash
Logstash является конвейером обработки данных с открытым исходным кодом, который одновременно преобразует данные о приглашении данных из множества источников, преобразует их, а затем отправляет в ваш любимый «тайник». Это часть эластичного костюма, и это фундаментальная часть для того, чтобы убедиться, что мы можем иметь тот же тип журнала для всего, что входит.
Наш вклад — это тема Kafka, которую мы упоминали ранее, и наш вывод — Elasticsearch, где тогда данные будут индексироваться и «спрятаны». Хелм -диаграмма Помогает вам установить приложение и изменяя это часть из Значения
Вы можете легко читать из Кафки. Основная проблема, которую мы обнаружили, была в @timestamp
поле. На самом деле, мы должны были адаптировать values.yml
Немного, чтобы избежать проблем с чтением временной метки.
Следующий фрагмент кода поможет вам решить такую проблему
Вы должны соответственно изменить часовой пояс Но это главная причина, по которой мы не могли бы правильно прогласить наши данные в Elasticsearch.
Визуализировать все
Мы только что закончили освещать часть журнала, но как мы все визуализируем? Есть два основных приложения: Кибана и Графана Анкет Мы используем Kibana для изучения всех журналов, которые поступают из всех приложений. Без Кибаны было бы чрезвычайно трудно отлаживать ваше приложение, потому что поиск того, что происходит, очень сложно с kubectl logs -f
командование:)
Графана помогает визуализировать все метрики, поступающие из Прометея. Есть тонна Предварительные мониторные панели что вы можете просто установить и использовать их. Единственное, что вам нужно сделать, это настроить Прометей
Установлен в контроль плана
как ваш источник данных
в Графане вот и все. Все метрики будут автоматически
Будьте доступны для вас.
Проблема 5: тревожный
Это самая сложная часть процесса. Еще раз, концепция проста, но выбирать пороговые значения при получении тревоги, и ее нужно настроить по пути. Я бы порекомендовал начать с этого Потрясающе Веб -сайт и начните создавать правила, которые важны для вашей платформы данных.
Решение 5: Slack и Pagerduty
Я не могу помочь вам с созданием необходимых вам правил для вашей платформы данных, но я могу дать вам совет по выбору подходящего инструмента, чтобы уведомить вас и вашу команду при срабатывании сигнализации. Мое предложение — отправить уведомление в Слаб Для тревоги, которые вы считаете «незначительными». Я оставляю определение несовершеннолетнего вам. Мы отправляем только слабые уведомления для Развитие
окружающая среда и для тех приложений, которые не являются публичными в Производство
пока что.
Для производственных систем мы используем Pagerduty Чтобы создать календарь ротации для заботы о системах среди членов команды и убедиться, что все всегда будет новым. Есть отличный интеграция С Прометеем я настоятельно рекомендую настроить.
Графана также помогает с предупреждение Но мы еще не использовали это. Хотя это выглядит потрясающе. Если бы вы использовали Grafana, было бы здорово, если бы вы могли поделиться со мной своим опытом в комментариях ниже:)
Вывод
В этом длинном блоге я дал вам обзор инструментов, которые моя команда и я используем для нашей платформы данных. Я надеюсь, что это дало вам больше идей о том, как начать! Вы столкнетесь с проблемами по пути, потому что «Рим не был построен за один день». Я надеюсь, что у вас есть вся начальная информация для сбора, визуализации и получения аварийных сигналов на вашей платформе данных. Но помните девиз моего коллеги: Регистрация и мониторинг - это искусство
🙂
Оригинал: «https://dev.to/spaghettifunk/part-2-monitoring-logging-and-alarming-1bc7»