Мне доводилось видеть множество Linux-серверов, которые, без единой перезагрузки, работали годами, в режиме 24x7. Но ни один компьютер не застрахован от неожиданностей, к которым могут вести «железные», программные и сетевые сбои. Даже самый надёжный сервер может однажды отказать. Что делать? Сегодня вы узнаете о том, что стоит предпринять в первую очередь для того, чтобы выяснить причину проблемы и вернуть машину в строй.

image

И, кстати, в самом начале, сразу после сбоя, стоит ответить на весьма важный вопрос: «А сервер ли виноват в том, что случилось?». Вполне возможно, что источник проблемы совсем не в нём. Но, не будем забегать вперёд.

Поиск и устранение неполадок: раньше и теперь


Когда, в 1980-х, я начал работать системным администратором Unix — задолго до того, как Линус Торвальдс загорелся идеей Linux — если с сервером было что-то не так, это была реальная засада. Тогда было сравнительно мало инструментов для поиска проблем, поэтому для того, чтобы сбойный сервер снова заработал, могло понадобиться много времени.

Теперь всё совсем не так, как раньше. Как-то один системный администратор вполне серьёзно сказал мне, говоря о проблемном сервере: «Я его уничтожил и поднял новый».

В былые времена такое звучало бы дико, но сегодня, когда ИТ-инфраструктуры строят на основе виртуальных машин и контейнеров… В конце концов, развёртывание новых серверов по мере необходимости — это обычное дело в любой облачной среде.

Сюда надо добавить инструменты DevOps, такие, как Chef и Puppet, используя которые легче создать новый сервер, чем диагностировать и «чинить» старый. А если говорить о таких высокоуровневых средствах, как Docker Swarm, Mesosphere и Kubernetes, то благодаря им работоспособность отказавшего сервера будет автоматически восстановлена до того, как администратор узнает о проблеме.

Данная концепция стала настолько распространённой, что ей дали название — бессерверные вычисления. Среди платформ, которые предоставляют подобные возможности — AWS Lambda, Iron.io, Google Cloud Functions.

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

Бессерверные вычисления, виртуальные машины, контейнеры — все эти уровни абстракции скрывают реальные серверы от пользователей, и, в некоторой степени, от системных администраторов. Однако, в основе всего этого — физическое аппаратное обеспечение и операционные системы. И, если что-то на данном уровне вдруг разладится, кто-то должен привести всё в порядок. Именно поэтому то, о чём мы сегодня говорим, никогда не потеряет актуальности.

Помню разговор с одним системным оператором. Вот что он говорил о том, как надо поступать после сбоя: «Переустановка сервера — это путь вникуда. Так не понять — что стало с машиной, и как не допустить такого в будущем. Ни один сносный администратор так не поступает». Я с этим согласен. До тех пор, пока не обнаружен первоисточник проблемы, её нельзя считать решённой.

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

Шаг первый. Проверка аппаратного обеспечения


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

Я и сосчитать не смогу, сколько раз поиски причины проблемы приводили к кабельным соединениям. Один взгляд на светодиоды — и становится ясно, что Ethernet-кабель выдернут, или питание сервера отключено.

Конечно, если всё выглядит более-менее прилично, можно обойтись без визита к серверу и проверить состояние Ethernet-соединения такой командой:

$ sudo ethtool eth0

Если её ответ можно трактовать, как «да», это значит, что исследуемый интерфейс способен обмениваться данными по сети.

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

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

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

Для того, чтобы увидеть, что BIOS/UEFI сообщают об аппаратном обеспечении компьютера, включая память, используйте команду dmidecode:

$ sudo dmidecode --type memory

Даже если всё тут выглядит нормально, на самом деле это может быть и не так. Дело в том, что данные SMBIOS не всегда точны. Поэтому, если после dmidecode память всё ещё остаётся под подозрением — пришло время воспользоваться Memtest86. Это отличная программа для проверки памяти, но работает она медленно. Если вы запустите её на сервере, не рассчитывайте на возможность использовать эту машину для чего-нибудь другого до завершения проверки.

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

