AI tomonidan yaratilganOdamlar tomonidan yaxshilangan

Riqli · tirik hujjatlar · doimiy ravishda yangilanadi

AI bilimlari inson amaliyotiga mos keladigan joyda.

Do'stlar bilan baham ko'ring
image

Observability: мониторинг, логирование, трейсинг. Hard skill. (Observability микросервисы. Мониторинг логирование трейсинг. Система observability. Prometheus grafana мониторинг. Tutorial. Practice. Standard.)

bo'limlar

Observability: мониторинг, логирование, трейсинг

Введение в концепцию наблюдаемости IT-систем.

contents

Наблюдаемость (Observability) — это способность понять внутреннее состояние системы по внешним данным (метрикам, логам, трейсам). Позволяет отвечать на вопрос «Почему система работает так, а не иначе?».

contents

Три столпа наблюдаемости: мониторинг (что происходит?), логирование (что именно произошло?) и трейсинг (как запрос проходит через сервисы?).

bo'limlar

Мониторинг: метрики и системы сбора данных

Глубокое погружение в мониторинг, его задачи, подходы и популярные инструменты.

contents

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

contents

Белый ящик (White-box) и черный ящик (Black-box) — два подхода в мониторинге. Черный ящик проверяет систему извне (доступен ли сайт?). Белый ящик анализирует внутренние метрики (загрузка CPU, количество ошибок в коде).

bo'limlar

Zabbix: классическая система мониторинга

Обзор архитектуры, агентов, сбора данных и алертинга в Zabbix.

contents

Zabbix — зрелая система мониторинга с архитектурой «все в одном»: сбор метрик, визуализация, алертинг и логирование из коробки. Использует реляционные базы данных (PostgreSQL, MySQL).

contents

Zabbix agent работает в двух режимах: активном (агент сам отправляет метрики серверу) и пассивном (сервер опрашивает агента). Активный режим безопаснее и экономит ресурсы.

bo'limlar

Prometheus: современный мониторинг для микросервисов

Pull-модель, экспортеры, метрики и интеграция с Grafana.

contents

Prometheus — система мониторинга, использующая pull-модель сбора метрик (сервер сам опрашивает экспортеры). Хранит данные в собственной time-series database. Оптимален для микросервисной архитектуры и Kubernetes.

contents

Типы метрик Prometheus: Counter (счетчик, только увеличивается), Gauge (текущее значение, может расти и падать), Histogram (распределение значений по корзинам), Summary (квантили).

bo'limlar

Логирование: от классического Linux до централизованных систем

Управление логами, journald, rsyslog, централизованные системы (ELK, Grafana Loki).

contents

Классическое логирование в Linux — это текстовые файлы (обычно в /var/log/). Rsyslog — сервис для централизованного сбора логов, поддерживающий фильтрацию по facility и severity. Journald — бинарный журнал systemd.

contents

Централизованное логирование решает проблему разрозненных логов. Логи собираются агентами (Filebeat, Vector), передаются в агрегатор (Logstash), а затем хранятся в Elasticsearch или Grafana Loki для поиска и анализа.

bo'limlar

Распределенный трейсинг (Distributed Tracing)

Отслеживание запросов в микросервисных архитектурах.

contents

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

contents

Ключевые понятия трейсинга: Trace (трассировка) — полный путь запроса; Span (спан) — одна операция внутри сервиса (имеет время начала и конца). Инструменты: Jaeger, Zipkin, Tempo (Grafana).

bo'limlar

TIG-стек (Telegraf, InfluxDB, Chronograf, Kapacitor)

Платформа для сбора, хранения, визуализации и алертинга метрик и логов.

contents

Telegraf — агент для сбора метрик и логов (push-модель). InfluxDB — time-series database для хранения. Chronograf — веб-интерфейс для визуализации и алертинга. Kapacitor — движок для обработки потоковых данных и расширенного алертинга.

contents

InfluxDB использует концепции measurement (таблица), tags (индексируемые поля для фильтрации) и fields (неиндексируемые значения). Язык запросов — Flux или InfluxQL.

contents

Важное различие версий InfluxDB: версия 1.x использует Chronograf и Kapacitor для визуализации и алертинга, а версия 2.x объединяет их функционал в едином веб-интерфейсе, но имеет ограниченную совместимость с Kapacitor.

bo'limlar

Алертинг: проектирование эффективных оповещений

Пороги, эскалация, настройка каналов уведомлений.

contents

Главная ошибка алертинга — отправка уведомлений на каждое незначительное изменение. Алерты должны быть значимыми и вести к действию. Используйте пороги срабатывания (например, задержка > 500 мс в течение 5 минут) и эскалацию.

contents

Эскалация (escalation) — это процедура повышения важности алерта, если он не был решен за определенное время. Сначала уведомление приходит в чат, затем на email, затем руководителю или через SMS.

contents

Популярные каналы уведомлений для алертинга: Email (SMTP), Telegram (бот + chat ID), Slack, PagerDuty, SMS (через шлюз или GSM-модем), Webhook (для интеграции с произвольными системами).

bo'limlar

