fa
Feedback
Admin Guides | Сисадмин

Admin Guides | Сисадмин

رفتن به کانال در Telegram

Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов. Админ, реклама: @Ak_Mihail Биржа: https://telega.in/c/admguides РКН: https://kurl.ru/nQejS

نمایش بیشتر

📈 تحلیل کانال تلگرام Admin Guides | Сисадмин

کانال Admin Guides | Сисадмин (@admguides) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 11 777 مشترک است و جایگاه 10 520 را در دسته فناوری و برنامه‌ها و رتبه 55 309 را در منطقه روسيا دارد.

📊 شاخص‌های مخاطب و پویایی

از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 11 777 مشترک جذب کرده است.

بر اساس آخرین داده‌ها در تاریخ 29 ژوئیه, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 125 و در ۲۴ ساعت گذشته برابر 1 بوده و همچنان دسترسی گسترده‌ای حفظ شده است.

  • وضعیت تأیید: تأیید نشده
  • نرخ تعامل (ER): میانگین تعامل مخاطب 12.46% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 6.97% واکنش نسبت به کل مشترکان کسب می‌کند.
  • دسترسی پست‌ها: هر پست به طور میانگین 1 468 بازدید دریافت می‌کند. در اولین روز معمولاً 821 بازدید جمع‌آوری می‌شود.
  • واکنش‌ها و تعامل: مخاطبان به‌طور فعال حمایت می‌کنند؛ میانگین واکنش به هر پست 10 است.
  • علایق موضوعی: محتوا بر موضوعات کلیدی مانند ядро, /proc, grep, latency, linux تمرکز دارد.

📝 توضیح و سیاست محتوایی

نویسنده این فضا را محل بیان دیدگاه‌های شخصی توصیف می‌کند:
Обучающий канал по ОС Linux & Windows для начинающих и действующих администраторов. Админ, реклама: @Ak_Mihail Биржа: https://telega.in/c/admguides РКН: https://kurl.ru/nQejS

به لطف به‌روزرسانی‌های پرتکرار (آخرین داده در تاریخ 30 ژوئیه, 2026)، کانال همواره به‌روز و دارای دسترسی بالاست. تحلیل‌ها نشان می‌دهد مخاطبان به‌طور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامه‌ها تبدیل کرده‌اند.

