Коротко о наблюдаемости и мониторинге
21 марта 2022 г.:::Информация
«Если вы не можете измерить, вы не можете это улучшить» — кто-то из известных людей
Понимание различий
- Мониторинг — понимание состояния системы на основе сбора предопределенных наборов метрик или журналов.
- Наблюдаемость — выводить состояние системы на основе изучения свойств и паттернов, не определенных заранее.
По сути, мониторинг основан на сборе и отображении данных, обеспечивающих ограниченное представление о системе, тогда как наблюдаемость может прогнозировать состояние системы на основе генерируемых ею данных (журналы, метрики, трассировки).
Многие рабочие места в области программного обеспечения (особенно SRE) включают в себя различные технологические стеки мониторинга, можно утверждать, что вы можете зарабатывать на жизнь только за счет освоения этих конкретных технологий.
Ландшафт инструментов может показаться пугающим. И на первый взгляд это кажется ошеломляющим, тем более что каждая технология имеет определенную номенклатуру, такую как сервер пересылки, индексатор, экспортер, источник данных, контроллер и т. д. Чтобы разобраться во всех этих вопросах, нам нужно знать основы.
Метрики системы и метрики приложений
Обычно системные метрики охватывают метрики, связанные с инфраструктурой, такие как потребление ЦП и памяти, дисковый ввод-вывод, сетевой ввод-вывод, тогда как метрики приложений относятся к частоте ошибок, запросам в минуту и среднему времени отклика.
Агент против безагента
Иногда может потребоваться, чтобы в вашей системе был развернут какой-либо агент (например, Splunk forwarder, агенты приложений AppDynamics), а в некоторых случаях нет необходимости в агенте, например, Prometheus, который использует модель извлечения HTTP для заполнения. база данных временных рядов.
Мониторинг push и pull
В модели push агенты передают свои данные в систему мониторинга, тогда как в модели pull система извлекает данные от агентов. Ключевое отличие состоит в том, что в подходе, основанном на проталкивании (Nagios, Zabbix), центральная система мониторинга знает достаточно много о метриках, тогда как в подходе, основанном на вытягивании (Prometheus, Datadog), основная система мониторинга ничего или очень мало знает о метриках. поступающие показатели.
Инструментальный ландшафт
- Коллекция показателей: [Prometheus] (https://prometheus.io/), [Stackdriver] (https://cloud.google.com/products/operations), [InfluxDB] (https://www.influxdata.com). /продукты/influxdb/)
- Агрегация журналов: Fluentd, Logstash
- Трассировка: [OpenTelemetry] (https://opentelemetry.io/), [Jager] (https://www.jaegertracing.io/), [Zipkin] (https://zipkin.io/)
- Мониторинг производительности: AppDynamics, NewRelic, Dynatrace
Мониторинг может означать многое
В качестве совета важно понимать, что мониторинг может отличаться от одной компании к другой, ничего не написано на камне.
Одним из способов измерения наблюдаемости в организации является проверка следующих аспектов:
- Предупреждения: сколько предупреждений генерируется в неделю? Какой процент предупреждений обрабатывается в нерабочее время?
- Конфигурация системы мониторинга: Находится ли система мониторинга под контролем версий? Сколько запросов на включение/изменение было отправлено в репозиторий, содержащий систему мониторинга?
- Ротация по вызову: Справедливо ли оповещения распределяются и обрабатываются всеми командами (Руководство по пониманию вашей OPS)?
Оригинал