Код в мешке
250 subscribers
8.99K photos
1.59K videos
2.11K files
42.3K links
Код в мешке - про кодинг, и не только...
Это личная записная книжка

https://t.me/joinchat/AAAAAEIy6oGlr8oxqTMS5w
Download Telegram
Perplexity раскрыла, как обучает поискового AI-агента на Qwen #habr
https://habr.com/ru/companies/bothub/news/1027650/
Tags: ии, нейросети, машинное+обучение, ai, qwen, perplexity
AI-расслоение: почему с генеративным ИИ всё пошло не так, как со смартфонами #habr
https://habr.com/ru/articles/1027738/
Tags: AI-расслоение, генеративный ИИ, доменная экспертиза, power users, возраст и технологии, диффузия инноваций, вайб-кодинг, найм джуниоров, продуктивность с ИИ, ChatGPT
Author: Xronofag
Forwarded from Admin Future
🐧 Linux: systemd 260 убил SysV — и если у тебя ещё живёт /etc/init.d, читай срочно

Коллеги, 17 марта 2026 года вышел systemd 260 — и он сделал то, о чём предупреждали несколько лет. Наиболее разрушительное изменение: полное удаление поддержки System V init-скриптов. Компоненты systemd-sysv-generator, systemd-sysv-install и rc-local.service удалены окончательно. Никакого мягкого устаревания — мост сожжён.

Если у вас в продакшне живут legacy-сервисы со скриптами в /etc/init.d/ — они тихо перестанут запускаться после обновления. Без ошибок в журнале. Просто не стартуют.

Но в этом же релизе есть кое-что интересное: добавлен новый параметр MemoryTHP= для управления Transparent Huge Pages на уровне отдельного сервиса, а CPUSchedulingPolicy= теперь поддерживает значение ext для включения планировщика SCHED_EXT. Для высоконагруженных сервисов — это прямой рычаг тонкой настройки без правки параметров ядра глобально.

Сначала — аварийный аудит. Находим всё, что ещё на SysV:


# Ищем живые SysV-скрипты в системе
find /etc/init.d/ -type f -not -name "README" 2>/dev/null

# Проверяем, нет ли сервисов без native unit-файла
# (до обновления на systemd 260 — sysv-generator ещё конвертировал их)
systemctl list-units --type=service --state=loaded | grep -v ".service"