$ sudo modprobe edac_core

Подождите какое-то время и посмотрите, удастся ли что-нибудь увидеть, выполнив такую команду:

$ sudo grep "[0-9]" /sys/devices/system/edac/mc/mc*/csrow*/ch*_ce_count

Эта команда даст вам сводку о числе ошибок, разбитых по модулям памяти (показатели, название которых начинается с csrow). Эти сведения, если сопоставить их с с данными dmidecode о каналах памяти, слотах и заводских номерах компонентов, помогут выявить сбойную планку памяти.

Шаг второй. Поиск истинного источника проблемы


Итак, сервер стал странно себя вести, но дым из него ещё пока не идёт. В сервере ли дело? Прежде чем вы попытаетесь решить возникшую проблему, сначала нужно точно определить её источник. Скажем, если пользователи жалуются на странности с серверным приложением, сначала проверьте, что причина проблемы — не в сбоях на клиенте.

Например, друг однажды рассказал мне, как его пользователи сообщили о том, что не могут работать с IBM Tivoli Storage Manager. Сначала, конечно, казалось, что виновен во всём сервер. Но в итоге администратор выяснил, что проблема вообще не была связана с серверной частью. Причиной был неудачный патч Windows-клиента 3076895. Но то, как сбоило это обновление безопасности, делало происходящее похожим на проблему серверной стороны.

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

Для начала — самое очевидное. Работает ли приложение? Есть множество способов проверить это. Вот два моих любимых:

$ sudo ps -ef | grep apache2
$ sudo netstat -plunt | grep apache2

Если оказалось, что, например, веб-сервер Apache не работает, запустить его можно такой командой:

$ sudo service apache2 start

Если в двух словах, то прежде чем диагностировать сервер и искать причину проблему, узнайте — сервер ли виноват, или что-то другое. Только тогда, когда вы поймёте, где именно находится источник сбоя, вы сможете задавать правильные вопросы и переходить к дальнейшему анализу того, что произошло.

Это можно сравнить с неожиданной остановкой автомобиля. Вы знаете, что машина дальше не едет, но, прежде чем тащить её в сервис, хорошо бы проверить, есть ли бензин в баке.

Шаг третий. Использование команды top


Итак, если оказалось, что все пути ведут к серверу, то вот ещё один важный инструмент для проверки системы — команда top. Она позволяет узнать среднюю нагрузку на сервер, использование файла подкачки, выяснить, какие ресурсы системы используют процессы. Эта утилита показывает общие сведения о системе и выводит данные по всем выполняющимся процессам на Linux-сервере. Вот подробное описание данных, которые выводит эта команда. Тут можно найти массу информации, которая способна помочь в поиске проблем с сервером. Вот несколько полезных способов работы с top, позволяющих найти проблемные места.

Для того, чтобы обнаружить процесс, потребляющий больше всего памяти, список процессов надо отсортировать в интерактивном режиме, введя с клавиатуры M. Для того, чтобы выяснить приложение, потребляющее больше всего ресурсов процессора, отсортируйте список, введя P. Для сортировки процессов по времени активности, введите с клавиатуры T. Для того, чтобы лучше видеть колонку, по которой производится сортировка, нажмите клавишу b.

Кроме того, данные по процессам, выводимые командой в интерактивном режиме, можно отфильтровать, введя O или o. Появится следующее приглашение, где предлагается добавить фильтр:

add filter #1 (ignoring case) as: [!]FLD?VAL

Затем можно ввести шаблон, скажем, для фильтрации по конкретному процессу. Например, благодаря фильтру COMMAND=apache, программа будет выводить только сведения о процессах Apache.

Ещё одна полезная возможность top заключается в выводе полного пути процесса и аргументов запуска. Для того, чтобы просмотреть эти данные, воспользуйтесь клавишей c.

Ещё одна похожая возможность top активируется вводом символа V. Она позволяет переключиться в режим иерархического вывода сведений о процессах.

Кроме того, можно просматривать процессы конкретного пользователя с помощью клавиш u или U, или скрыть процессы, не потребляющих ресурсы процессора, нажав клавишу i.

