Системный администратор 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 подписчиков

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

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

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

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

Автор поста оценил этот комментарий

Здравствуй, @disabler. А у тебя, случаем, нет возможности и желания помочь решить один вопрос начинающему сис админу? Предложить взамен, к сожалению, кроме спасибо ничего не смогу :(

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Желания и возможности нет, но если вопрос интересный - подскажу.

Автор поста оценил этот комментарий

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

"Мы создаём комьюнити, комьюнити создаёт Linux."

раскрыть ветку (1)
Автор поста оценил этот комментарий

Какого рода сотрудничество?

2
Автор поста оценил этот комментарий

Когда я писал коммент - имел ввиду, что в постах ТС, в задачах, которые он описыват абсолютно отсутствуют средства мониторинга и централизованного управления. То есть 1000 серверов и нет средства централизованного управления, то есть нагруженный сервер без средств мониторинга. Я, конечно понимаю, что ТС всего лишь приводит пример, но сами вопросы формулируются немного неверно. Из описания этого и выходит, что типа есть такая сложная система, но нет программы для управления и наблюдения, которая чуть ли не первым делом ставится. Поэтому и я написал в вопросительном ключе про дурака админа.


По поводу реального поливания дерьмом - есть такое. Это не только админов касается. Вместо админа можешь подставить сантехника, электрика, автомастера и даже врача(в наших реалиях это горькая правда). Да и вообще кого угодно.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий
«В заббикс, графану и ёлку любой дурак сможет посмотреть, а ты попробуй диагностировать без них» (с)
показать ответы
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
2
Автор поста оценил этот комментарий
- У нас есть сферический конь в вакууме...
- Ой, не, вакуум отстой, там дышать нечем и кони кусаются и серют навозом, я пойду от сюда...
показать ответы
1
Автор поста оценил этот комментарий
Про бэды немного не понял. Само наличие бэдов или ремапов означает что диску явно не место на сервере.
раскрыть ветку (1)
Автор поста оценил этот комментарий
Что именно не понятно? Что для каждой вероятной ошибки не приведён очевидный способ решения?
1
Автор поста оценил этот комментарий

Не очень понял, как это нагрузка 20% может быть повышенной, а 80% нормальной ? Может быть и 400% нормальной нагрузкой.. и даже 800%.

раскрыть ветку (1)
Автор поста оценил этот комментарий
Выражение «штатная нагрузка» знакомо? Надо понимать какая нагрузка является нормой, а какая является повышенной. Дело не в конкретных цифрах, а в отношении нормы к текущей нагрузке.
19
Автор поста оценил этот комментарий

Первое, что бы я сделал - наглядно бы заставил показать пользователей, что именно тормозит, а уже потом лез бы в дебри сетей и дисковых подсистем. В твоей конфиге обчычно тормозит унылое говно типа файловой 1С. 80% - 1С, 10% - диски начинают сыпаться. 10% все остальное.


А может быть вообще люто-ебанутое. Например тормозит CIFS через OpenVpn... в этому случае всякие itop-ы с mtr-ами тоже мало помогают. Нужны более глубокие и специфические знания.


К тому-же почему к работающему серверу не прикручен тоже же Zabbix, где все можно удобно посмотреть за любой период? Действующий админ этого сервера - всегда лютый долбоеб?

раскрыть ветку (1)
Автор поста оценил этот комментарий

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

показать ответы