Отказоустойчивость Prometheus и долгосрочное хранение метрик

Проблемы горизонтального масштабирования и решения: Thanos, VictoriaMetrics, Mimir.

contents

Стандартный Prometheus не обеспечивает отказоустойчивость и долгосрочное хранение (long-term storage) из коробки. Федерация (federation) решает проблему частично, создавая единую точку отказа и дублирование данных.

contents

Alertmanager в Prometheus отвечает за группировку, дедупликацию и маршрутизацию алертов. Он может работать в режиме кластера для обеспечения высокой доступности через протокол Gossip.

bo'limlar

PromQL: язык запросов Prometheus

Типы метрик, векторы, функции и операторы агрегации.

contents

Типы метрик Prometheus: Counter (только увеличивается), Gauge (может увеличиваться и уменьшаться), Histogram (распределение по корзинам) и Summary (квантили).

contents

В PromQL используются векторы: мгновенный вектор (instant vector) — значения метрик в один момент времени, и диапазонный вектор (range vector) — значения за промежуток времени.

bo'limlar

Grafana: продвинутое использование

Управление пользователями, провижининг дашбордов, алертинг и аннотации.

contents

В Grafana разграничение доступа строится на организациях (полная изоляция данных) и командах/группах (логическая группировка для назначения прав). Сервисные аккаунты используются для автоматизации и M2M-взаимодействия.

bo'limlar

Мониторинг Kubernetes: Prometheus Operator и kube-prometheus-stack

Сбор метрик с кластера, service discovery, экспортеры.

contents

kube-prometheus-stack — это Helm-чарт, который разворачивает в Kubernetes полный стек мониторинга: Prometheus, Alertmanager, Grafana, а также Prometheus Operator и набор экспортеров (kube-state-metrics, node-exporter).

contents

Prometheus Operator вводит кастомные ресурсы (CRD): ServiceMonitor (как собирать метрики с сервиса) и PodMonitor (как собирать метрики с пода). Это декларативный способ настройки сбора метрик.

bo'limlar

Распределенный трейсинг: Jaeger и Grafana Tempo

Отслеживание запросов в микросервисах, OpenTelemetry, интеграция с Grafana.

contents

Jaeger — распределенная система трейсинга, созданная в Uber. Написана на Go. Поддерживает протокол OpenTelemetry и интеграцию с Grafana.

contents

Grafana Tempo — высокомасштабируемое хранилище для трейсов, использующее объектное хранилище (S3/GCS). Не требует индексации, что делает его экономичным. Тесно интегрируется с Grafana и Loki.

bo'limlar

OpenSearch vs Elasticsearch: выбор платформы для поиска и аналитики

История, лицензирование, различия в функционале.

contents

OpenSearch — форк Elasticsearch и Kibana (версии 7.10), созданный компанией Amazon после изменения лицензии Elastic с Apache 2.0 на SSPL. Развивается сообществом и AWS.

contents

Ключевое отличие: OpenSearch полностью открыт и бесплатен, в то время как у Elasticsearch есть платные функции (машинное обучение, SIEM, интеграция с Active Directory).

bo'limlar

Администрирование Linux: Управление системой и службами (systemd)

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

systemd — это система инициализации и менеджер служб для Linux. Команда systemctl используется для управления службами. `systemctl status sshd` показывает статус службы SSH. `systemctl stop sshd` останавливает службу, `systemctl start sshd` — запускает, а `systemctl restart sshd` — перезапускает. Для включения автозапуска службы при загрузке используется `systemctl enable sshd`.

contents

Для полного запрета запуска службы (даже вручную) используется маскирование (mask). Команда `systemctl mask firewalld` создает символическую ссылку на `/dev/null`, делая службу недоступной для запуска. `systemctl unmask firewalld` отменяет маскирование. Просмотреть все активные службы можно командой `systemctl list-units --type=service`, а неудачные — `systemctl --failed`.

bo'limlar

Администрирование Linux: Управление журналами (Logging)

В этом разделе вы научитесь работать с системными журналами. Вы узнаете о традиционной системе rsyslog и современной системе journald, а также о том, как читать, фильтровать и анализировать логи для устранения неполадок.
contents

Традиционные логи хранятся в каталоге /var/log/. Основные файлы: `messages` (общие сообщения), `secure` (аутентификация и безопасность), `cron` (задания cron). Команда tail -f /var/log/messages отслеживает новые сообщения. rsyslog настраивается через файл `/etc/rsyslog.conf` и каталог `rsyslog.d/`. journald — централизованный двоичный журнал, управляемый командой journalctl.

contents

Для настройки постоянного хранения журналов journald на диске (вместо RAM) необходимо создать каталог /var/log/journal и установить правильные права доступа. Приоритеты сообщений: emerg, alert, crit, err, warning, notice, info, debug. `journalctl -p err` покажет только ошибки. Ротация логов управляется через logrotate.

bo'limlar

Администрирование Linux: Управление загрузкой и целями (Targets)

В этом разделе вы узнаете, как управлять режимами загрузки системы с помощью systemd targets. Вы научитесь переключаться между текстовым и графическим режимами, а также изменять цель по умолчанию.