11 777
مشترکین
+124 ساعت
+497 روز
+12530 روز
جذب مشترکین
ژوئیه '26
ژوئیه '26
+191
در 6 کانال‌ها
ژوئن '26
+130
در 0 کانال‌ها
Get PRO
مه '26
+172
در 0 کانال‌ها
Get PRO
آوریل '26
+154
در 0 کانال‌ها
Get PRO
مارس '26
+97
در 0 کانال‌ها
Get PRO
فوریه '26
+129
در 15 کانال‌ها
Get PRO
ژانویه '26
+139
در 0 کانال‌ها
Get PRO
دسامبر '25
+107
در 0 کانال‌ها
Get PRO
نوامبر '25
+135
در 2 کانال‌ها
Get PRO
اکتبر '25
+131
در 0 کانال‌ها
Get PRO
سپتامبر '25
+141
در 3 کانال‌ها
Get PRO
اوت '25
+163
در 0 کانال‌ها
Get PRO
ژوئیه '25
+128
در 0 کانال‌ها
Get PRO
ژوئن '25
+132
در 2 کانال‌ها
Get PRO
مه '25
+194
در 0 کانال‌ها
Get PRO
آوریل '25
+229
در 0 کانال‌ها
Get PRO
مارس '25
+231
در 2 کانال‌ها
Get PRO
فوریه '25
+176
در 0 کانال‌ها
Get PRO
ژانویه '25
+283
در 0 کانال‌ها
Get PRO
دسامبر '24
+391
در 1 کانال‌ها
Get PRO
نوامبر '24
+423
در 2 کانال‌ها
Get PRO
اکتبر '24
+479
در 0 کانال‌ها
Get PRO
سپتامبر '24
+411
در 3 کانال‌ها
Get PRO
اوت '24
+333
در 0 کانال‌ها
Get PRO
ژوئیه '24
+320
در 0 کانال‌ها
Get PRO
ژوئن '24
+346
در 2 کانال‌ها
Get PRO
مه '24
+783
در 15 کانال‌ها
Get PRO
آوریل '24
+374
در 1 کانال‌ها
Get PRO
مارس '24
+861
در 12 کانال‌ها
Get PRO
فوریه '24
+583
در 11 کانال‌ها
Get PRO
ژانویه '24
+761
در 16 کانال‌ها
Get PRO
دسامبر '23
+675
در 13 کانال‌ها
Get PRO
نوامبر '23
+376
در 2 کانال‌ها
Get PRO
اکتبر '23
+368
در 2 کانال‌ها
Get PRO
سپتامبر '23
+1 177
در 0 کانال‌ها
Get PRO
اوت '23
+1 288
در 0 کانال‌ها
Get PRO
ژوئیه '23
+1 281
در 0 کانال‌ها
Get PRO
ژوئن '23
+460
در 0 کانال‌ها
Get PRO
مه '23
+869
در 0 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
30 ژوئیه+5
29 ژوئیه+4
28 ژوئیه+4
27 ژوئیه+8
26 ژوئیه+12
25 ژوئیه+7
24 ژوئیه+14
23 ژوئیه+15
22 ژوئیه+11
21 ژوئیه+5
20 ژوئیه+3
19 ژوئیه+4
18 ژوئیه+10
17 ژوئیه+8
16 ژوئیه+1
15 ژوئیه+9
14 ژوئیه+4
13 ژوئیه+5
12 ژوئیه+9
11 ژوئیه+2
10 ژوئیه+4
09 ژوئیه+4
08 ژوئیه+5
07 ژوئیه+5
06 ژوئیه+5
05 ژوئیه+9
04 ژوئیه+8
03 ژوئیه0
02 ژوئیه+7
01 ژوئیه+4
پست‌های کانال
inotifywait в продакшне: реакция на изменение конфига Стандартный подход: cron каждую минуту проверяет изменился ли файл. Это
inotifywait в продакшне: реакция на изменение конфига Стандартный подход: cron каждую минуту проверяет изменился ли файл. Это polling, лишняя нагрузка и задержка до минуты. inotifywait получает событие от ядра в момент изменения, без опроса. Базовая реакция на изменение конфига:
inotifywait -e close_write /etc/nginx/nginx.conf && nginx -t && systemctl reload nginx
Но это одноразово. Для постоянного мониторинга нужен цикл:
inotifywait -m -e close_write /etc/nginx/nginx.conf | while read -r; do
  nginx -t && systemctl reload nginx
done
Проблема без debounce Редактор вроде vim делает несколько операций при сохранении: создаёт временный файл, переименовывает, удаляет старый. inotifywait срабатывает несколько раз подряд на одно логическое сохранение. Reload запускается три раза вместо одного. Debounce через sleep и проверку времени последнего события:
#!/bin/bash
CONFIG="/etc/nginx/nginx.conf"
LAST_RUN=0
DEBOUNCE=2

inotifywait -m -e close_write,moved_to "$CONFIG" 2>/dev/null | while read -r; do
  NOW=$(date +%s)
  if (( NOW - LAST_RUN > DEBOUNCE )); then
    LAST_RUN=$NOW
    nginx -t && systemctl reload nginx \
      && echo "$(date) reloaded" >> /var/log/nginx_autoreload.log
  fi
done
Запускаем как systemd-сервис чтобы не умирал:
[Unit]
Description=Nginx config watcher

[Service]
ExecStart=/usr/local/bin/nginx_watcher.sh
Restart=always

[Install]
WantedBy=multi-user.target
⚡️inotifywait не видит изменения через bind mount или NFS, ядро не генерирует события для удалённых файловых систем. Если конфиг приезжает через ConfigMap в Kubernetes или NFS-шару, inotifywait не сработает, нужен polling или механизм самого оркестратора.