Хотя top долго была самой популярной интерактивной утилитой Linux для просмотра текущей ситуации в системе, у неё есть и альтернативы. Например, существует программа htop обладает расширенным набором возможностей, которая отличается более простым и удобным графическим интерфейсом Ncurses. Работая с htop, можно пользоваться мышью и прокручивать список процессов по вертикали и по горизонтали для того, чтобы просмотреть их полный список и полные командные строки.

Я не жду, что top сообщит мне — в чём проблема. Скорее, я использую этот инструмент для того, чтобы найти нечто, что заставит подумать: «А это уже интересно», и вдохновит меня на дальнейшие исследования. Основываясь на данных от top, я знаю, например, на какие логи стоит взглянуть в первую очередь. Логи я просматриваю, используя комбинации команд less, grep и tail -f.

Шаг четвёртый. Проверка дискового пространства


Даже сегодня, когда в кармане можно носить терабайты информации, на сервере, совершенно незаметно, может кончиться дисковое пространство. Когда такое происходит — можно увидеть весьма странные вещи.

Разобраться с дисковым пространством нам поможет старая добрая команда df, имя которой является сокращением от «disk filesystem». С её помощью можно получить сводку по свободному и использованному месту на диске.

Обычно df используют двумя способами.

  • $ sudo df -h

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

  • $ sudo df -i

    выводит число использованных inodes и их процент к файловой системе.

Ещё один полезный флаг df — T. Он позволяет вывести данные о типах файловых систем хранилищ. Например, команда вида $ sudo df -hT показывает и объём занятого пространства диска, и данные о его файловой системе.

Если что-то кажется вам странным, можно копнуть глубже, воспользовавшись командой Iostat. Она является частью sysstat — продвинутого набора инструментов для мониторинга системы. Она выводит сведения о процессоре, а также данные о подсистеме ввода-вывода для блочных устройств хранения данных, для разделов и сетевых файловых систем.

Вероятно, самый полезный способ вызова этой команды выглядит так:

$ iostat -xz 1

Такая команда выводит сведения об объёме прочитанных и записанных данных для устройства. Кроме того, она покажет среднее время операций ввода-вывода в миллисекундах. Чем больше это значение — тем вероятнее то, что накопитель перегружен запросами, или перед нами — аппаратная проблема. Что именно? Тут можно воспользоваться утилитой top для того, чтобы выяснить, нагружает ли сервер MySQL (или какая-нибудь ещё работающая на нём СУБД). Если подобных приложений найти не удалось, значит есть вероятность, что с диском что-то не так.

Ещё один важный показатель можно найти в разделе %util, где выводятся сведения об использовании устройства. Этот показатель указывает на то, как напряжённо работает устройство. Значения, превышающие 60% указывают на низкую производительность дисковой подсистемы. Если значение близко к 100%, это означает, что диск работает на пределе возможностей.

Работая с утилитами для проверки дисков, обращайте внимание, что именно вы анализируете.

Например, нагрузка в 100% на логический диск, который представляет собой несколько физических дисков, может означать лишь то, что система постоянно обрабатывает какие-то операции ввода-вывода. Значение имеет то, что именно происходит на физических дисках. Поэтому, если вы анализируете логический диск, помните, что дисковые утилиты не дадут полезной информации.

Шаг пятый. Проверка логов


Последнее в нашем списке, но лишь по порядку, а не по важности — проверка логов. Обычно их можно найти по адресу /var/log, в отдельных папках для различных сервисов.

Для новичков в Linux лог-файлы могут выглядеть как ужасная мешанина. Это — текстовые файлы, в которые записываются сведения о том, чем занимаются операционная система и приложения. Есть два вида записей. Одни записи — это то, что происходит в системе или в программе, например — каждая транзакция или перемещение данных. Вторые — сообщения об ошибках. В лог-файлах может содержаться и то, и другое. Эти файлы могут быть просто огромными.

