Системный администратор Linux. Вопросы. Часть 4. Финал

«Всё, что имеет начало, имеет и конец, Нео».

Системный администратор Linux. Вопросы. Часть 4. Финал Linux, Windows, Сисадмин, Отдел кадров, Пригорело, Собеседование, Длиннопост

Серия вопросов подходит к завершению и остался последний, самый объёмный вопрос:


В: У Вас маленькая организация. Есть некий сервер, который совмещает в себе много разных функций. Шлюз, файлопомойка, прокси, web-сервер, даже есть виртуалка на KVM, внутри которой крутится условная 1С на windows. В один прекрасный момент к Вам начинают сыпаться сообщения от пользователей, что «Всё тормозит и ничего не работает». Ваши действия? Что и как диагностировать будете? Какими командами? Гуглить времени нет из-за ощущения влажного дыхания директора в затылок.


О: Диагностику можно условно разделить на четыре этапа. По количеству компонентов, которые могли стать «слабым звеном». Это процессор, память, диск и сеть. Но, в первую очередь, надо смотреть в логи. Основное - dmesg, syslog, messages. Зачастую это сэкономит массу времени. Так же не стоит забывать про встроенные средства обзорного мониторинга. Например sar позволяет понять что происходило с системой в последнее время без внешнего мониторинга. Так же различные средства внешнего мониторинга позволят получить обзор системы за последнее время и понять какие метрики являются аномальными. Если этого нет, метрик недостаточно или нужно смотреть в реальном времени - по шагам смотрим каждый компонент:


- Процессор. Необходимо понимать и знать какая нагрузка на процессор данного сервера является штатной. Т.е. нагрузка в 80% может быть вполне нормальной для сервера, а 20% может быть повышенной. Для этого нужен какой-либо мониторинг, который обеспечивает хранение исторических данных, внешний - zabbix, observium, spectrum, munin, или внутренний - sar. Текущую нагрузку можно посмотреть командой top и её производными, htop, atop и прочими, либо sysstat, vmstat. Можно посмотреть load average командой uptime. Если нагрузка аномальна - надо понимать из чего она складывается. Тут три основных компонента - User time, IO wait и System или kernel time. Соответственно это время процессора, затраченное на приложения пользователя, ожидания ввода/вывода и на работу самом системы. С user time всё относительно просто. Достаточно определить проблемное приложение и «поправить» его настройки или просто перезапустить его. IO wait - скорее всего проблема с дисковой подсистемой и более детально об этом будет ниже. Если повышен System time - значит сама система потребляет завышенное количество ресурсов. Причин может быть много и надо иметь более детальное представление о системе. Например старые версии Ubuntu имели глючный kswapd, который утилизировал процессор на 100% при своей работе. Или большое количество сетевых пакетов в следствии той или иной разновидность dos/ddos. Или «залипло» некое приложение пользователя и плодит тяжелые для системы операции, такие как выделение/освобождение памяти или создание большого количества процессов и их завершение.


- Память. Утилизацию можно посмотреть командами top, free, cat /proc/meminfo, vmstat, sar. Необходимо обратить внимание на объём свободной памяти и использование swap. Надо понимать, что метрика «free» не всегда отображает реальное положение дел. В частности буферы/кеш, которые могу занимать память, но могут выгружаться из неё при необходимости. Так же надо знать какие данные попадают в swap. Например, почему при свободной памяти может использоваться swap.


- Диск. Крайне желательно понимать что за диски, как они подключены и собраны. Информацию по использованию можно посмотреть командами iostat или iotop. Первая работает в разрезе блочных устройств, вторая по приложениям. Метрики на которые надо обратить внимание - скорость чтения/записи, время ожидания, количество операций, утилизация устройства. Далее, в зависимости от типа дисков, есть разные варианты развития событий. У виртуальных машин при аномалиях нужно смотреть на диски гипервизора и их утилизацию. У физических серверов - на тип диска и транспорт подключения. Если это обычный диск - смотрим smart и прочие метрики диска командами smartctl, hddtemp, hddparm. Большое количество bad-блоков или перегрев диска могут отрицательно влиять на скорость. Если диски собраны в raid - смотрим на его состояние. Если это программный рейд - команды mdadm или zpool. Для аппаратных через утилиты производителя или через iLO. Для внешних диском надо смотреть из транспорт. Это FC или сеть. Для FC смотрим статистику портов на SAN свичах командами sfpshow, porterrshow и т.д. Для сети смотрим количество ошибок портах командами ifconfig, ip, cat /proc/net/dev. Для внешних дисков так же надо смотреть нагрузку на дисковом массиве или SDS. Так же это могут быть так называемые шумные соседи, которые при отсутствии QOS или его неправильной настройке могут оказывать взаимное влияние.


- Сеть. Для начала можно просто проверить пингом. Обычным и тяжелыми пакетами, размером 1кб. Далее смотрим ошибки на портах сервера или на коммутаторе (если есть доступ). Команды выше. Проверяем настройки командой ethtool. Смотрим скорость интерфейса и подключения. Смотрим внешний мониторинг на предмет утилизации сети. Пробуем проверить качество канала чем то простым, вроде ftp. Если сервер удалённый - смотрим маршруты, на предмет потерь и перестройки. Для этого можно использовать tracepath или mtr.


На этом всё. Для тех, кто дочитал до конца всю серию постов и кому это всё интересно - у меня есть небольшой бонус:


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


To be continued…

GNU/Linux

1K постов15.5K подписчика

Добавить пост

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.