2
После настройки keepalived оба узла стали MASTER одновременно:
824
3
🚀 Мечтаешь войти в DevOps, но не знаешь с чего начать? Это твой шанс! Привет, меня зовут Вячеслав Федосеев. Я работаю руково
🚀 Мечтаешь войти в DevOps, но не знаешь с чего начать? Это твой шанс! Привет, меня зовут Вячеслав Федосеев. Я работаю руководителем команды в DevOps, выступаю как спикер в учебном центре Слёрм и веду собственный проект DevOps Bootcamp. У себя в Telegram-канале я регулярно провожу прямые эфиры, публикую полезные статьи и лекции, а главное — отвечаю на вопросы и помогаю новичкам сделать первые шаги в профессии. Присоединяйтесь, чтобы не пропустить самое интересное! 👉 Канал: @devopsupgrade 🔥 Бонус для начинающих Вместе с командой Слёрм мы подготовили бесплатный мини-курс«Быстрый старт в DevOps». На нём разложим по полочкам главные темы, которые волнуют новичков: 👉 что такое DevOps, и как выстроить работу команды в рамках этой методологии; 👉 Kubernetes, Docker и т.д.: как базовые инструменты выстраивают работу в DevOps; 👉 DevOps и компания: как состыковать критерии успеха. ЗАБРАТЬ БЕСПЛАТНЫЙ КУРС
902
4
Поиск бинарников не из пакетного менеджера Любой файл в /usr/bin или /usr/sbin который не знает пакетный менеджер это аномали
Поиск бинарников не из пакетного менеджера Любой файл в /usr/bin или /usr/sbin который не знает пакетный менеджер это аномалия. Мог появиться через ручную установку, сборку из исходников, или что хуже, был подброшен намеренно. Проверяем на Debian/Ubuntu: find /usr/bin /usr/sbin -type f | while read -r bin; do dpkg -S "$bin" &>/dev/null || echo "NOT IN PACKAGES: $bin" done На RHEL/CentOS: find /usr/bin /usr/sbin -type f | while read -r bin; do rpm -qf "$bin" &>/dev/null || echo "NOT IN PACKAGES: $bin" done Медленно на большом количестве файлов. Ускоряем через массовый запрос: find /usr/bin /usr/sbin -type f -print0 \ | xargs -0 dpkg -S 2>&1 \ | grep "no path found" \ | awk -F': ' '{print $2}' Добавляем проверку времени создания, свежие файлы подозрительнее: find /usr/bin /usr/sbin -type f -newer /var/lib/dpkg/info -print0 \ | xargs -0 dpkg -S 2>&1 \ | grep "no path found" \ | awk -F': ' '{print $2}' -newer /var/lib/dpkg/info фильтрует файлы появившиеся после последнего apt действия. В cron для периодического аудита: 0 3 * * * /usr/local/bin/check_unknown_bins.sh >> /var/log/unknown_bins.log
806
5
Во второй половине июля 2026 года вышло обновление HWMonitor 1.66 Это бесплатная утилиты для мониторинга компонентов ПК под W
Во второй половине июля 2026 года вышло обновление HWMonitor 1.66 Это бесплатная утилиты для мониторинга компонентов ПК под Windows. Проект развивается уже более 16 лет и позволяет отслеживать температуру, напряжение, скорость вращения вентиляторов и другие параметры оборудования. Также поддерживается чтение данных S.M.A.R.T., встроенных датчиков процессора и температуры видеокарт. Что изменилось в HWMonitor 1.66: • улучшен отчёт о температуре в зонах перегрева видеокарт AMD Radeon RX 9000; • окно графика стало прозрачным.
944
6
Мониторинг zombie-процессов с алертом Zombie-процесс это процесс который завершился, но родитель не забрал его exit code чере
Мониторинг zombie-процессов с алертом Zombie-процесс это процесс который завершился, но родитель не забрал его exit code через wait(). Запись в таблице процессов остаётся, ресурсы освобождены, но PID занят. Единичные зомби это нормально, массовое накопление говорит о баге в родительском процессе. Смотрим текущее состояние: ps aux | awk '$8 == "Z" {print $2, $11}' Для каждого зомби находим родителя: ps aux | awk '$8 == "Z" {print $2}' | while read -r pid; do ppid=$(cat /proc/$pid/status 2>/dev/null | awk '/PPid/ {print $2}') parent=$(ps -p "$ppid" -o comm= 2>/dev/null) echo "zombie PID=$pid родитель PID=$ppid ($parent)" done Скрипт мониторинга с алертом #!/bin/bash THRESHOLD=5 BOT_TOKEN="ваш_токен" CHAT_ID="ваш_chat_id" LOG="/var/log/zombie_check.log" zombies=$(awk '$8 == "Z" {count++} END {print count+0}' /proc/[0-9]*/status 2>/dev/null) echo "$(date '+%Y-%m-%d %H:%M:%S') zombies: $zombies" >> "$LOG" if [ "$zombies" -ge "$THRESHOLD" ]; then details=$(ps aux | awk '$8 == "Z" {print $2, $11}' | head -10) curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \ -d chat_id="${CHAT_ID}" \ -d text="⚠️ $zombies zombie-процессов на $(hostname)\n${details}" fi В cron каждые 5 минут: */5 * * * * /usr/local/bin/zombie_check.sh Смотрим тренд: grep zombies /var/log/zombie_check.log | tail -20 👀 Убить зомби через kill нельзя, он уже мёртв. Единственный способ: отправить SIGCHLD родителю чтобы он забрал exit code, или убить самого родителя. Если родитель это системный демон который плодит зомби, это баг в приложении который нужно фиксить, а не обходить.
902
7
💬 Вопрос на собеседовании для DevOps-инженера Давайте разберем один из частых вопросов, который может быть задан на собеседо
💬 Вопрос на собеседовании для DevOps-инженера Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать. ❓Вопрос: Что такое epoll и почему он эффективнее select() и poll()? ✅Ответ: epoll — это механизм мультиплексирования ввода-вывода в Linux, предназначенный для эффективной работы с большим количеством сетевых соединений. Именно на нём построены современные веб-серверы, прокси и балансировщики нагрузки. Как это работает: • Приложение один раз регистрирует файловые дескрипторы в epoll через epoll_ctl(). • Ядро самостоятельно отслеживает события на этих дескрипторах. • При вызове epoll_wait() возвращаются только те сокеты, на которых действительно произошло событие.
1 049
8
SSSD для интеграции Linux с Active Directory: настройка и тонкости Интеграция Linux-серверов и рабочих станций в Active Direc
SSSD для интеграции Linux с Active Directory: настройка и тонкости Интеграция Linux-серверов и рабочих станций в Active Directory (AD) — стандартная задача в смешанных инфраструктурах. SSSD (System Security Services Daemon) — современный и гибкий способ обеспечить аутентификацию и получение информации из AD без установки громоздких клиентов вроде winbind. Базовая схема настройки 1️⃣Подключаем Linux к AD Если есть realmd, достаточно: realm join example.com -U Administrator Он автоматически настроит SSSD, Kerberos и разрешения. Если без realmd — делаем вручную. 2️⃣ Настраиваем /etc/sssd/sssd.conf Пример минимального конфига: [sssd] domains = example.com config_file_version = 2 services = nss, pam [domain/example.com] id_provider = ad auth_provider = ad chpass_provider = ad access_provider = ad ad_domain = example.com krb5_realm = EXAMPLE.COM realmd_tags = manages-system joined-with-adcli cache_credentials = True fallback_homedir = /home/%u@%d default_shell = /bin/bash ldap_id_mapping = True use_fully_qualified_names = False 3️⃣ Права на файл конфигурации chmod 600 /etc/sssd/sssd.conf 4️⃣ Запускаем и добавляем в автозагрузку systemctl enable --now sssd 5️⃣ Настраиваем PAM Обновляем /etc/pam.d/common-auth и common-session для вызова pam_sss.so и автоматического создания домашней директории. Пример для common-session: session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
1 009
9
🔍Тестовое собеседование на Middle Python с разработчиком из Яндекса сегодня вечером Уже сегодня вечером в 19:00 по мск прихо
🔍Тестовое собеседование на Middle Python с разработчиком из Яндекса сегодня вечером Уже сегодня вечером в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика. Как это будет: 📂 Хачатур, старший разработчик в Яндексе, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Хачатур будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любой вопрос Хачатуру Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы. Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot Реклама. О рекламодателе.
964
10
Когда DNS resolution становится узким местом Сервис отвечает, CPU и I/O в порядке, но часть запросов периодически «подвисает»
Когда DNS resolution становится узким местом Сервис отвечает, CPU и I/O в порядке, но часть запросов периодически «подвисает». Задержка возникает не внутри приложения, а на этапе резолва - до установления соединения. Каждый getaddrinfo() может блокироваться: ожидание ответа от DNS, попытки по нескольким nameserver’ам, fallback с IPv6 на IPv4, поиск по search-доменам. При сетевых сбоях или медленных резолверах это превращается в десятки–сотни миллисекунд на каждый запрос. В асинхронных сервисах это особенно заметно: потоков много, а блокировка происходит в libc. Проверить, где теряется время: strace -tt -e trace=network,connect,recvfrom,sendto -p <pid> Если видны паузы на recvfrom/sendto к DNS-серверам - задержка вне приложения. Посмотреть, какие резолверы используются: cat /etc/resolv.conf Порядок nameserver, наличие search и options напрямую влияет на количество попыток и время ожидания. Проверить реальное время резолва: dig +stats example.com Если время скачет или есть retries - проблема в DNS-инфраструктуре или сетевом пути. Дополнительно: ss -u -a | grep :53 Позволяет увидеть активность UDP-запросов к DNS.
1 067
11
بدون متن...
1 222
12
Скрипт сбора статистики ошибок на интерфейсах по расписанию ethtool -S показывает hardware-счётчики которые ip -s link не вид
Скрипт сбора статистики ошибок на интерфейсах по расписанию ethtool -S показывает hardware-счётчики которые ip -s link не видит: CRC ошибки, missed пакеты, rx_fifo_errors, tx_heartbeat. Именно там видна ранняя деградация линка до того как она становится очевидной. Проблема в том, что счётчики накопительные с момента загрузки. Нужна дельта между двумя снимками, а не абсолютное значение. Скрипт с дельтами и порогами #!/bin/bash IFACES=("eth0" "eth1") SNAPSHOT_DIR="/var/lib/iface_stats" LOG="/var/log/iface_errors.log" THRESHOLD=100 ERROR_KEYS="rx_errors tx_errors rx_missed_errors rx_fifo_errors rx_crc_errors rx_frame_errors tx_aborted_errors rx_length_errors rx_over_errors" mkdir -p "$SNAPSHOT_DIR" for iface in "${IFACES[@]}"; do SNAP="$SNAPSHOT_DIR/${iface}.snap" CURRENT=$(mktemp) ethtool -S "$iface" 2>/dev/null | awk '{gsub(/:/,"",$1); print $1, $2}' \ | sort > "$CURRENT" if [ ! -f "$SNAP" ]; then cp "$CURRENT" "$SNAP" rm "$CURRENT" continue fi join "$SNAP" "$CURRENT" | while read -r key prev curr; do for ekey in $ERROR_KEYS; do if [ "$key" = "$ekey" ]; then delta=$(( curr - prev )) if [ "$delta" -ge "$THRESHOLD" ]; then echo "$(date '+%Y-%m-%d %H:%M:%S') $iface $key +$delta" >> "$LOG" fi fi done done cp "$CURRENT" "$SNAP" rm "$CURRENT" done В cron каждые 5 минут: */5 * * * * /usr/local/bin/iface_stats.sh Смотрим лог за сегодня: grep "$(date '+%Y-%m-%d')" /var/log/iface_errors.log Если конкретный счётчик растёт стабильно, смотрим подробнее: ethtool -S eth0 | grep -E "crc|missed|fifo|frame"
1 344
13
💬 Вопрос на собеседовании для сисадмина Давайте разберем один из частых вопросов, который может быть задан на собеседовании
💬 Вопрос на собеседовании для сисадмина Давайте разберем один из частых вопросов, который может быть задан на собеседовании и как на него отвечать. ❓Вопрос: Что такое S.M.A.R.T. и почему одного статуса PASSED недостаточно для оценки состояния диска? ✅Ответ: S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) - это система самодиагностики HDD и SSD, которая отслеживает десятки параметров, связанных с состоянием накопителя. Однако статус PASSED означает лишь то, что производитель не считает диск критически неисправным, а не то, что он полностью исправен. На что обращать внимание: • Reallocated_Sector_Ct - количество переназначенных секторов. • Current_Pending_Sector - нестабильные сектора, ожидающие повторной проверки. • Offline_Uncorrectable - сектора, которые не удалось прочитать. • Для SSD - Percentage Used, Media_Wearout_Indicator, объём записанных данных (TBW).
1 482
14
Скрипт проверки актуальности ARP-записей на шлюзе ARP-таблица на шлюзе накапливает записи которые давно не обновлялись: устро
Скрипт проверки актуальности ARP-записей на шлюзе ARP-таблица на шлюзе накапливает записи которые давно не обновлялись: устройства ушли из сети, IP переназначен, а запись осталась. При конфликте IP или после замены оборудования старые записи могут маршрутизировать трафик не туда. Смотрим, что сейчас в таблице и какие записи помечены как устаревшие: ip neigh show ip neigh show nud stale ip neigh show nud failed nud stale - это записи, которые не подтверждались давно, но ещё не признаны мёртвыми. nud failed - это записи, где ARP-запрос не получил ответа. Скрипт проверки живости каждой записи #!/bin/bash IFACE=${1:-eth0} STALE_LOG="/var/log/arp_check.log" echo "=== ARP check $(date) ===" >> "$STALE_LOG" ip neigh show dev "$IFACE" | while read -r ip _ _ _ mac state; do [ "$ip" = "" ] && continue [ "$mac" = "FAILED" ] && { echo "FAILED: $ip" >> "$STALE_LOG" continue } if ping -c 1 -W 1 -I "$IFACE" "$ip" &>/dev/null; then status="OK" else status="UNREACHABLE" echo "UNREACHABLE: $ip (mac: $mac, state: $state)" >> "$STALE_LOG" fi echo "$ip $mac $state -> $status" done Принудительное обновление устаревших записей Если запись stale, ядро обновит её при следующем трафике. Но если нужно прямо сейчас: ip neigh show nud stale | awk '{print $1}' | while read -r ip; do ip neigh change "$ip" dev eth0 nud reachable 2>/dev/null || \ arping -c 1 -I eth0 "$ip" &>/dev/null echo "Refreshed: $ip" done Удаляем записи которые не ответили на ping несколько раз подряд: ip neigh show nud failed | awk '{print $1, $3}' | while read -r ip iface; do ip neigh del "$ip" dev "$iface" echo "Removed failed entry: $ip" done В cron раз в 15 минут: */15 * * * * /usr/local/bin/arp_check.sh eth0
1 241
15
Тест: Как хорошо вы знаете Linux?⚡️ Какой командой можно проверить текущий каталог в терминале Linux? 7 вопросов по Linux жду
Тест: Как хорошо вы знаете Linux?⚡️ Какой командой можно проверить текущий каталог в терминале Linux? 7 вопросов по Linux ждут вас внутри бота👇 ПРОВЕРИТЬ СВОИ ЗНАНИЯ
871
16
بدون متن...
1 579
17
Как использовать ss –bpf для фильтрации соединений по произвольным критериям ss поддерживает фильтрацию через Berkeley Packet
Как использовать ss –bpf для фильтрации соединений по произвольным критериям ss поддерживает фильтрацию через Berkeley Packet Filter выражения, это не то же самое что tcpdump BPF. Здесь фильтруются не пакеты а сокеты по их атрибутам: состояние, адреса, порты, метки. Позволяет строить запросы которые обычными флагами ss не выразить. Базовый синтаксис фильтра передаётся как последний аргумент без флага, просто выражение после опций: ss -tn state established '( dport = :443 or dport = :80 )' Скобки и пробелы обязательны, без них парсер не поймёт выражение. Фильтрация по состоянию и порту одновременно Все установленные соединения кроме SSH и loopback: ss -tn state established \ '( not dport = :22 and not src 127.0.0.0/8 )' Только соединения в TIME_WAIT старше определённого порога, полезно для детекта проблем с закрытием сокетов: ss -tn state time-wait ss -tn state time-wait | wc -l Фильтрация по подсети источника или назначения Все соединения от конкретной подсети, например найти кто из внутренней сети ломится на внешние адреса: ss -tn state established 'src 10.0.0.0/8 and not dst 10.0.0.0/8' Или наоборот, внешние соединения к нашим портам: ss -tn state established 'dst 10.0.0.0/8 and not src 10.0.0.0/8' Комбинируем с watch для живого мониторинга watch -n 2 "ss -tn state established '( dport = :443 )' | wc -l" Счётчик активных HTTPS-соединений в реальном времени без внешних инструментов. Фильтрация UDP ss -un 'dport = :53' Все UDP-сокеты которые отправляют DNS-запросы, полезно для детекта процессов которые ходят мимо локального резолвера. Смотрим с процессами: ss -tunp state established \ '( not dst 10.0.0.0/8 and not dst 127.0.0.0/8 )' | \ awk '{print $NF}' | sort | uniq -c | sort -rn Покажет какие процессы держат больше всего внешних соединений.
1 339
18
Вышел стабильный релиз Perl 5.44. Проект продолжает придерживаться ежегодного графика обновлений: в разработке новой версии п
Вышел стабильный релиз Perl 5.44. Проект продолжает придерживаться ежегодного графика обновлений: в разработке новой версии приняли участие 71 разработчик, изменения затронули 860 файлов и около 270 тысяч строк кода. Главными нововведениями стали экспериментальная поддержка именованных параметров в сигнатурах функций, алиасы в foreach, а также новый режим /xx для регулярных выражений, позволяющий разбивать классы символов на несколько строк и добавлять комментарии. Кроме того, Perl 5.44 получил поддержку Unicode 17.0, более безопасную генерацию случайных чисел через getentropy(), исправления нескольких уязвимостей и оптимизации производительности арифметических операций, сигнатур функций и работы с хэшами.
1 518
19
Разбор /proc/net/dev_snmp6 для мониторинга IPv6 без внешних агентов Стандартные инструменты мониторинга часто игнорируют IPv6
Разбор /proc/net/dev_snmp6 для мониторинга IPv6 без внешних агентов Стандартные инструменты мониторинга часто игнорируют IPv6-счётчики или требуют отдельного агента. /proc/net/dev_snmp6 отдаёт полную статистику IPv6 по каждому интерфейсу прямо из ядра, без snmpd, без node_exporter, без ничего. Смотрим что там есть: cat /proc/net/dev_snmp6/eth0 Вывод это пары ключ-значение: имя счётчика и его значение. Счётчики группируются по RFC: Ip6InReceives, Ip6OutForwDatagrams, Ip6InDiscards и так далее. Ключевые счётчики на которые смотрим: grep -E "InReceives|OutRequests|InDiscards|OutDiscards|InHdrErrors|InAddrErrors" \ /proc/net/dev_snmp6/eth0 InDiscards и OutDiscards это дропы на сетевом уровне, ненулевые значения требуют внимания. InHdrErrors говорят о битых пакетах или несовместимости реализаций. Скрипт мониторинга с дельтами Абсолютные значения бесполезны, нужна динамика: #!/bin/bash IFACE=${1:-eth0} INTERVAL=60 FILE="/proc/net/dev_snmp6/$IFACE" METRICS="Ip6InReceives Ip6OutRequests Ip6InDiscards Ip6OutDiscards" declare -A prev while IFS=" " read -r key val; do prev[$key]=$val done < "$FILE" sleep $INTERVAL echo "=== IPv6 stats delta for $IFACE ===" while IFS=" " read -r key val; do for m in $METRICS; do if [ "$key" = "$m" ]; then delta=$(( val - ${prev[$key]:-0} )) echo "$key: +$delta" fi done done < "$FILE" Запускаем с указанием интерфейса: ./ipv6_monitor.sh eth0 Сравниваем несколько интерфейсов разом for iface in /proc/net/dev_snmp6/*; do name=$(basename $iface) discards=$(grep "Ip6InDiscards" $iface | awk '{print $2}') [ "$discards" -gt 0 ] && echo "$name: InDiscards=$discards" done Покажет только интерфейсы где есть дропы, остальные не шумят.
1 342
20
Telegraf собирает метрики, но часть хостов пропадает из Grafana:
1 506