Данные в файлах журналов обычно выглядят довольно таинственно, но вам всё равно придётся с ними разобраться. Вот, например, хорошее введение в эту тему от Digital Ocean.

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

$ dmesg | tail

Хотите следить за происходящим в реальном времени? Мне, определённо, это нужно, когда я занимаюсь поиском проблем. Для того, чтобы этого добиться, используйте команду tail с ключом -f. Выглядит это так:

$ dmesg | tail -f /var/log/syslog

Вышеприведённая команда наблюдает за файлом syslog, и когда в него попадают сведения о новых событиях, выводит их на экран.

Вот ещё один удобный сценарий командной строки:

$ sudo find /var/log -type f -mtime -1 -exec tail -Fn0 {} +

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

Если в вашей системе применяется systemd то, вам нужно будет использовать встроенное средство для работы с журналами — Journalctl. Systemd централизует управление логированием с помощью демона journald. В отличие от других логов Linux, journald хранит данные в двоичном, а не в текстовом формате.

Бывает полезно настроить journald так, чтобы он сохранял логи после перезагрузки системы. Сделать это можно, воспользовавшись такой командой:

$ sudo mkdir -p /var/log/journal

Для включения постоянного хранения записей понадобится отредактировать файл /etc/systemd/journald.conf, включив в него следующее:

[Journal] Storage=persistent

Самый распространённый способ работать с этими журналами — такая команда:

journalctl -b

Она покажет все записи журналов после последней перезагрузки. Если система была перезагружена, посмотреть, что было до этого, можно с помощью такой команды:

$ journalctl -b -1

Это позволит просмотреть записи журналов, сделанные в предыдущую сессию сервера.
Вот полезный материал о том, как пользоваться journalctl.

Логи бывают очень большими, с ними сложно работать. Поэтому, хотя разобраться с ними можно с помощью средств командной строки, таких, как grep, awk, и других, полезно бывает задействовать специальные программы для просмотра логов.

Мне, например, нравится система для управления логами с открытым кодом Graylog. Она собирает, индексирует и анализирует самые разные сведения. В её основе лежат MongoDB для работы с данными и Elasticsearch для поиска по лог-файлам. Graylog упрощает отслеживание состояния сервера. Graylog, если сравнить её со встроенными средствами Linux, проще и удобнее. Кроме того, среди её полезных возможностей можно отметить возможность работы с многими DevOps-системами, такими, как Chef, Puppet и Ansible.

Итоги


Как бы вы ни относились к вашему серверу, возможно, он не попадёт в Книгу Рекордов Гиннеса как тот, который проработал дольше всех. Но стремление сделать сервер как можно более стабильным, добираясь до сути неполадок и исправляя их — достойная цель. Надеемся, то, о чём мы сегодня рассказали, поможет вам достичь этой цели.

Уважаемые читатели! А как вы обычно поступаете с упавшими серверами?
Поделиться с друзьями
-->