# Смотрим, какие сервисы СЕЙЧАС запущены через SysV-совместимость
systemctl list-units --type=service | \
while read unit _; do
unit_file=$(systemctl show "$unit" -p FragmentPath --value 2>/dev/null)
[[ "$unit_file" == /etc/init.d/* ]] && echo "LEGACY SysV: $unit -> $unit_file"
done

# Для найденного legacy-сервиса пишем нормальный unit.
# Пример: конвертируем старый /etc/init.d/myapp
cat > /etc/systemd/system/myapp.service << 'EOF'
[Unit]
Description=My Legacy Application
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/myapp --daemon
ExecStop=/usr/local/bin/myapp --stop
PIDFile=/var/run/myapp.pid
Restart=on-failure
RestartSec=5s

# Новое в systemd 260: тонкая настройка памяти для сервиса
# Отключаем THP для Java-приложений (они его не любят)
MemoryTHP=never

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now myapp.service
systemctl status myapp.service


Зачем это нужно:
Сервисы, у которых нет native unit-файлов, после обновления на systemd 260 не запустятся тихо и без предупреждений. Самый критичный action item для всех администраторов — провести аудит и мигрировать оставшиеся SysV init-скрипты до обновления. Ubuntu 26.04 LTS выходит 23 апреля и несёт systemd 260 по умолчанию. Срок — неделя.

Итог: SysV жил с 1983 года. Хватит. Если у тебя до сих пор есть /etc/init.d/что-то — это не legacy, это пожарная опасность. Миграция на unit-файл занимает 15 минут. Объяснение инциденту на встрече с Романом — значительно дольше.

#linux #systemd #sysv #sysadmin #ubuntu #admin_future
Forwarded from Admin Future
🐧 Linux: SCHED_EXT — BPF-планировщик процессов, который меняет правила игры

Коллеги, пока все обсуждают systemd 260 и смерть SysV, в ядре тихо созревает кое-что значительно интереснее. SCHED_EXT — это extensible scheduler class для Linux, позволяющий загружать собственные планировщики CPU прямо из userspace через eBPF, без перекомпиляции ядра и перезагрузки сервера. Это не экспериментальная игрушка — это то, на что обратились инженеры из Meta, Google и NVIDIA.

Почему это важно для нас, а не только для датацентров?

Стандартный CFS (Completely Fair Scheduler) хорошо работает в среднем, но проваливается при специфических нагрузках. Нет контроля над реальными приоритетами внутри CPU, nice-значения слишком грубые. Реальтайм-классы (SCHED_FIFO, SCHED_RR) опасны — один зависший RT-процесс может заморозить систему. SCHED_EXT решает это элегантно.

Главное преимущество: BPF-верификатор гарантирует, что твой кастомный планировщик не может сломать ядро или вызвать бесконечный цикл. Если планировщик ведёт себя неправильно и задача не получает CPU дольше 30 секунд — ядро автоматически убивает BPF-планировщик и возвращает всё на CFS. Fail-safe из коробки.

Практика — запускаем готовый планировщик на продакшн-хосте:


# Устанавливаем пакет с готовыми BPF-планировщиками
# Fedora / RHEL 10:
dnf install scx-scheds

# Ubuntu 26.04 (из репозитория):
apt install scx-scheds

# Проверяем статус SCHED_EXT в ядре
cat /sys/kernel/sched_ext/state
# disabled — нет активного планировщика, ядро использует CFS

# Запускаем scx_lavd — оптимизирован для latency-чувствительных нагрузок
# (хорошо для баз данных, веб-серверов, очередей)
sudo scx_lavd --performance &

# Проверяем что планировщик активен
cat /sys/kernel/sched_ext/state # -> enabled
cat /sys/kernel/sched_ext/root/ops # -> lavd

# Смотрим статистику планировщика в реальном времени
sudo scx_lavd --performance --stats 2

# Для тонкой настройки — scx_layered позволяет создавать слои приоритетов
# Например: критические сервисы в Layer 0, фоновые задачи в Layer 1
sudo scx_layered - << 'EOF'
[
{
"name": "critical",
"matches": [["CgroupPrefix", "system.slice/nginx"]],
"kind": {"Confined": {"cpus_pct": 60, "util_range": [0.8, 0.9]}}
},
{
"name": "background",
"matches": [["CgroupPrefix", ""]],
"kind": {"Confined": {"cpus_pct": 40, "util_range": [0.1, 0.5]}}
}
]
EOF

# Остановить планировщик — просто Ctrl+C или killall scx_lavd
# Система МГНОВЕННО падает обратно на CFS, никакого даунтайма


Зачем это нужно:
BPF-планировщики можно обновлять без перезагрузки сервера — критически важно для датацентра с сотнями тысяч машин, где rolling reboot занимает недели. Но и для нашего парка из 50 серверов — возможность изолировать приоритет nginx от фоновых cronjob без правки ядра и перезагрузки стоит потраченного часа на изучение.

Итог: CFS — это справедливость для всех. SCHED_EXT — это справедливость там, где тебе нужно. Разница примерно как между светофором и круговым движением: второе умнее, но требует понимания.

#linux #ebpf #sched_ext #performance #kernel #sysadmin #admin_future
Forwarded from Admin Future
🧠 Skills: On-call без выгорания — как построить дежурство, которое не съедает людей

Коллеги, давайте честно: у большинства из нас on-call — это "телефон всегда при тебе, и молись чтобы не позвонили". Никакого графика, никакой ротации, один человек тащит всё потому что "он лучше всех знает как это работает". Богдан снова не спал в эту пятницу.

Это не героизм. Это провал организации процесса.

Google SRE Workbook рекомендует максимум 2–3 actionable-инцидента за смену как устойчивую норму. Если у вашей команды стабильно 8–10 — у вас не проблема дежурства, у вас проблема с алертами. Сначала чиним шум, потом думаем о ротации.

Три кита нормального on-call:

Первое — ротация и границы. Идеально: не чаще одной недели дежурства раз в 6–8 недель. Всё чаще — ведёт к усталости. Всегда должны быть: primary (отвечает первым), secondary (бэкап если primary недоступен) и escalation path к руководителю — не для технических решений, а для принятия бизнес-решений.


ШАБЛОН МАТРИЦЫ ЭСКАЛАЦИИ

Уровень 1 (0–15 мин): Дежурный инженер (primary)
-> Автоматический runbook, первичная диагностика

Уровень 2 (15–30 мин): Дежурный инженер (secondary)
-> Подключается если primary не отвечает или нужна помощь

Уровень 3 (30–60 мин): Тимлид / старший инженер
-> Техническое решение нестандартной ситуации

Уровень 4 (60+ мин): Руководитель
-> Только для бизнес-решений: откат релиза,
уведомление клиентов, привлечение вендора

ПРАВИЛО: каждый уровень получает уведомление автоматически.
Никакого "позвони сам если не справляешься" — это перекладывание
ответственности на усталого человека в 3 ночи.


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

Аудит алертов раз в квартал — три категории:


[ACTIONABLE] Алерт требует действия в течение 15 минут.
Будит людей. Должен быть в PagerDuty/Grafana OnCall.

[WATCHFUL] Алерт требует внимания в рабочее время.
Тикет в очередь, не звонок ночью.

[NOISE] Алерт не требует никаких действий.
Отключить немедленно.

Реальная статистика большинства команд при честном аудите:
- 20% алертов — ACTIONABLE
- 30% — WATCHFUL
- 50% — NOISE (которые будят людей ночью годами)


Третье — blameless postmortem, который реально работает. Команды с blameless postmortem в 2.3 раза чаще имеют высокопроизводительные системы. Разница проста: blameless-культура фокусируется на обучении, blame-культура — на наказании. Когда инженеры боятся признавать ошибки, они скрывают проблемы, и мелкие инциденты разрастаются в крупные.

Шаблон постмортема за 30 минут:


## Постмортем: [Название инцидента] | [Дата] | Severity: P[1-3]

### Что случилось (2-3 предложения)
### Timeline (с точными временными метками)
### Влияние на пользователей и бизнес
### Root Cause (система/процесс, не человек)
### Что сработало хорошо
### Что нужно улучшить
### Action items:
| Задача | Владелец | Дедлайн |
|--------|----------|---------|
| ... | ... | ... |

ЗАПРЕЩЁННЫЕ ФОРМУЛИРОВКИ:
"Инженер не заметил алерт"
"Алерт не имел достаточного приоритета в системе"
"админ забыл обновить конфиг"
"Процедура деплоя не включала проверку конфигурации"


Зачем это нужно:
Организации, которые делают это правильно, имеют не только меньше случаев выгорания — у них быстрее время реакции, лучше follow-through по постмортемам и on-call программы, которым инженеры доверяют, а не которых боятся.

Итог: On-call — это контракт между компанией и инженером. Компания получает надёжность 24/7. Инженер получает справедливую ротацию, понятные правила и восстановление после смены. Если одна из сторон не выполняет свою часть — это не дежурство. Это эксплуатация.

#skills #oncall #incident #postmortem #sysadmin #sre #admin_future
Forwarded from Admin Future
🧠 Skills: Ты единственный, кто знает как это работает. Поздравляю, ты создал себе тюрьму

Коллеги, давайте честно. У каждого из нас есть тот самый сервис, скрипт или конфиг, про который знает только один человек. Ты. И каждый раз, когда ты уходишь в отпуск — телефон не замолкает. Это не уважение к твоей экспертизе. Это Bus Factor = 1, и он убивает и команду, и тебя.

Я это называю "знаниевый монополизм". Он возникает не из жадности — он возникает из того, что некогда было написать документацию, некогда объяснить коллеге, некогда сделать нормальный runbook. И вот ты незаменим. Звучит как комплимент, пока не звонит телефон в 23:47 в субботу.

Хороший runbook — это не просто список шагов. Это живой документ с метаданными: кто владелец, когда последний раз тестировался, какой канал для эскалации, сколько времени займёт выполнение. Именно это отличает документ, который реально используют, от того, что пылится в Confluence с 2021 года.

Шаблон runbook, который реально работает:


---
title: Перезапуск кластера PostgreSQL при split-brain
id: RB-DB-003
version: 1.2.0
last_updated: 2026-04-15
last_tested: 2026-03-01
owner: @your_name
slack_channel: "#infra-oncall"
estimated_duration: 20-40 минут
risk_level: high
requires_approval: true (Роман или тимлид)
---

## Когда использовать
- Alert: "PostgreSQL replication lag > 300s"
- Alert: "Primary node unreachable"
- Симптом: приложение пишет ошибки "could not connect to server"

## Шаг 1 — Диагностика (5 мин)
Проверяем состояние кластера:
$ patronictl -c /etc/patroni/config.yml list
Ожидаемый вывод: один Leader, остальные Replica

## Шаг 2 — Проверка репликации
$ psql -h localhost -U postgres -c "SELECT * FROM pg_stat_replication;"
Если пусто на мастере — реплика отстала или отвалилась.

## Шаг 3 — Failover (только если мастер недоступен)
$ patronictl -c /etc/patroni/config.yml failover --master <node> --candidate <replica>
ВНИМАНИЕ: действие необратимо без ручного вмешательства.

## Шаг 4 — Проверка после failover
$ patronictl -c /etc/patroni/config.yml list
$ psql -h <new_master> -U postgres -c "SELECT pg_is_in_recovery();"
Ожидаемый результат: false (мы на новом мастере)

## Контакты эскалации
- L2: @colleague_name (Telegram)
- L3: вендор поддержки (тикет в портале)

## История изменений
- 1.2.0 (2026-04-15): добавлен шаг проверки pg_stat_replication
- 1.1.0 (2026-02-01): обновлён путь конфига Patroni


Зачем это нужно:
Системы меняются, но документация часто — нет. Решение: триггеры на ревью runbook при изменении инфраструктуры. Когда меняется инфраструктурный код — автоматически флагируются связанные runbook-ы для обновления. Это не бюрократия. Это то, что позволяет тебе нормально спать в отпуске.

Итог: Незаменимых специалистов не бывает — бывают люди, которые не успели или не захотели передать знания. Runbook — это не слабость. Это признак зрелого инженера, который думает о команде, а не только о своей незаменимости.

#skills #documentation #runbook #sysadmin #teamwork #admin_future
Forwarded from Admin Future
🧠Skills: Технический долг инфраструктуры — как объяснить бизнесу, почему "оно работает" это не аргумент

Коллеги, поговорим о разговоре, который рано или поздно происходит у каждого из нас. Ты приходишь к руководителю и говоришь: нам нужно время и ресурсы, чтобы переписать вот это, обновить вот то, заменить вот это. Он смотрит на тебя и говорит: "А что сейчас не работает?" И технически он прав — оно работает. Просто это бомба с таймером.

Это и есть технический долг инфраструктуры. И проблема не в том, что ты его не видишь. Проблема в том, что ты не умеешь его показать.

По данным McKinsey, 30 процентов ИТ-директоров считают, что более 20 процентов их бюджета уходит на обслуживание технического долга. Переведи это на язык своей компании — и разговор с руководством сразу становится другим.

Практический фреймворк: инвентаризация и приоритизация долга

Разделите ваши проблемы на понятные категории с указанием риска:

— Инфраструктурный долг: серверы без IaC, ручной деплой. Риск: Высокий. Чинить нужно первым, так как рутина умножает все остальные проблемы.
— Долг зависимостей: условная CentOS 7 в продакшене. Риск: Критический.
— Долг безопасности: сервисные учетные записи с паролями пятилетней давности. Риск: Критический.
— Долг документации: инфраструктуру знает только один админ, нет инструкций по восстановлению. Риск: Средний, но становится критичным при любых изменениях в команде.
— Архитектурный долг: монолитные решения без возможности быстрого отката. Риск: Высокий. Стратегическая задача.


Формула для разговора с руководством:
Стоимость долга = (часы в неделю на поддержку) умножить на (ставку инженера) умножить на 52 недели.


Пример:
Поддержка старой ОС без обновлений: 3 часа в неделю х 3000 рублей в час х 52 = 468 000 рублей в год.
Это только один пункт из вашего списка.
Миграция на новую систему займет 80 часов один раз = 240 000 рублей. Окупаемость очевидна любому директору.

Как говорить об этом с бизнесом — три правила:

Первое. Никогда не говори "нам нужно переписать". Говори: "Сейчас мы тратим X часов в месяц на поддержку этого. После модернизации — Y. Разница = Z рублей в год." Фраза "это сэкономит бизнесу полмиллиона в год" работает значительно лучше технических терминов.

Второе. Приоритизируй по принципу "что упадет первым и сколько это будет стоить". Инфраструктурный долг и долг безопасности надо чинить первыми. Старая ОС без патчей в 2026 году — это не техдолг, это открытая дверь для шифровальщика.

Третье. Веди реестр долга публично. В трекере, видимом команде и руководству. Описание, риск, стоимость поддержки в год, стоимость устранения. Когда руководитель видит список из 15 строк с итоговой суммой потерь внизу — разговор о выделении времени идет иначе.


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

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

#skills #techdebt #sysadmin #карьера #инфраструктура #admin_future
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Admin Future
🧠 Skills: On-call без выгорания — как построить дежурство, которое не съедает людей

Коллеги, давайте честно: у большинства из нас on-call — это "телефон всегда при тебе, и молись чтобы не позвонили". Никакого графика, никакой ротации, один человек тащит всё потому что "он лучше всех знает как это работает". Богдан снова не спал в эту пятницу.

Это не героизм. Это провал организации процесса.

Google SRE Workbook рекомендует максимум 2–3 actionable-инцидента за смену как устойчивую норму. Если у вашей команды стабильно 8–10 — у вас не проблема дежурства, у вас проблема с алертами. Сначала чиним шум, потом думаем о ротации.

Три кита нормального on-call:

Первое — ротация и границы. Идеально: не чаще одной недели дежурства раз в 6–8 недель. Всё чаще — ведёт к усталости. Всегда должны быть: primary (отвечает первым), secondary (бэкап если primary недоступен) и escalation path к руководителю — не для технических решений, а для принятия бизнес-решений.


ШАБЛОН МАТРИЦЫ ЭСКАЛАЦИИ

Уровень 1 (0–15 мин): Дежурный инженер (primary)
-> Автоматический runbook, первичная диагностика

Уровень 2 (15–30 мин): Дежурный инженер (secondary)
-> Подключается если primary не отвечает или нужна помощь

Уровень 3 (30–60 мин): Тимлид / старший инженер
-> Техническое решение нестандартной ситуации

Уровень 4 (60+ мин): Руководитель
-> Только для бизнес-решений: откат релиза,
уведомление клиентов, привлечение вендора

ПРАВИЛО: каждый уровень получает уведомление автоматически.
Никакого "позвони сам если не справляешься" — это перекладывание
ответственности на усталого человека в 3 ночи.


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

Аудит алертов раз в квартал — три категории:


[ACTIONABLE] Алерт требует действия в течение 15 минут.
Будит людей. Должен быть в PagerDuty/Grafana OnCall.

[WATCHFUL] Алерт требует внимания в рабочее время.
Тикет в очередь, не звонок ночью.

[NOISE] Алерт не требует никаких действий.
Отключить немедленно.

Реальная статистика большинства команд при честном аудите:
- 20% алертов — ACTIONABLE
- 30% — WATCHFUL
- 50% — NOISE (которые будят людей ночью годами)


Третье — blameless postmortem, который реально работает. Команды с blameless postmortem в 2.3 раза чаще имеют высокопроизводительные системы. Разница проста: blameless-культура фокусируется на обучении, blame-культура — на наказании. Когда инженеры боятся признавать ошибки, они скрывают проблемы, и мелкие инциденты разрастаются в крупные.

Шаблон постмортема за 30 минут:


## Постмортем: [Название инцидента] | [Дата] | Severity: P[1-3]

### Что случилось (2-3 предложения)
### Timeline (с точными временными метками)
### Влияние на пользователей и бизнес
### Root Cause (система/процесс, не человек)
### Что сработало хорошо
### Что нужно улучшить
### Action items:
| Задача | Владелец | Дедлайн |
|--------|----------|---------|
| ... | ... | ... |

ЗАПРЕЩЁННЫЕ ФОРМУЛИРОВКИ:
"Инженер не заметил алерт"
"Алерт не имел достаточного приоритета в системе"
"админ забыл обновить конфиг"
"Процедура деплоя не включала проверку конфигурации"


Зачем это нужно:
Организации, которые делают это правильно, имеют не только меньше случаев выгорания — у них быстрее время реакции, лучше follow-through по постмортемам и on-call программы, которым инженеры доверяют, а не которых боятся.

Итог: On-call — это контракт между компанией и инженером. Компания получает надёжность 24/7. Инженер получает справедливую ротацию, понятные правила и восстановление после смены. Если одна из сторон не выполняет свою часть — это не дежурство. Это эксплуатация.

#skills #oncall #incident #postmortem #sysadmin #sre #admin_future
Forwarded from Admin Future
🧠 Skills: Мониторинг vs Observability — в чём разница и почему это важно для карьеры

Коллеги, разговор о вещи, которая кажется очевидной, но на практике разделяет инфраструктурных инженеров на два поколения.

Мониторинг — это когда знаешь заранее, что может сломаться, и смотришь на это. Дашборд с CPU, памятью, диском, статусом сервиса. Алерт когда CPU > 90%. Всё понятно, всё предсказуемо.

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

Разница не в инструментах. Разница в том, как мы думаем об инфраструктуре.

Два де-факто открытых стандарта в observability сегодня — Prometheus и OpenTelemetry. 65% организаций инвестируют в оба. Prometheus зрелее и больше используется в production (59%), OpenTelemetry быстрее растёт — 35% сейчас находятся на стадии POC и готовятся к масштабированию.

Практика: строим минимальный observability-стек на своём парке серверов:


# docker-compose.yml — базовый стек: Prometheus + Grafana + Node Exporter
# Разворачивается за 10 минут, даёт реальную видимость

version: '3.8'

services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.retention.time=30d' # Храним 30 дней истории
ports:
- "9090:9090"
restart: unless-stopped

node-exporter:
image: prom/node-exporter:latest
container_name: node_exporter
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- "9100:9100"
restart: unless-stopped

grafana:
image: grafana/grafana:latest
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_PASSWORD=changeme_immediately
- GF_USERS_ALLOW_SIGN_UP=false
ports:
- "3000:3000"
restart: unless-stopped

volumes:
prometheus_data:
grafana_data:



# prometheus.yml — базовая конфигурация
global:
scrape_interval: 15s
evaluation_interval: 15s

scrape_configs:
# Сам Prometheus
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']

# Метрики хоста
- job_name: 'node'
static_configs:
- targets: ['node-exporter:9100']
labels:
env: 'production'
datacenter: 'main'

# Если есть несколько серверов — добавляем все
- job_name: 'servers'
static_configs:
- targets:
- '192.168.1.10:9100'
- '192.168.1.11:9100'
- '192.168.1.12:9100'



# Три PromQL-запроса, которые реально нужны каждый день:

# 1. Топ-5 процессов по CPU (не просто средний по системе)
topk(5, rate(namedprocess_namegroup_cpu_seconds_total[5m]))

# 2. Свободное место на дисках с предсказанием когда кончится
predict_linear(node_filesystem_avail_bytes[6h], 4*3600) < 0

# 3. Доступная память — реальная, не та что показывает free
node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100


Ключевая идея: observability as code — это когда конфигурации мониторинга управляются как код: версионируются в Git, проходят code review, разворачиваются через те же CI/CD-пайплайны, что и инфраструктура. Те же инструменты, те же принципы.

Что это значит на практике: дашборды и алерты живут в репозитории. Когда поднимается новый сервер через IaC — мониторинг на него появляется автоматически. Когда сервер уходит — метрики перестают собираться и дашборд обновляется сам. Ноль ручной работы.
Forwarded from Admin Future
Зачем это важно для карьеры:
Разрыв между "администратором который смотрит на Zabbix" и "инженером который строит observability-пайплайн" в 2026 году — это разрыв в грейде и зарплате. Настройка занимает 4–6 часов в первый раз. Это звучит много — пока не сравниваешь с восьмичасовым разбором инцидента без нормальных данных.

Итог: мониторинг отвечает на вопрос "сломалось или нет". Observability отвечает на вопрос "почему сломалось и где именно". В современной инфраструктуре достаточно первого только для очень простых систем. Для всего остального нужна observability. И строить её уже можно с нуля за один вечер.

#skills #observability #prometheus #grafana #opentelemetry #sysadmin #admin_future