[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/configure-journald":3,"mdc-7pmku0-key":558,"mdc--ugnftf-key":592,"mdc--1se4y8-key":623,"mdc--8xfpqc-key":662,"mdc-k4e3nq-key":694,"mdc-lymgrl-key":717,"mdc-w27xdr-key":742,"mdc--l04uzd-key":774,"related-/guides/linux/monitor-systemd-services,/guides/linux/backup-logs-automatically,/guides/linux/fix-disk-full-var-log":798},{"id":4,"title":5,"appliesTo":6,"author":11,"body":12,"canonical":494,"code":494,"createdAt":495,"description":496,"difficulty":497,"draft":498,"estimatedTime":499,"extension":500,"faq":501,"howToSteps":514,"howToTotalTime":527,"image":494,"keywords":528,"locale":536,"meta":537,"navigation":538,"path":539,"platform":540,"related":541,"section":545,"seo":546,"severity":494,"stem":547,"summary":548,"tags":549,"twitterCreator":494,"twitterSite":494,"type":556,"updatedAt":495,"__hash__":557},"content_ru/guides/linux/configure-journald.md","Настройка journald в Linux: управление логами и ротацией",[7,8,9,10],"Ubuntu 20.04+","Debian 11+","Fedora 34+","CentOS Stream 9+","FixPedia Team",{"type":13,"value":14,"toc":484},"minimark",[15,20,29,33,44,79,94,98,105,120,131,135,146,157,167,171,177,228,239,242,246,249,266,269,287,290,294,297,313,316,327,334,357,360,364,398,415,444,454,477,480],[16,17,19],"h2",{"id":18},"зачем-настраивать-journald","Зачем настраивать journald",[21,22,23,24,28],"p",{},"По умолчанию многие дистрибутивы Linux хранят журнал systemd в оперативной памяти. Это значит, что после перезагрузки вы теряете историю загрузки, крахи сервисов и сообщения ядра. Кроме того, без явных лимитов логи могут незаметно занять весь системный раздел, что приводит к зависанию системы. Правильная конфигурация ",[25,26,27],"code",{},"systemd-journald"," решает обе проблемы: сохраняет важные записи на диск и строго контролирует потребление ресурсов.",[16,30,32],{"id":31},"требования-и-подготовка","Требования и подготовка",[21,34,35,36,39,40,43],{},"Перед началом убедитесь, что у вас есть доступ к учётной записи с правами ",[25,37,38],{},"sudo"," или ",[25,41,42],{},"root",". Конфигурация универсальна для современных систем, использующих systemd. Проверьте текущий статус службы и путь хранения:",[45,46,51],"pre",{"className":47,"code":48,"language":49,"meta":50,"style":50},"language-bash shiki shiki-themes github-light github-dark","journalctl --disk-usage\nsystemctl status systemd-journald\n","bash","",[25,52,53,66],{"__ignoreMap":50},[54,55,58,62],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"sScJk","journalctl",[54,63,65],{"class":64},"sj4cs"," --disk-usage\n",[54,67,69,72,76],{"class":56,"line":68},2,[54,70,71],{"class":60},"systemctl",[54,73,75],{"class":74},"sZZnC"," status",[54,77,78],{"class":74}," systemd-journald\n",[21,80,81,82,85,86,89,90,93],{},"Если команда ",[25,83,84],{},"--disk-usage"," показывает ",[25,87,88],{},"0B"," или путь указывает на ",[25,91,92],{},"/run/log/journal",", значит постоянная запись отключена и её нужно включить.",[16,95,97],{"id":96},"шаг-1-открытие-конфигурационного-файла","Шаг 1: Открытие конфигурационного файла",[21,99,100,101,104],{},"Основные параметры хранятся в ",[25,102,103],{},"/etc/systemd/journald.conf",". Откройте файл в текстовом редакторе с повышенными привилегиями:",[45,106,108],{"className":47,"code":107,"language":49,"meta":50,"style":50},"sudo nano /etc/systemd/journald.conf\n",[25,109,110],{"__ignoreMap":50},[54,111,112,114,117],{"class":56,"line":57},[54,113,38],{"class":60},[54,115,116],{"class":74}," nano",[54,118,119],{"class":74}," /etc/systemd/journald.conf\n",[21,121,122,123,126,127,130],{},"Все активные настройки уже содержатся в секции ",[25,124,125],{},"[Journal]",". Остальные строки начинаются с ",[25,128,129],{},"#"," и являются комментариями с описанием параметров. Вам не нужно переписывать файл — достаточно раскомментировать и изменить нужные строки.",[16,132,134],{"id":133},"шаг-2-включение-постоянного-хранения","Шаг 2: Включение постоянного хранения",[21,136,137,138,141,142,145],{},"Найдите директиву ",[25,139,140],{},"Storage"," и измените её значение на ",[25,143,144],{},"persistent",". Это переключает режим хранения с временного на дисковый:",[45,147,151],{"className":148,"code":149,"language":150,"meta":50,"style":50},"language-ini shiki shiki-themes github-light github-dark","Storage=persistent\n","ini",[25,152,153],{"__ignoreMap":50},[54,154,155],{"class":56,"line":57},[54,156,149],{},[158,159,160],"blockquote",{},[21,161,162,163,166],{},"⚠️ Важно: После изменения этого параметра systemd автоматически создаст директорию ",[25,164,165],{},"/var/log/journal/"," при следующем запуске службы. Убедитесь, что на корневом разделе достаточно свободного места.",[16,168,170],{"id":169},"шаг-3-ограничение-размера-и-времени-хранения","Шаг 3: Ограничение размера и времени хранения",[21,172,173,174,176],{},"Чтобы журнал не разросся до критических значений, задайте жёсткие лимиты. Добавьте или раскомментируйте следующие параметры в той же секции ",[25,175,125],{},":",[45,178,180],{"className":148,"code":179,"language":150,"meta":50,"style":50},"# Максимальный объём, который займут логи на диске\nSystemMaxUse=1G\n# Максимальный размер одного файла журнала\nSystemMaxFileSize=100M\n# Период хранения записей (в данном случае 4 недели)\nMaxRetentionSec=4week\n# Интервал синхронизации с диском в секундах\nSyncIntervalSec=5m\n",[25,181,182,187,192,198,204,210,216,222],{"__ignoreMap":50},[54,183,184],{"class":56,"line":57},[54,185,186],{},"# Максимальный объём, который займут логи на диске\n",[54,188,189],{"class":56,"line":68},[54,190,191],{},"SystemMaxUse=1G\n",[54,193,195],{"class":56,"line":194},3,[54,196,197],{},"# Максимальный размер одного файла журнала\n",[54,199,201],{"class":56,"line":200},4,[54,202,203],{},"SystemMaxFileSize=100M\n",[54,205,207],{"class":56,"line":206},5,[54,208,209],{},"# Период хранения записей (в данном случае 4 недели)\n",[54,211,213],{"class":56,"line":212},6,[54,214,215],{},"MaxRetentionSec=4week\n",[54,217,219],{"class":56,"line":218},7,[54,220,221],{},"# Интервал синхронизации с диском в секундах\n",[54,223,225],{"class":56,"line":224},8,[54,226,227],{},"SyncIntervalSec=5m\n",[21,229,230,231,234,235,238],{},"Параметр ",[25,232,233],{},"SystemMaxUse"," гарантирует, что journald автоматически удалит самые старые файлы, как только общий размер превысит 1 ГБ. ",[25,236,237],{},"SyncIntervalSec"," предотвращает потерю данных при внезапном отключении питания, регулярно сбрасывая буфер на диск.",[240,241],"in-article-ad",{},[16,243,245],{"id":244},"шаг-4-перезапуск-службы","Шаг 4: Перезапуск службы",[21,247,248],{},"systemd не перечитывает конфигурационные файлы динамически. Примените изменения командой перезапуска:",[45,250,252],{"className":47,"code":251,"language":49,"meta":50,"style":50},"sudo systemctl restart systemd-journald\n",[25,253,254],{"__ignoreMap":50},[54,255,256,258,261,264],{"class":56,"line":57},[54,257,38],{"class":60},[54,259,260],{"class":74}," systemctl",[54,262,263],{"class":74}," restart",[54,265,78],{"class":74},[21,267,268],{},"Если служба не перезапустилась или упала с ошибкой, проверьте журнал самой службы для поиска синтаксических опечаток:",[45,270,272],{"className":47,"code":271,"language":49,"meta":50,"style":50},"sudo journalctl -xeu systemd-journald.service\n",[25,273,274],{"__ignoreMap":50},[54,275,276,278,281,284],{"class":56,"line":57},[54,277,38],{"class":60},[54,279,280],{"class":74}," journalctl",[54,282,283],{"class":64}," -xeu",[54,285,286],{"class":74}," systemd-journald.service\n",[21,288,289],{},"Убедитесь, что вы не допустили ошибок в именах директив и единицах измерения.",[16,291,293],{"id":292},"проверка-корректности-настроек","Проверка корректности настроек",[21,295,296],{},"Убедитесь, что логи теперь сохраняются в постоянном хранилище:",[45,298,300],{"className":47,"code":299,"language":49,"meta":50,"style":50},"ls -la /var/log/journal/\n",[25,301,302],{"__ignoreMap":50},[54,303,304,307,310],{"class":56,"line":57},[54,305,306],{"class":60},"ls",[54,308,309],{"class":64}," -la",[54,311,312],{"class":74}," /var/log/journal/\n",[21,314,315],{},"Проверьте актуальный размер журнала:",[45,317,319],{"className":47,"code":318,"language":49,"meta":50,"style":50},"journalctl --disk-usage\n",[25,320,321],{"__ignoreMap":50},[54,322,323,325],{"class":56,"line":57},[54,324,61],{"class":60},[54,326,65],{"class":64},[21,328,329,330,333],{},"Вывод должен показать ненулевой объём, например ",[25,331,332],{},"Archived and active journals take up 256.0M in the file system",". Запустите тестовую записи и найдите её:",[45,335,337],{"className":47,"code":336,"language":49,"meta":50,"style":50},"logger \"Тестовое сообщение FixPedia\"\njournalctl -n 5\n",[25,338,339,347],{"__ignoreMap":50},[54,340,341,344],{"class":56,"line":57},[54,342,343],{"class":60},"logger",[54,345,346],{"class":74}," \"Тестовое сообщение FixPedia\"\n",[54,348,349,351,354],{"class":56,"line":68},[54,350,61],{"class":60},[54,352,353],{"class":64}," -n",[54,355,356],{"class":64}," 5\n",[21,358,359],{},"Если ваше сообщение появилось в конце вывода, конфигурация работает штатно.",[16,361,363],{"id":362},"решение-типичных-проблем","Решение типичных проблем",[21,365,366,370,371,374,375,374,378,374,381,384,385,374,388,374,391,374,394,397],{},[367,368,369],"strong",{},"Служба не запускается после правок.","\nЧаще всего причина — некорректный формат значения. systemd строго проверяет единицы измерения (",[25,372,373],{},"K",", ",[25,376,377],{},"M",[25,379,380],{},"G",[25,382,383],{},"T"," для размера; ",[25,386,387],{},"sec",[25,389,390],{},"min",[25,392,393],{},"hour",[25,395,396],{},"week"," для времени). Восстановите оригинальный файл из резервной копии или пакета дистрибутива, если правка сломала внутренний парсер.",[21,399,400,403,404,406,407,410,411,414],{},[367,401,402],{},"Логи всё ещё исчезают после перезагрузки.","\nПроверьте права владельца на директорию ",[25,405,165],{},". Она должна принадлежать ",[25,408,409],{},"root:systemd-journal"," и иметь права ",[25,412,413],{},"2775",". Исправьте их командой:",[45,416,418],{"className":47,"code":417,"language":49,"meta":50,"style":50},"sudo chown root:systemd-journal /var/log/journal/\nsudo chmod 2775 /var/log/journal/\n",[25,419,420,432],{"__ignoreMap":50},[54,421,422,424,427,430],{"class":56,"line":57},[54,423,38],{"class":60},[54,425,426],{"class":74}," chown",[54,428,429],{"class":74}," root:systemd-journal",[54,431,312],{"class":74},[54,433,434,436,439,442],{"class":56,"line":68},[54,435,38],{"class":60},[54,437,438],{"class":74}," chmod",[54,440,441],{"class":64}," 2775",[54,443,312],{"class":74},[21,445,446,449,450,453],{},[367,447,448],{},"Диск быстро заполняется, несмотря на лимиты.","\nУбедитесь, что не запущены сторонние логгеры, дублирующие вывод journald, или приложения с агрессивным выводом в ",[25,451,452],{},"stdout/stderr",". Временно очистите старые записи без удаления конфига:",[45,455,457],{"className":47,"code":456,"language":49,"meta":50,"style":50},"sudo journalctl --vacuum-time=2weeks\nsudo journalctl --vacuum-size=500M\n",[25,458,459,468],{"__ignoreMap":50},[54,460,461,463,465],{"class":56,"line":57},[54,462,38],{"class":60},[54,464,280],{"class":74},[54,466,467],{"class":64}," --vacuum-time=2weeks\n",[54,469,470,472,474],{"class":56,"line":68},[54,471,38],{"class":60},[54,473,280],{"class":74},[54,475,476],{"class":64}," --vacuum-size=500M\n",[21,478,479],{},"Это мгновенно освободит место, после чего встроенная ротация продолжит работу в автоматическом режиме.",[481,482,483],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":50,"searchDepth":68,"depth":68,"links":485},[486,487,488,489,490,491,492,493],{"id":18,"depth":68,"text":19},{"id":31,"depth":68,"text":32},{"id":96,"depth":68,"text":97},{"id":133,"depth":68,"text":134},{"id":169,"depth":68,"text":170},{"id":244,"depth":68,"text":245},{"id":292,"depth":68,"text":293},{"id":362,"depth":68,"text":363},null,"2026-04-07 23:05:48","Пошаговая инструкция по настройке journald в Linux. Настройте ротацию логов, размер хранилища и экспортируйте записи в файлы за 10 минут.","medium",false,"10-15 мин","md",[502,505,508,511],{"question":503,"answer":504},"Безопасно ли удалять старые логи journald вручную?","Нет, ручное удаление через `rm` нарушает целостность каталога. Используйте встроенные команды `journalctl --vacuum-time=` или `--vacuum-size=`, которые безопасно очищают архивные сегменты.",{"question":506,"answer":507},"Почему логи исчезают после каждой перезагрузки системы?","По умолчанию journald работает в режиме `volatile` и пишет в оперативную память. Измените параметр `Storage` на `persistent` в конфигурационном файле, чтобы сохранять записи на диск.",{"question":509,"answer":510},"Можно ли отправлять записи journald напрямую в rsyslog?","Да. Включите директиву `ForwardToSyslog=yes` в секции `[Journal]`. После перезапуска службы `systemd-journald` начнёт передавать события в сокет `rsyslog`.",{"question":512,"answer":513},"Как быстро отфильтровать логи конкретного сервиса?","Используйте флаг юнита: `journalctl -u nginx.service`. Для фильтрации по тексту добавляйте `-g \"критическая_ошибка\"` или ограничивайте вывод по времени через `--since \"1 hour ago\"`.",[515,518,521,524],{"name":516,"text":517},"Откройте конфигурационный файл journald","Создайте или отредактируйте `/etc/systemd/journald.conf` с правами суперпользователя через `sudo nano /etc/systemd/journald.conf`.",{"name":519,"text":520},"Включите персистентное хранение","Раскомментируйте строку `#Storage=auto` и замените её на `Storage=persistent` для сохранения логов на дисковый раздел.",{"name":522,"text":523},"Настройте лимиты размера и времени","Задайте параметры `SystemMaxUse=1G`, `SystemMaxFileSize=100M` и `MaxRetentionSec=4week`, чтобы журнал не переполнял системный раздел.",{"name":525,"text":526},"Примените изменения и проверьте работу","Перезапустите службу командой `systemctl restart systemd-journald` и убедитесь в статусе через `journalctl --disk-usage`.","PT15M",[529,530,531,532,533,534,535],"настройка journald linux","systemd-journald конфигурация","как ротировать логи systemd","PersistentStorage journald","ограничить размер журнала systemd","перенос логов journald в файл","журнал systemd journalctl настройка","ru_RU",{},true,"/guides/linux/configure-journald","linux",[542,543,544],"/guides/linux/monitor-systemd-services","/guides/linux/backup-logs-automatically","/guides/linux/fix-disk-full-var-log","Гайды по Linux",{"title":5,"description":496},"guides/linux/configure-journald","Научитесь управлять системным журналом Linux через systemd-journald. Вы узнаете, как ограничить размер логов, настроить персистентное хранение и настроить автоматическую очистку.",[550,551,552,553,554,555,61],"Linux","systemd","логи","journald","администрирование","syslog","guide","xkiKXxtJOVSsQH0xj_O8RKY19BRvO4PhrL-EcsJNiks",{"data":559,"body":560},{},{"type":42,"children":561},[562],{"type":563,"tag":21,"props":564,"children":565},"element",{},[566,569,575,577,583,584,590],{"type":567,"value":568},"text","Нет, ручное удаление через ",{"type":563,"tag":25,"props":570,"children":572},{"className":571},[],[573],{"type":567,"value":574},"rm",{"type":567,"value":576}," нарушает целостность каталога. Используйте встроенные команды ",{"type":563,"tag":25,"props":578,"children":580},{"className":579},[],[581],{"type":567,"value":582},"journalctl --vacuum-time=",{"type":567,"value":39},{"type":563,"tag":25,"props":585,"children":587},{"className":586},[],[588],{"type":567,"value":589},"--vacuum-size=",{"type":567,"value":591},", которые безопасно очищают архивные сегменты.",{"data":593,"body":594},{},{"type":42,"children":595},[596],{"type":563,"tag":21,"props":597,"children":598},{},[599,601,607,609,614,616,621],{"type":567,"value":600},"По умолчанию journald работает в режиме ",{"type":563,"tag":25,"props":602,"children":604},{"className":603},[],[605],{"type":567,"value":606},"volatile",{"type":567,"value":608}," и пишет в оперативную память. Измените параметр ",{"type":563,"tag":25,"props":610,"children":612},{"className":611},[],[613],{"type":567,"value":140},{"type":567,"value":615}," на ",{"type":563,"tag":25,"props":617,"children":619},{"className":618},[],[620],{"type":567,"value":144},{"type":567,"value":622}," в конфигурационном файле, чтобы сохранять записи на диск.",{"data":624,"body":625},{},{"type":42,"children":626},[627],{"type":563,"tag":21,"props":628,"children":629},{},[630,632,638,640,645,647,652,654,660],{"type":567,"value":631},"Да. Включите директиву ",{"type":563,"tag":25,"props":633,"children":635},{"className":634},[],[636],{"type":567,"value":637},"ForwardToSyslog=yes",{"type":567,"value":639}," в секции ",{"type":563,"tag":25,"props":641,"children":643},{"className":642},[],[644],{"type":567,"value":125},{"type":567,"value":646},". После перезапуска службы ",{"type":563,"tag":25,"props":648,"children":650},{"className":649},[],[651],{"type":567,"value":27},{"type":567,"value":653}," начнёт передавать события в сокет ",{"type":563,"tag":25,"props":655,"children":657},{"className":656},[],[658],{"type":567,"value":659},"rsyslog",{"type":567,"value":661},".",{"data":663,"body":664},{},{"type":42,"children":665},[666],{"type":563,"tag":21,"props":667,"children":668},{},[669,671,677,679,685,687,693],{"type":567,"value":670},"Используйте флаг юнита: ",{"type":563,"tag":25,"props":672,"children":674},{"className":673},[],[675],{"type":567,"value":676},"journalctl -u nginx.service",{"type":567,"value":678},". Для фильтрации по тексту добавляйте ",{"type":563,"tag":25,"props":680,"children":682},{"className":681},[],[683],{"type":567,"value":684},"-g \"критическая_ошибка\"",{"type":567,"value":686}," или ограничивайте вывод по времени через ",{"type":563,"tag":25,"props":688,"children":690},{"className":689},[],[691],{"type":567,"value":692},"--since \"1 hour ago\"",{"type":567,"value":661},{"data":695,"body":696},{},{"type":42,"children":697},[698],{"type":563,"tag":21,"props":699,"children":700},{},[701,703,708,710,716],{"type":567,"value":702},"Создайте или отредактируйте ",{"type":563,"tag":25,"props":704,"children":706},{"className":705},[],[707],{"type":567,"value":103},{"type":567,"value":709}," с правами суперпользователя через ",{"type":563,"tag":25,"props":711,"children":713},{"className":712},[],[714],{"type":567,"value":715},"sudo nano /etc/systemd/journald.conf",{"type":567,"value":661},{"data":718,"body":719},{},{"type":42,"children":720},[721],{"type":563,"tag":21,"props":722,"children":723},{},[724,726,732,734,740],{"type":567,"value":725},"Раскомментируйте строку ",{"type":563,"tag":25,"props":727,"children":729},{"className":728},[],[730],{"type":567,"value":731},"#Storage=auto",{"type":567,"value":733}," и замените её на ",{"type":563,"tag":25,"props":735,"children":737},{"className":736},[],[738],{"type":567,"value":739},"Storage=persistent",{"type":567,"value":741}," для сохранения логов на дисковый раздел.",{"data":743,"body":744},{},{"type":42,"children":745},[746],{"type":563,"tag":21,"props":747,"children":748},{},[749,751,757,758,764,766,772],{"type":567,"value":750},"Задайте параметры ",{"type":563,"tag":25,"props":752,"children":754},{"className":753},[],[755],{"type":567,"value":756},"SystemMaxUse=1G",{"type":567,"value":374},{"type":563,"tag":25,"props":759,"children":761},{"className":760},[],[762],{"type":567,"value":763},"SystemMaxFileSize=100M",{"type":567,"value":765}," и ",{"type":563,"tag":25,"props":767,"children":769},{"className":768},[],[770],{"type":567,"value":771},"MaxRetentionSec=4week",{"type":567,"value":773},", чтобы журнал не переполнял системный раздел.",{"data":775,"body":776},{},{"type":42,"children":777},[778],{"type":563,"tag":21,"props":779,"children":780},{},[781,783,789,791,797],{"type":567,"value":782},"Перезапустите службу командой ",{"type":563,"tag":25,"props":784,"children":786},{"className":785},[],[787],{"type":567,"value":788},"systemctl restart systemd-journald",{"type":567,"value":790}," и убедитесь в статусе через ",{"type":563,"tag":25,"props":792,"children":794},{"className":793},[],[795],{"type":567,"value":796},"journalctl --disk-usage",{"type":567,"value":661},[799],{"id":800,"title":801,"appliesTo":802,"author":11,"body":805,"canonical":494,"code":494,"createdAt":1958,"description":1959,"difficulty":497,"draft":498,"estimatedTime":1960,"extension":500,"faq":1961,"howToSteps":1974,"howToTotalTime":1993,"image":494,"keywords":1994,"locale":536,"meta":2002,"navigation":538,"path":542,"platform":540,"related":2003,"section":2007,"seo":2008,"severity":494,"stem":2009,"summary":2010,"tags":2011,"twitterCreator":494,"twitterSite":494,"type":556,"updatedAt":1958,"__hash__":2014},"content_ru/guides/linux/monitor-systemd-services.md","Мониторинг systemd-сервисов: полное руководство по проверке статуса и логов",[7,803,8,804],"CentOS/RHEL 8+","Fedora 35+",{"type":13,"value":806,"toc":1946},[807,811,814,821,825,879,883,889,911,916,953,957,966,1090,1132,1134,1138,1141,1331,1341,1358,1361,1365,1372,1564,1573,1577,1580,1622,1626,1633,1789,1796,1800,1851,1855,1943],[16,808,810],{"id":809},"введение-зачем-это-нужно","Введение / Зачем это нужно",[21,812,813],{},"Systemd — это современная система инициализации и менеджер служб в большинстве дистрибутивов Linux. Мониторинг её сервисов критически важен для поддержания стабильности сервера или рабочей станции. Без регулярной проверки вы можете не заметить, как важный фоновый процесс (база данных, веб-сервер, агент бэкапа) остановился из-за ошибки или нехватки ресурсов.",[21,815,816,817,820],{},"Это руководство даёт вам ",[367,818,819],{},"полный набор инструментов"," для proactive monitoring: от однократной диагностики до настройки автоматических оповещений. Вы научитесь быстро определять, жив ли сервис, где искать логи при падении и как настроить систему на самоуведомление о проблемах.",[16,822,824],{"id":823},"требования-подготовка","Требования / Подготовка",[826,827,828,835,855,864],"ol",{},[829,830,831,834],"li",{},[367,832,833],{},"Доступ к терминалу"," с правами sudo или root для проверки системных служб. Для пользовательских служб (user services) права не требуются.",[829,836,837,840,841,844,845,374,848,374,851,854],{},[367,838,839],{},"Базовое понимание systemd:"," знание, что такое юнит (",[25,842,843],{},".service","), и как управлять службами (",[25,846,847],{},"start",[25,849,850],{},"stop",[25,852,853],{},"enable",").",[829,856,857,860,861,661],{},[367,858,859],{},"Актуальная версия systemd"," (обычно 245+ на современных дистрибутивах). Проверить: ",[25,862,863],{},"systemctl --version",[829,865,866,867,870,871,874,875,878],{},"Для шага с ",[25,868,869],{},"OnFailure"," потребуется редактирование конфигурационных файлов в ",[25,872,873],{},"/etc/systemd/system/"," и выполнение ",[25,876,877],{},"systemctl daemon-reload"," после изменений.",[16,880,882],{"id":881},"шаг-1-проверка-базового-статуса-сервиса","Шаг 1: Проверка базового статуса сервиса",[21,884,885,886,661],{},"Самый быстрый способ понять, что происходит с сервисом — команда ",[25,887,888],{},"systemctl status",[45,890,892],{"className":47,"code":891,"language":49,"meta":50,"style":50},"# Замените nginx на имя вашего сервиса\nsudo systemctl status nginx\n",[25,893,894,900],{"__ignoreMap":50},[54,895,896],{"class":56,"line":57},[54,897,899],{"class":898},"sJ8bj","# Замените nginx на имя вашего сервиса\n",[54,901,902,904,906,908],{"class":56,"line":68},[54,903,38],{"class":60},[54,905,260],{"class":74},[54,907,75],{"class":74},[54,909,910],{"class":74}," nginx\n",[21,912,913],{},[367,914,915],{},"Что смотреть в выводе:",[917,918,919,934,940,946],"ul",{},[829,920,921,924,925,374,928,374,931,854],{},[25,922,923],{},"Active:"," — статус (",[25,926,927],{},"active (running)",[25,929,930],{},"inactive (dead)",[25,932,933],{},"failed",[829,935,936,939],{},[25,937,938],{},"Main PID:"," — ID главного процесса. Если 0, сервис, скорее всего, упал.",[829,941,942,945],{},[25,943,944],{},"CGroup:"," — дерево процессов, принадлежащих сервису.",[829,947,948,949,952],{},"Последние несколько строк журнала — ",[367,950,951],{},"самая ценная информация"," при сбое. Часто там указана прямая причина ошибки (например, \"Permission denied\" или \"Port already in use\").",[16,954,956],{"id":955},"шаг-2-глубокий-анализ-логов-через-journalctl","Шаг 2: Глубокий анализ логов через journalctl",[21,958,959,960,962,963,965],{},"Если ",[25,961,888],{}," не даёт достаточно деталей, используйте ",[25,964,61],{}," — основной инструмент для работы с журналом systemd.",[45,967,969],{"className":47,"code":968,"language":49,"meta":50,"style":50},"# Показать все записи для конкретного сервиса\nsudo journalctl -u nginx.service\n\n# Следить за логами в реальном времени (как tail -f)\nsudo journalctl -u nginx.service -f\n\n# Показать только сообщения об ошибках и критических проблемах\nsudo journalctl -u nginx.service -p err..crit\n\n# Показать логи за последний час\nsudo journalctl -u nginx.service --since \"1 hour ago\"\n\n# Показать логи с момента последней загрузки системы\nsudo journalctl -u nginx.service -b\n",[25,970,971,976,988,993,998,1012,1016,1021,1037,1042,1048,1065,1070,1076],{"__ignoreMap":50},[54,972,973],{"class":56,"line":57},[54,974,975],{"class":898},"# Показать все записи для конкретного сервиса\n",[54,977,978,980,982,985],{"class":56,"line":68},[54,979,38],{"class":60},[54,981,280],{"class":74},[54,983,984],{"class":64}," -u",[54,986,987],{"class":74}," nginx.service\n",[54,989,990],{"class":56,"line":194},[54,991,992],{"emptyLinePlaceholder":538},"\n",[54,994,995],{"class":56,"line":200},[54,996,997],{"class":898},"# Следить за логами в реальном времени (как tail -f)\n",[54,999,1000,1002,1004,1006,1009],{"class":56,"line":206},[54,1001,38],{"class":60},[54,1003,280],{"class":74},[54,1005,984],{"class":64},[54,1007,1008],{"class":74}," nginx.service",[54,1010,1011],{"class":64}," -f\n",[54,1013,1014],{"class":56,"line":212},[54,1015,992],{"emptyLinePlaceholder":538},[54,1017,1018],{"class":56,"line":218},[54,1019,1020],{"class":898},"# Показать только сообщения об ошибках и критических проблемах\n",[54,1022,1023,1025,1027,1029,1031,1034],{"class":56,"line":224},[54,1024,38],{"class":60},[54,1026,280],{"class":74},[54,1028,984],{"class":64},[54,1030,1008],{"class":74},[54,1032,1033],{"class":64}," -p",[54,1035,1036],{"class":74}," err..crit\n",[54,1038,1040],{"class":56,"line":1039},9,[54,1041,992],{"emptyLinePlaceholder":538},[54,1043,1045],{"class":56,"line":1044},10,[54,1046,1047],{"class":898},"# Показать логи за последний час\n",[54,1049,1051,1053,1055,1057,1059,1062],{"class":56,"line":1050},11,[54,1052,38],{"class":60},[54,1054,280],{"class":74},[54,1056,984],{"class":64},[54,1058,1008],{"class":74},[54,1060,1061],{"class":64}," --since",[54,1063,1064],{"class":74}," \"1 hour ago\"\n",[54,1066,1068],{"class":56,"line":1067},12,[54,1069,992],{"emptyLinePlaceholder":538},[54,1071,1073],{"class":56,"line":1072},13,[54,1074,1075],{"class":898},"# Показать логи с момента последней загрузки системы\n",[54,1077,1079,1081,1083,1085,1087],{"class":56,"line":1078},14,[54,1080,38],{"class":60},[54,1082,280],{"class":74},[54,1084,984],{"class":64},[54,1086,1008],{"class":74},[54,1088,1089],{"class":64}," -b\n",[21,1091,1092,1095,1096,1099,1100,1103,1104,1107,1108,1111,1112,1115,1116,1119,1120,1123,1124,1127,1128,1131],{},[367,1093,1094],{},"Фильтрация по приоритету:"," Уровни: ",[25,1097,1098],{},"emerg"," (0), ",[25,1101,1102],{},"alert"," (1), ",[25,1105,1106],{},"crit"," (2), ",[25,1109,1110],{},"err"," (3), ",[25,1113,1114],{},"warning"," (4), ",[25,1117,1118],{},"notice"," (5), ",[25,1121,1122],{},"info"," (6), ",[25,1125,1126],{},"debug"," (7). ",[25,1129,1130],{},"-p err..crit"," покажет всё от ошибок и выше.",[240,1133],{},[16,1135,1137],{"id":1136},"шаг-3-мониторинг-нескольких-сервисов-одновременно","Шаг 3: Мониторинг нескольких сервисов одновременно",[21,1139,1140],{},"Для быстрого обзора состояния нескольких ключевых служб создайте простой скрипт.",[45,1142,1144],{"className":47,"code":1143,"language":49,"meta":50,"style":50},"#!/bin/bash\n# Файл: monitor_critical.sh\nSERVICES=(\"nginx\" \"postgresql\" \"redis-server\" \"ssh\")\necho \"=== Проверка статуса критичных сервисов $(date) ===\"\nfor svc in \"${SERVICES[@]}\"; do\n    if systemctl is-active --quiet \"$svc\"; then\n        echo \"✅ $svc: active\"\n    else\n        echo \"❌ $svc: INACTIVE or FAILED\"\n        # Показать последние логи для упавшего сервиса\n        echo \"   Последние записи в journalctl:\"\n        sudo journalctl -u \"$svc\" -n 5 --no-pager\n    fi\ndone\n",[25,1145,1146,1151,1156,1184,1198,1229,1256,1269,1274,1286,1291,1298,1321,1326],{"__ignoreMap":50},[54,1147,1148],{"class":56,"line":57},[54,1149,1150],{"class":898},"#!/bin/bash\n",[54,1152,1153],{"class":56,"line":68},[54,1154,1155],{"class":898},"# Файл: monitor_critical.sh\n",[54,1157,1158,1162,1166,1169,1172,1175,1178,1181],{"class":56,"line":194},[54,1159,1161],{"class":1160},"sVt8B","SERVICES",[54,1163,1165],{"class":1164},"szBVR","=",[54,1167,1168],{"class":1160},"(",[54,1170,1171],{"class":74},"\"nginx\"",[54,1173,1174],{"class":74}," \"postgresql\"",[54,1176,1177],{"class":74}," \"redis-server\"",[54,1179,1180],{"class":74}," \"ssh\"",[54,1182,1183],{"class":1160},")\n",[54,1185,1186,1189,1192,1195],{"class":56,"line":200},[54,1187,1188],{"class":64},"echo",[54,1190,1191],{"class":74}," \"=== Проверка статуса критичных сервисов $(",[54,1193,1194],{"class":60},"date",[54,1196,1197],{"class":74},") ===\"\n",[54,1199,1200,1203,1206,1209,1212,1214,1217,1220,1223,1226],{"class":56,"line":206},[54,1201,1202],{"class":1164},"for",[54,1204,1205],{"class":1160}," svc ",[54,1207,1208],{"class":1164},"in",[54,1210,1211],{"class":74}," \"${",[54,1213,1161],{"class":1160},[54,1215,1216],{"class":74},"[",[54,1218,1219],{"class":1164},"@",[54,1221,1222],{"class":74},"]}\"",[54,1224,1225],{"class":1160},"; ",[54,1227,1228],{"class":1164},"do\n",[54,1230,1231,1234,1236,1239,1242,1245,1248,1251,1253],{"class":56,"line":212},[54,1232,1233],{"class":1164},"    if",[54,1235,260],{"class":60},[54,1237,1238],{"class":74}," is-active",[54,1240,1241],{"class":64}," --quiet",[54,1243,1244],{"class":74}," \"",[54,1246,1247],{"class":1160},"$svc",[54,1249,1250],{"class":74},"\"",[54,1252,1225],{"class":1160},[54,1254,1255],{"class":1164},"then\n",[54,1257,1258,1261,1264,1266],{"class":56,"line":218},[54,1259,1260],{"class":64},"        echo",[54,1262,1263],{"class":74}," \"✅ ",[54,1265,1247],{"class":1160},[54,1267,1268],{"class":74},": active\"\n",[54,1270,1271],{"class":56,"line":224},[54,1272,1273],{"class":1164},"    else\n",[54,1275,1276,1278,1281,1283],{"class":56,"line":1039},[54,1277,1260],{"class":64},[54,1279,1280],{"class":74}," \"❌ ",[54,1282,1247],{"class":1160},[54,1284,1285],{"class":74},": INACTIVE or FAILED\"\n",[54,1287,1288],{"class":56,"line":1044},[54,1289,1290],{"class":898},"        # Показать последние логи для упавшего сервиса\n",[54,1292,1293,1295],{"class":56,"line":1050},[54,1294,1260],{"class":64},[54,1296,1297],{"class":74}," \"   Последние записи в journalctl:\"\n",[54,1299,1300,1303,1305,1307,1309,1311,1313,1315,1318],{"class":56,"line":1067},[54,1301,1302],{"class":60},"        sudo",[54,1304,280],{"class":74},[54,1306,984],{"class":64},[54,1308,1244],{"class":74},[54,1310,1247],{"class":1160},[54,1312,1250],{"class":74},[54,1314,353],{"class":64},[54,1316,1317],{"class":64}," 5",[54,1319,1320],{"class":64}," --no-pager\n",[54,1322,1323],{"class":56,"line":1072},[54,1324,1325],{"class":1164},"    fi\n",[54,1327,1328],{"class":56,"line":1078},[54,1329,1330],{"class":1164},"done\n",[21,1332,1333,1334,1337,1338,176],{},"Сделайте скрипт исполняемым (",[25,1335,1336],{},"chmod +x monitor_critical.sh",") и запускайте его периодически через ",[25,1339,1340],{},"watch",[45,1342,1344],{"className":47,"code":1343,"language":49,"meta":50,"style":50},"watch -n 30 ./monitor_critical.sh\n",[25,1345,1346],{"__ignoreMap":50},[54,1347,1348,1350,1352,1355],{"class":56,"line":57},[54,1349,1340],{"class":60},[54,1351,353],{"class":64},[54,1353,1354],{"class":64}," 30",[54,1356,1357],{"class":74}," ./monitor_critical.sh\n",[21,1359,1360],{},"Это обновляет вывод каждые 30 секунд.",[16,1362,1364],{"id":1363},"шаг-4-настройка-автоматических-оповещений-через-systemd","Шаг 4: Настройка автоматических оповещений через systemd",[21,1366,1367,1368,1371],{},"Для критичных сервисов можно настроить реакцию systemd на сбой с помощью директивы ",[25,1369,1370],{},"OnFailure=",". Это более надёжно, чем внешние скрипты-полинги.",[826,1373,1374,1433,1521,1558],{},[829,1375,1376,1379,1380,1383,1384],{},[367,1377,1378],{},"Создайте службу-нотификатор"," (например, ",[25,1381,1382],{},"send-failure-alert.service","):",[45,1385,1387],{"className":148,"code":1386,"language":150,"meta":50,"style":50},"# /etc/systemd/system/send-failure-alert.service\n[Unit]\nDescription=Send alert on service failure\n# Передаём имя упавшего сервиса через эквивалент %i\n# %i будет заменён на имя юнита, который вызвал OnFailure\n\n[Service]\nType=oneshot\nExecStart=/usr/local/bin/alert-script.sh %i\n",[25,1388,1389,1394,1399,1404,1409,1414,1418,1423,1428],{"__ignoreMap":50},[54,1390,1391],{"class":56,"line":57},[54,1392,1393],{},"# /etc/systemd/system/send-failure-alert.service\n",[54,1395,1396],{"class":56,"line":68},[54,1397,1398],{},"[Unit]\n",[54,1400,1401],{"class":56,"line":194},[54,1402,1403],{},"Description=Send alert on service failure\n",[54,1405,1406],{"class":56,"line":200},[54,1407,1408],{},"# Передаём имя упавшего сервиса через эквивалент %i\n",[54,1410,1411],{"class":56,"line":206},[54,1412,1413],{},"# %i будет заменён на имя юнита, который вызвал OnFailure\n",[54,1415,1416],{"class":56,"line":212},[54,1417,992],{"emptyLinePlaceholder":538},[54,1419,1420],{"class":56,"line":218},[54,1421,1422],{},"[Service]\n",[54,1424,1425],{"class":56,"line":224},[54,1426,1427],{},"Type=oneshot\n",[54,1429,1430],{"class":56,"line":1039},[54,1431,1432],{},"ExecStart=/usr/local/bin/alert-script.sh %i\n",[829,1434,1435,1438,1439],{},[367,1436,1437],{},"Создайте простой скрипт-нотификатор"," (настройте под вашу систему: email, slack, telegram):",[45,1440,1442],{"className":47,"code":1441,"language":49,"meta":50,"style":50},"#!/bin/bash\n# /usr/local/bin/alert-script.sh\nFAILED_SERVICE=$1\nHOSTNAME=$(hostname)\necho \"Сбой сервиса $FAILED_SERVICE на хосте $HOSTNAME\" | \\\n    mail -s \"ALERT: systemd failure on $HOSTNAME\" admin@example.com\n",[25,1443,1444,1448,1453,1464,1479,1503],{"__ignoreMap":50},[54,1445,1446],{"class":56,"line":57},[54,1447,1150],{"class":898},[54,1449,1450],{"class":56,"line":68},[54,1451,1452],{"class":898},"# /usr/local/bin/alert-script.sh\n",[54,1454,1455,1458,1460],{"class":56,"line":194},[54,1456,1457],{"class":1160},"FAILED_SERVICE",[54,1459,1165],{"class":1164},[54,1461,1463],{"class":1462},"s4XuR","$1\n",[54,1465,1466,1469,1471,1474,1477],{"class":56,"line":200},[54,1467,1468],{"class":1160},"HOSTNAME",[54,1470,1165],{"class":1164},[54,1472,1473],{"class":1160},"$(",[54,1475,1476],{"class":60},"hostname",[54,1478,1183],{"class":1160},[54,1480,1481,1483,1486,1489,1492,1495,1497,1500],{"class":56,"line":206},[54,1482,1188],{"class":64},[54,1484,1485],{"class":74}," \"Сбой сервиса ",[54,1487,1488],{"class":1160},"$FAILED_SERVICE",[54,1490,1491],{"class":74}," на хосте ",[54,1493,1494],{"class":1160},"$HOSTNAME",[54,1496,1250],{"class":74},[54,1498,1499],{"class":1164}," |",[54,1501,1502],{"class":64}," \\\n",[54,1504,1505,1508,1511,1514,1516,1518],{"class":56,"line":212},[54,1506,1507],{"class":60},"    mail",[54,1509,1510],{"class":64}," -s",[54,1512,1513],{"class":74}," \"ALERT: systemd failure on ",[54,1515,1494],{"class":1160},[54,1517,1250],{"class":74},[54,1519,1520],{"class":74}," admin@example.com\n",[829,1522,1523,176,1529],{},[367,1524,1525,1526,1528],{},"Добавьте ",[25,1527,869],{}," в конфиг вашего сервиса",[45,1530,1532],{"className":148,"code":1531,"language":150,"meta":50,"style":50},"# /etc/systemd/system/your-critical.service\n[Unit]\nDescription=My Critical App\nOnFailure=send-failure-alert.service\n...\n",[25,1533,1534,1539,1543,1548,1553],{"__ignoreMap":50},[54,1535,1536],{"class":56,"line":57},[54,1537,1538],{},"# /etc/systemd/system/your-critical.service\n",[54,1540,1541],{"class":56,"line":68},[54,1542,1398],{},[54,1544,1545],{"class":56,"line":194},[54,1546,1547],{},"Description=My Critical App\n",[54,1549,1550],{"class":56,"line":200},[54,1551,1552],{},"OnFailure=send-failure-alert.service\n",[54,1554,1555],{"class":56,"line":206},[54,1556,1557],{},"...\n",[829,1559,1560,1561,661],{},"Перезагрузите демон systemd: ",[25,1562,1563],{},"sudo systemctl daemon-reload",[21,1565,1566,1567,1570,1571,661],{},"Теперь при аварийном завершении ",[25,1568,1569],{},"your-critical.service"," будет запущен ",[25,1572,1382],{},[16,1574,1576],{"id":1575},"шаг-5-визуализация-и-внешние-инструменты","Шаг 5: Визуализация и внешние инструменты",[21,1578,1579],{},"Для долгосрочного мониторинга и исторических графиков подключите систему к сборщику метрик.",[917,1581,1582,1595,1612],{},[829,1583,1584,1587,1588,1591,1592,854],{},[367,1585,1586],{},"Netdata:"," Установите ",[25,1589,1590],{},"netdata",", и он автоматически обнаружит и начнёт отображать статус systemd-сервисов в веб-интерфейсе (",[25,1593,1594],{},"http://server:19999",[829,1596,1597,1600,1601,1604,1605,1607,1608,1611],{},[367,1598,1599],{},"Prometheus + node_exporter:"," Коллектор ",[25,1602,1603],{},"node_exporter"," имеет текстовыйcollector ",[25,1606,551],{},", который экспортирует метрики ",[25,1609,1610],{},"systemd_unit_state"," (1 для active, 0 для неактивного). Настройте алерты в Prometheus Alertmanager.",[829,1613,1614,1617,1618,1621],{},[367,1615,1616],{},"График загрузки:"," ",[25,1619,1620],{},"systemd-analyze plot > boot.svg"," создаст SVG-файл с графиком времени загрузки каждого юнита. Полезно для поиска \"тяжёлых\" сервисов.",[16,1623,1625],{"id":1624},"шаг-6-автоматизация-ежедневных-отчётов","Шаг 6: Автоматизация ежедневных отчётов",[21,1627,1628,1629,1632],{},"Настройте ",[25,1630,1631],{},"cron","-задачу для ежедневного отчёта об упавших сервисах.",[45,1634,1636],{"className":47,"code":1635,"language":49,"meta":50,"style":50},"# Откройте crontab для редактирования\nsudo crontab -e\n\n# Добавьте строку (отправлять отчёт в 8:00 утра)\n0 8 * * * /usr/bin/systemctl list-units --type=service --state=failed --no-legend | \\\n    awk '{print $1}' | \\\n    while read unit; do\n        echo \"=== $unit ===\"\n        sudo journalctl -u \"$unit\" -n 10 --no-pager\n        echo \"\"\n    done | \\\n    mail -s \"Daily Systemd Failure Report for $(hostname)\" admin@example.com\n",[25,1637,1638,1643,1653,1657,1662,1696,1708,1723,1736,1757,1764,1773],{"__ignoreMap":50},[54,1639,1640],{"class":56,"line":57},[54,1641,1642],{"class":898},"# Откройте crontab для редактирования\n",[54,1644,1645,1647,1650],{"class":56,"line":68},[54,1646,38],{"class":60},[54,1648,1649],{"class":74}," crontab",[54,1651,1652],{"class":64}," -e\n",[54,1654,1655],{"class":56,"line":194},[54,1656,992],{"emptyLinePlaceholder":538},[54,1658,1659],{"class":56,"line":200},[54,1660,1661],{"class":898},"# Добавьте строку (отправлять отчёт в 8:00 утра)\n",[54,1663,1664,1667,1670,1673,1675,1677,1680,1683,1686,1689,1692,1694],{"class":56,"line":206},[54,1665,1666],{"class":60},"0",[54,1668,1669],{"class":64}," 8",[54,1671,1672],{"class":64}," *",[54,1674,1672],{"class":64},[54,1676,1672],{"class":64},[54,1678,1679],{"class":74}," /usr/bin/systemctl",[54,1681,1682],{"class":74}," list-units",[54,1684,1685],{"class":64}," --type=service",[54,1687,1688],{"class":64}," --state=failed",[54,1690,1691],{"class":64}," --no-legend",[54,1693,1499],{"class":1164},[54,1695,1502],{"class":64},[54,1697,1698,1701,1704,1706],{"class":56,"line":212},[54,1699,1700],{"class":60},"    awk",[54,1702,1703],{"class":74}," '{print $1}'",[54,1705,1499],{"class":1164},[54,1707,1502],{"class":64},[54,1709,1710,1713,1716,1719,1721],{"class":56,"line":218},[54,1711,1712],{"class":1164},"    while",[54,1714,1715],{"class":74}," read",[54,1717,1718],{"class":74}," unit",[54,1720,1225],{"class":1160},[54,1722,1228],{"class":1164},[54,1724,1725,1727,1730,1733],{"class":56,"line":224},[54,1726,1260],{"class":64},[54,1728,1729],{"class":74}," \"=== ",[54,1731,1732],{"class":1160},"$unit",[54,1734,1735],{"class":74}," ===\"\n",[54,1737,1738,1740,1742,1744,1746,1748,1750,1752,1755],{"class":56,"line":1039},[54,1739,1302],{"class":60},[54,1741,280],{"class":74},[54,1743,984],{"class":64},[54,1745,1244],{"class":74},[54,1747,1732],{"class":1160},[54,1749,1250],{"class":74},[54,1751,353],{"class":64},[54,1753,1754],{"class":64}," 10",[54,1756,1320],{"class":64},[54,1758,1759,1761],{"class":56,"line":1044},[54,1760,1260],{"class":64},[54,1762,1763],{"class":74}," \"\"\n",[54,1765,1766,1769,1771],{"class":56,"line":1050},[54,1767,1768],{"class":1164},"    done",[54,1770,1499],{"class":1164},[54,1772,1502],{"class":64},[54,1774,1775,1777,1779,1782,1784,1787],{"class":56,"line":1067},[54,1776,1507],{"class":60},[54,1778,1510],{"class":64},[54,1780,1781],{"class":74}," \"Daily Systemd Failure Report for $(",[54,1783,1476],{"class":60},[54,1785,1786],{"class":74},")\"",[54,1788,1520],{"class":74},[21,1790,1791,1792,1795],{},"Если список упавших служб пуст, команда ",[25,1793,1794],{},"list-units"," ничего не выведет, и письмо не отправится (проверьте логи cron, если письмо приходит пустым).",[16,1797,1799],{"id":1798},"проверка-результата","Проверка результата",[826,1801,1802,1835,1845],{},[829,1803,1804,1807,1808,1811,1812],{},[367,1805,1806],{},"Тест на сбой:"," Намеренно остановите тестовый сервис (",[25,1809,1810],{},"sudo systemctl stop nginx","). Убедитесь, что:\n",[917,1813,1814,1823,1829],{},[829,1815,1816,85,1819,39,1821,661],{},[25,1817,1818],{},"systemctl status nginx",[25,1820,930],{},[25,1822,933],{},[829,1824,1825,1828],{},[25,1826,1827],{},"journalctl -u nginx.service -f"," показывает записи о остановке.",[829,1830,1831,1832,1834],{},"Если настраивали ",[25,1833,869],{},", ваш скрипт-нотификатор должен сработать.",[829,1836,1837,1840,1841,1844],{},[367,1838,1839],{},"Проверка скрипта мониторинга:"," Запустите ",[25,1842,1843],{},"./monitor_critical.sh"," и убедитесь, что он корректно определяет статусы и выводит логи для неактивных сервисов.",[829,1846,1847,1850],{},[367,1848,1849],{},"Проверка cron-задачи:"," Можно запустить команду из crontab вручную и проверить, приходит ли письмо.",[16,1852,1854],{"id":1853},"возможные-проблемы","Возможные проблемы",[917,1856,1857,1878,1901,1919],{},[829,1858,1859,1864,1865,1867,1868,1871,1872,1874,1875,661],{},[367,1860,1861],{},[25,1862,1863],{},"Failed to connect to bus: No such file or directory"," при запуске ",[25,1866,71],{}," без sudo от обычного пользователя. ",[367,1869,1870],{},"Решение:"," Используйте ",[25,1873,38],{}," или настройте права через PolicyKit (продвинутая тема). Для пользовательских служб используйте ",[25,1876,1877],{},"systemctl --user status",[829,1879,1880,1885,1886,1888,1889,1891,1892,39,1894,1897,1898,854],{},[367,1881,1882],{},[25,1883,1884],{},"Journal has been rotated since unit was started"," или отсутствие логов в ",[25,1887,61],{},". ",[367,1890,1870],{}," Логи могли быть очищены или перемещены. Проверьте место на диске в ",[25,1893,165],{},[25,1895,1896],{},"/run/log/journal/",". Убедитесь, что systemd-journald работает (",[25,1899,1900],{},"systemctl status systemd-journald",[829,1902,1903,1617,1909,1911,1912,1915,1916,661],{},[367,1904,1905,1906,1908],{},"Сервис падает сразу после запуска, но ",[25,1907,888],{}," не показывает явной ошибки.",[367,1910,1870],{}," Смотрите логи с самого начала загрузки юнита: ",[25,1913,1914],{},"sudo journalctl -u \u003Cсервис> -b -e"," (последние записи текущей загрузки) или ",[25,1917,1918],{},"sudo journalctl -u \u003Cсервис> --since \"5 minutes ago\"",[829,1920,1921,1617,1927,1929,1930,1932,1933,1936,1937,1939,1940,661],{},[367,1922,1923,1924,1926],{},"Оповещение через ",[25,1925,869],{}," не срабатывает.",[367,1928,1870],{}," Убедитесь, что ",[25,1931,1382],{}," существует, включён (",[25,1934,1935],{},"systemctl enable send-failure-alert.service",") и что в конфиге основного сервиса правильно указано имя службы-нотификатора. Проверьте логи самого ",[25,1938,1382],{}," через ",[25,1941,1942],{},"journalctl -u send-failure-alert.service",[481,1944,1945],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":50,"searchDepth":68,"depth":68,"links":1947},[1948,1949,1950,1951,1952,1953,1954,1955,1956,1957],{"id":809,"depth":68,"text":810},{"id":823,"depth":68,"text":824},{"id":881,"depth":68,"text":882},{"id":955,"depth":68,"text":956},{"id":1136,"depth":68,"text":1137},{"id":1363,"depth":68,"text":1364},{"id":1575,"depth":68,"text":1576},{"id":1624,"depth":68,"text":1625},{"id":1798,"depth":68,"text":1799},{"id":1853,"depth":68,"text":1854},"2026-04-08 13:40:59","Узнайте, как эффективно отслеживать работу служб systemd: от базовых команд systemctl и journalctl до настройки оповещений. Пошаговая инструкция для администраторов Linux.","15-30 мин",[1962,1965,1968,1971],{"question":1963,"answer":1964},"В чём разница между `systemctl status` и `journalctl` для диагностики?","`systemctl status` показывает текущее состояние юнита (запущен, остановлен, ошибка) и последние логи из журнала. `journalctl` даёт полный доступ ко всем логам systemd с возможностью фильтрации по времени, службе и приоритету. Первое — для быстрой проверки, второе — для глубокого анализа.",{"question":1966,"answer":1967},"Как настроить автоматическое оповещение при падении критического сервиса?","Используйте `OnFailure=` в юните сервиса, чтобы запустить скрипт-нотификатор при аварийном завершении. Альтернативно — настройте внешний мониторинг (например, через monit или systemd watchdog), который будет периодически проверять `systemctl is-active` и отправлять уведомления.",{"question":1969,"answer":1970},"Почему `journalctl` не показывает логи моего сервиса, хотя он работает?","Сервис может перенаправлять вывод в свой собственный файл лога (через `StandardOutput=append:/var/log/myservice.log`). Проверьте конфигурационный файл юнита (`/etc/systemd/system/`) на наличие директив `StandardOutput` или `StandardError`. Также убедитесь, что у вашего пользователя есть права на чтение журнала (обычно требуется группа `adm` или `systemd-journal`).",{"question":1972,"answer":1973},"Как мониторить службы без root-прав?","Для `systemctl status` нужны права на чтение состояния юнитов — их может иметь группа `systemd-journal` или `wheel`. Для `journalctl` — права на чтение журнала. Попросите администратора добавить вашу учётную запись в соответствующую группу. Без прав можно мониторить только те сервисы, которые запущены от вашего пользователя (user services).",[1975,1978,1981,1984,1987,1990],{"name":1976,"text":1977},"Проверка базового статуса сервиса","Используйте `systemctl status \u003Cимя_сервиса>` для получения информации о состоянии, PID, времени запуска и последних логах сервиса. Пример: `systemctl status nginx`.",{"name":1979,"text":1980},"Анализ логов через journalctl","Изучите полные логи сервиса командой `journalctl -u \u003Cимя_сервиса>`. Добавьте флаги: `-f` для слежения в реальном времени, `--since` для фильтрации по времени, `-p err` для показа только ошибок.",{"name":1982,"text":1983},"Мониторинг нескольких сервисов одновременно","Создайте простой bash-скрипт, который циклически проверяет `systemctl is-active --quiet \u003Cсервис>` для критичных служб и выводит статус. Запустите его через `watch -n 5 ./monitor.sh` для обновления каждые 5 секунд.",{"name":1985,"text":1986},"Настройка оповещений через systemd","В файле юнита сервиса (`/etc/systemd/system/\u003Cсервис>.service`) добавьте строку `OnFailure=notify-failure.service`. Создайте отдельный юнит `notify-failure.service`, который будет запускать скрипт отправки email/telegram-сообщения при сбое основного сервиса.",{"name":1988,"text":1989},"Визуализация с помощью third-party инструментов","Для графического мониторинга установите и настройте `systemd-analyze plot > boot.svg` для анализа времени загрузки, или используйте `netdata` / `prometheus node_exporter` с модулем systemd для веб-дашбордов.",{"name":1991,"text":1992},"Автоматизация проверки и создания отчётов","Настройте `cron`-задачу, которая раз в день запускает `systemctl list-units --type=service --state=failed` и отправляет результат на почту, если есть упавшие сервисы. Пример задачи: `0 8 * * * /usr/bin/systemctl list-units --type=service --state=failed | mail -s \"Daily Systemd Report\" admin@example.com`.","PT20M",[1995,1996,1997,1998,1999,2000,2001],"мониторинг systemd сервисов","проверить статус службы systemd","journalctl примеры использования","systemctl status объяснение","как посмотреть логи systemd","systemd service not running","отслеживание работы сервисов linux",{},[2004,2005,2006],"/guides/linux/systemd-service-recovery","/guides/linux/systemd-timers-basics","/errors/linux/systemd-failed-to-start","Гайды Linux",{"title":801,"description":1959},"guides/linux/monitor-systemd-services","Это руководство научит вас comprehensively monitor systemd services: проверять их статус, анализировать логи в реальном времени и настраивать базовые оповещения. Вы сможете быстро диагностировать сбои и обеспечивать стабильность системы.",[551,2012,540,2013,61,554],"мониторинг","services","jKHXQJnn9vsoH1Q98kUg02xdeNT-agst-Els3u6ewm8"]