Комментарии (21)


  1. baldr
    06.06.2017 17:20
    +1

    А для кого написана эта статья?
    Для «системного администратора», которому откровением будет факт что логи находятся в папке "/var/log/"?


    1. kirillaristov
      07.06.2017 02:21
      +1

      А для кого написан этот коммент?
      Обычно первый негативный коммент способствует формированию негативного тренда. И нафига оно было надо? Вместо негатива можно поделиться собственными наработками или опытом, например.


    1. ushliy
      07.06.2017 11:05
      +1

      По своему опыту могу сказать, что логи могут быть засунуты куда угодно. Но это, скорее, косяки предыдущих горе-настройщиков. Ну и вообще, местоположение логов в *nix-системах — секрет полишинеля, однако же регулярно встречаю на форумах и разных тематических чатах ступор при просьбе показать кусок лога. Даже если эта статья попадется на глаза всего лишь одному юному падавану, это уже облегчит жизнь. Ну и не забывайте, что во многих организациях еще существуют свои серверные, поэтому проверка физического уровня — пока что не пустой звук


  1. midaw1
    06.06.2017 19:55

    Хорошая статья и главное правильные мысли. Неплохо бы ещё написать про документирование настроек и описывать там же решение типовых проблем. И тогда виртуализация будет праздником, а не ещё одной головной болью.


  1. ALexhha
    06.06.2017 21:47

    Вы меня извините, но какие то настолько банальные советы, что даже и не знаю.

    1. Сейчас много серверов удаленных (имею ввиду хостинги в других странах) и осмотреть их просто нет возможности. Что делать тогда?

    2. Что будете делать, когда у вас апач будет сегфолтиться? Причем раз в день/неделю независимо от нагрузки, в произвольный момент времени. Или ядро будет выпадать в корку.

    3. Зачастую поиск проблем с железом может доставить кучу проблем. Особенно проверка памяти. Сталкивался много раз на Хецнере. И да, ЕСС вам особо не поможет. В некоторых случаях просто приходилось менять сервер.

    4. Для 3го/4го шагов должны использоваться системы мониторинга, которые избавляют от множества неприятностей.


    1. iig
      07.06.2017 11:20

      1. В датацентре должна быть своя местная зондеркоманда. Писать, звонить, пинать.
      2. 146% что-то с железом.

      Да, про мониторинг зря не написали в статье. must have.


  1. Kolyagrozamorey
    07.06.2017 03:13

    А почему в аппаратных неисправностях остановились только выдернутых кабелях и проблемах с ОЗУ? Такие проблемы редкие, а от проблемы з жорскими дисками, блоками питания, батареями кеш контролера довольно часто встречаются.


  1. ximik13
    07.06.2017 08:44
    +2

    Не соглашусь со многими выше отписавшимися ораторами. Статья вполне годная. Хотя бы как справочник для не слишком опытных Linux админов. А это уже очень хорошо. На данном ресурсе, да и в целом в интернете, в последние как минимум лет 7 преобладает тенденция замусоривания информационного пространства ничего не несущим г***ном спамом. Найти что-то реально полезное и нужное все сложнее. А тем кто тут погрузился в критику, старый бородатый совет: 'критикуешь — предлагай'.
    И что за манера примерять текст статьи только на себя и свои знания (есть только я, мир вращается вокруг меня и только для меня?). Не ужели реально считаете, что все вокруг настолько грамотные (прямо с рождения), что данная статья не имеет права на существование?


    1. ALexhha
      07.06.2017 14:20
      -1

      Эти шаги вам врядли помогут в реальных задачах, имхо. Банальные случаи — забился диск или явно посыпался (куча сообщений в dmesg), или после 5 минут прогона memtest у вас появились ошибки — я не беру в счет.


      1. ximik13
        07.06.2017 14:26
        +1

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


        Все вроде бы просто. Или все таки нет?


  1. ShadowLim
    07.06.2017 11:06

    Спасибо автору за статью. После прочтения у меня появилось несколько вопросов, однако хочу заметить, что я не системный администратор, просто пользуюсь Linux уже некоторое время. Конкретно меня интересует есть ли разница между

    sudo df
    

    и просто
    df
    

    А также, что делает следующая команда:
    dmesg | tail -f /var/log/syslog
    

    приведенная в статье. На мой взгляд она берет вывод dmesg и пуляет его tail, который его игнорирует, так как ему специфицирован файл, из которого читать. В чем я не прав?


    1. ShadowLim
      07.06.2017 11:11

      Да, по поводу

      df
      

      Я имею в виду не банальный ответ, что первый вариант исполняется от root'а, а второй от пользователя. Вопрос в том, что у меня оба дают одинаковый результат. Соответственно вопрос, есть ли между ними реальная разница или это просто привычка все подобные команды исполнять от корня?


      1. Uirandir
        07.06.2017 14:52
        -2

        Нет, разницы между ними нет. Просто общая безграммотность автора статьи, которая прет из всех щелей.


      1. AranelOfDoriath
        13.06.2017 12:56

        Побуду немного капитаном: если у пользователя нет прав даже смотреть в примонтированный раздел, то df от него выдаст permission denied.


        1. iig
          13.06.2017 13:55

          С такими правами сложно будет поднять рухнувший сервер.


  1. Shakhmin
    07.06.2017 11:06

    Да, банально. Да, многие знают. Но все равно часто делают не так.
    Я, например, иду по другой цепочке шагов.


    1. Проверка доступности сервера/сервиса
    2. Проверка нужного сервиса (подтверждение проблемы)
    3. В зависимости от 1 и 2 смотрю логи, топы, диски, провода, звоню в поддержку и тп


  1. Uirandir
    07.06.2017 11:06
    +3

    Не учите детей плохому.
    netstat давно deprecated и его могут выкинуть в любой момент.
    Ознакомьтесь, хотя бы, с https://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/, что бы минимально понимать о чем пишите.


    1. varnav
      07.06.2017 15:38

      Что интересно, статья от 2011 года.


      1. GadPetrovich
        07.06.2017 22:43

        А netstat до сих пор актуален.


  1. Singaporian
    07.06.2017 16:01
    +1

    Cosmopolitan наступает на пятки: сначала было 10 способов найти отличного мужа. Потом стало 20 лучших утилит DevOps. Теперь подход к траблшутингу стал len(чеклистом).
    Что нас ждет? 7 способов передать аргумент по референсу?

    Любая подобная статья — не мануал к траблшутингу, а границы компетентности автора статьи. Чем более он компетентен, тем больше пунктов и более они глубокие. То есть, например, сначала люди верят в утилиту free. Потому они узнают, что свободная память в Linux занимается пейдж кэшем и свободного пространства в идеале в памяти быть не должно (не совсем так, но вы поняли). Тогда они узнают файл /proc/meminfo.Потом им становится и этого не достаточно и они начинают смотреть кто где какую резидентную память откушал, а кто общую. Сколько ушло из L1/2/3 в RAM и почему, slabtop и так далее. И все глубже и глубже. < — ха ха, я остановился на границах своей компетентности. Я не знаю, что дальше. Видите?

    На каком-то уровне наступает степень компетентности «я знаю 1000 возможных причин, почему могла сломаться эта конкретная делать. Но попробовать все 1000 я не могу. Поэтому я начинаю менять подход к траблшутингу — я проверяю от конца цепочки каждый ее элемент, пока не наткнусь на нерабочий. Я не проверяю все подряд, только потому, что я знаю о его существовании».

    Я не хочу выглядеть занудой, который критикует, вместо того, чтобы вложитсья. Я просто не вижу, зачем вкладываться в развитие непонимания смысла траблшутинга (именно это обозначено в загаловке к статье «Пять шагов к спасению Linux-сервера, который рухнул»). Лучше я вложусь в объяснение, что траблшутинг делается по другому.


  1. MrRitm
    13.06.2017 12:56

    Мои 5 копеек:
    1. Nagios установлен на Raspbery Pi, а на любом рабочем месте закреплена вкладка с «Service status». Так-же прикручено информирование через SMS (тут-же на хабре статей по теме куча)
    2. Периодически меряем скорость выполнения некоторых задач и сравниваем с эталоном. Задачи периодические, так что мы просто «за одно» знаем не начал ли тормозить наш сервер там, где не должен.
    3. Периодически смотрим в error.log'и Nginx и Apache. Если размер >0, ищем что и где поломалось и устраняем. Как правило проблемы на стороне криво написанных PHP. Их тоже чиним. Хотим, чтоб размер error.log'ов был =0
    4. Бэкапы, быкапы бэкапов и бэкапы бэкапов бэкапов.
    4.1. Средствами самих CMS'ок + отдельным скриптом в отдельный каталог (чтоб быстрый доступ был к свежим бэкам) и все это по rsync валится в офис.на отдельное хранилище.
    В итоге мы видим потенциальную проблему еще до того, как она стала реальной и принимаем меры. Либо меняем арендованный сервер, либо на выходные в ночь просим поддержку ДЦ поменять диски либо что-то где-то тюним под изменившийся характер нагрузки. Так что траблшутинг мы слава Ктулху оставили в прошлом уже много лет назад.
    Аптайма всем побольше и седых волос поменьше.