Что нужно знать системному администратору linux

Обновлено: 02.07.2024

Совсем недавно (5-8 лет назад) системный администратор Linux был ограничен в средствах администрирования и автоматизации. Где-то можно было обойтись самописными скриптами на bash, Python, Perl, а где-то уже требовалось решение уровня энтерпрайз от таких гигантов, как IBM, Oracle или RedHat.

С развитием Open Source стала развиваться и автоматизация в администрировании. На замену самописным скриптам и программам пришли готовые решения. Эти средства появились не на пустом месте. Это были решения по автоматизации существующих задач любого системного администратора. Зачастую это решения, развиваемые по принципу KISS (акроним для «Keep it simple, stupid»), которые получали большие перспективы развития и распространения.

Конечно, лет 5-10 назад средства централизованного администрирования в Windows были развиты лучше, чем в Linux. Это было небезосновательно, т.к. Windows был широко распространён как среди домашних пользователей, так и в офисной/серверной среде. Microsoft, похоже, не предполагала что когда-то будет соперничать с Linux в серверном сегменте. Но не будем здесь углубляться в эти застойные времена для Microsoft, когда главой корпорации был Стив Балмер.

Администрирование

Одним из часто используемых средств администрирования мною и коллегами до появления ansible/puppet/chef был cssh (Cluster SSH).

Скриншот работы cssh

Cluster SSH в работе

Работа с cssh была проста, не нужно было повторять одни и те же действия на каждом сервере по очереди, всё сводилось к мультиплексированию ввода в терминале на группу SSH подключений. У этого решения, конечно, были очевидные недостатки — необходимо было взаимодействие с администратором, его контроль. Сегодня средства автоматизации ушли намного дальше в своих возможностях и функциональности и зачастую расширяются плагинами.

25–26 ноября, Москва и онлайн, От 24 000 до 52 000 ₽

Одно из наиболее распространённых средств автоматизации в администрировании — Ansible. Оно позволяет автоматизировать практически любые задачи системного администратора. Для работы достаточно SSH доступа к хостам. На сайте есть обзорная статья про Ansible, как его настроить и работать. Проект развивался независимо и вскоре был куплен компанией RedHat.

Мониторинг

После настройки сервера и введения его в эксплуатацию для обеспечения SLA и не только необходимо уделить внимание мониторингу.

Мы часто разделяем мониторинг на два отдельных компонента:

  • мониторинг с оповещениями,
  • статистика по показателям.

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

    /Nagios/Icinga — используем для получения событий агентами и уведомлений по триггерам. + InfluxDB — в эту связку входят также Chronograf, Kapacitor, Telegraf.
      — time series база данных, принимает на вход данные с различных источников. Имеет широкий функционал возможностей для работы с данными. — веб-панель с дашбордами и система управления Influxdb, Kapacitor. — обработчик событий. — агент, отправляет данные с удалённых систем. — всем известная система построения дашбордов/графиков.

    Схема компонентов InfluxDB

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

    Netdata — это «швейцарский нож» в системе мониторинга, обладает широкой функциональностью, поддержкой модулей на Python, Go и не только.

    Скриншот дашборда Netdata

    Централизованное управление пакетами

    В качестве централизованного управления набором ПО и его обновлениями мы использовали RedHat Spacewalk.

    Скриншот интерфейса RedHat Spacewalk

    Интерфейс RedHat Spacewalk

    С выходом RHEL 7 RedHat провели обновление, вследствие чего заменили Spacewalk на RedHat Satellite, который во многом напоминает Foreman. Для перехода на RedHat Satellite необходимо было бы перенастраивать уже работающие с RedHat Spacewalk системы, отлаживать новое решение (RedHat Satellite) и почти гарантированно бороться с новыми проблемами.

    Зачастую в госструктурах и энтерпрайзе широко использовались решения RedHat. И тут со второго плана выходит компания Oracle, которая занималась развитием дистрибутивов Oracle Enterprise Linux/Oracle Unbreakable Enterprise Kernel.

    Это продукты, основанные на кодовой базе RedHat Enterprise Linux, но с большим количеством доработок под собственные нужды, в которые том числе входило создание и поддержка среды для, наверное, основного продукта компании Oracle — Oracle Databases.

    Но, в отличие от RedHat, дистрибутив которого скачать можно было только по подписке (лицензировании), не говоря уже об обновлениях, Oracle предоставляет это бесплатно. Именно Oracle взялся поддерживать и продолжать развитие Oracle Spacewalk, который вскоре был обновлён в Oracle Linux Manager.

    Логирование

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

    Агенты — rsyslog, syslog-ng (доступны в большинстве дистрибутивов)

    • Loki (Prometheus),
    • Graylog2,
    • Logstash,
    • ELK.

    Резервное копирование

    Для резервного копирования выбор достаточно прост. Где-то достаточно rsync + tar (синхронизации и сжатия), а где-то требуется Bacula/Bareos.

    Схема работы Bareos

    В резервном копировании есть достаточно хорошие проприетарные решения, например, «Veeam backup». Если вы используете виртуализацию VMWare, то здесь Veeam упрощает резервное копирование и предоставляет поддержку.

    Также в своих решениях мы используем резервное копирование для /etc директории — etckeeper. Он позволяет автоматизировать сохранение содержимого каталога /etc в хранилище системы контроля версий (VCS), отслеживает, когда ваш пакетный менеджер сохраняет изменения в /etc при установке или обновлении пакетов.

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

    Иногда случается так, что подготовленный к установке/обновлению пакет программ может перезаписать существующие файлы в /etc , т.к. некоторые заказчики пользуются сторонними службами/пакетами. Etckeeper умеет фиксировать конфигурацию перед установкой пакетов и после, что значительно облегчает работу.

    Постскриптум

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

    Если коротко, то есть опыт администрирования Windows серверами, кроме 2012 (времени нет еще учить).
    Во время работы все решения от этой ОС использовал, хотел уйти в Linux aдминистратора и в ближайшем будущем получить сертификат какой-нибудь, типа lpic, так же от VMware (очень интересует тема виртуализации).

    Собственно вопрос: что должен знать линукс админ?

    • Вопрос задан более трёх лет назад
    • 13062 просмотра

    На самом деле выбор будет не только Windows/Linux.
    Опишу подробнее Windows например:
    Windows:
    1. Active Directory DS/RMS/CS/FS.
    2. Exchange
    3. System Center
    4. Azure
    5. Hyper-V
    6. IIS

    Exchenge:
    1. Exchange as server
    2. Exchange Online
    3. Office 365

    System Center:
    1. Configuration Manager
    2. Operations Manager
    .
    6. (six products avalible in SC)

    В общем я о чем. Это не тот выбор. Выберите конкретно - веб сервера. Или почтовые. Или решения мониторинга. Или скриптовые языки. И учите и то, и то. Не заганяйте себя в рамки маркетинга.

    Jump

    Вы наверное удивитесь, но Unux/Linux администратор должен знать Unux/Linux.
    Этого в принципе достаточно.

    warlinx

    не достаточно. Это вообще 5% того, что спросят на собеседовании

    Jump

    shellnet, При чем тут собеседование? Собеседования не входят в обязанности системного администратора, этим занимается кадровый отдел.

    warlinx

    АртемЪ, кадровый отдел не возьмет на должность системного администратора бухгалтера, если уж в бред скатываться

    Jump

    shellnet, Не пойму при чем тут кадровый отдел, кого он там возьмет или не возьмет.
    Вопрос был про то, что нужно знать системному администратору Unix/Linux.
    А вы приплели сюда какие-то собеседования, каких-то бухгалтеров.
    Про собеседования вообще речи не было.
    На собеседовании могут спросить что угодно, то что нужно конкретному работодателю.

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

    warlinx

    АртемЪ, что должен знать системный администратор определяет не системный администратор, а работодатель. Данный юзер собирается уйти в администрирование линукс. И когда он будет пытаться перейти туда, то LPIC-1 это будет 5% от того, что от него потребуют, причем, вначале на собеседовании.

    Jump

    что должен знать системный администратор определяет не системный администратор, а работодатель

    Совершенно верно. Системный администратор понятие очень растяжимое.
    Поэтому уверенное знание Unux/Linux это основа. Ее нужно и достаточно знать и уметь.

    А остальное что он должен знать неизвестно, и зависит от конкретного работодателя.

    На собеседовании конечно могут спросить- есть ли опыт работы с asterisk, nginx, postgress, 1с, kvm, docker, и тысячи других вещей. В зависимости от направления работы.

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

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

    Администрирование Linux

    Администрирование Linux - это очень обширная область и, естественно, что мы не сможем полностью охватить ее в этой статье. Но попытаемся охватить основные задачи, которые возникают перед администратором будь то сервера или домашнего компьютера. Вот основные задачи, которые мы рассмотрим:

    • Удаленный доступ;
    • Диагностика сети;
    • Мониторинг ресурсов системы;
    • Проверка работоспособности сервисов;
    • Просмотр логов;
    • Установка программного обеспечения.

    Мы не будем рассматривать очень подробно каждую из тем, возможно, некоторые основы администрирования Linux были более детально рассмотрены в предыдущих записях, тогда на них будет ссылка. С первоначальной настройкой сервера обычно проблем не возникает. Можно использовать одну из известных панелей управления, например, панель управления VestaSP, которая позволяет все установить и настроить автоматически, но вам нужно следить за показателями системы и перенести на сервер файлы.

    Удаленный доступ к серверу Linux

    Чаще всего веб-мастера и администраторы используют для удаленного доступа и загрузки файлов на сервер протокол SSH и FTP. По SSH вы не только передавать файлы, но и выполнять на сервере различные команды Linux. Протокол FTP позволяет лишь загружать файлы на сервер, перемещать и переименовывать их. Если кратко, то, например, чтобы перенести файлы сайта с одного сервера на другой, сначала мы создаем архив с помощью tar:

    tar cvzf backup.tar.gz /папка/с/файлами

    Обратите внимание, что опцию p передавать не нужно, чтобы права на файлы не сохранились, затем, вам нужно будет установить права вручную. Когда архив готов, используем копирование scp для передачи его на сервер:

    scp backup.tar.gz user@ip_сервера:/var/www/public_html/

    Затем авторизуемся на сервере и распаковываем архив:

    ssh user@ip_сервера
    $ cd /var/www/public_html/
    $ tar xvzf backup.tar.gz

    После этого останется сменить владельца для распакованных данных на имя пользователя веб-сервера:

    chown -R www-data /var/ww/public_html/project/

    Большинство действий по администрированию сервера вам придется выполнять так что лучше понять как пользоваться ssh.

    Диагностика сети Linux

    Этот момент администрирования Linux серверов подходит больше для компьютеров, к которым у вас есть физический доступ, но может в некоторых случаях полезным и на сервере. Самый простой способ проверить есть ли доступ к сети на компьютере, это выполнить команду ping:


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


    Убедитесь, что правильно задан шлюз доступа к сети:


    Обычно, это может подсказать вам, что конфигурация сети выполнена неверно, например, компьютер не получает нужные данные по протоколу DHCP или заданы неправильные статические настройки. Также проблема может быть в DNS. Возможно, сеть есть, но сервер не может получить ip адрес на основе доменного имени, для проверки вы можете выполнить ping какого-либо внешнего ip:


    Если же сеть не работает, и она настроена правильно, то можно еще попытаться узнать на каком узле обрывается соединение. Для этого используется команда traceroute:


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

    Мониторинг ресурсов системы

    Часто может случится, что сервер начинает работать очень медленно, веб-службы начинают очень долго отвечать на запросы и даже соединение по SSH работает медленно. Скорее всего, причиной этому может стать перегрузка ресурсов процессора или памяти. Если вся память будет занята, система будет сбрасывать данные на диск, в раздел подкачки, что тоже сильно замедляет работу сервера. Чтобы посмотреть сколько памяти осталось доступно используйте команду free:


    Естественно, что если свободно только 40-50 Мб, то этого системе очень мало и все будет работать очень медленно. Следующим шагом будет выяснить какой процесс потребляет больше всего памяти, для этого можно использовать команду htop:

    В утилите вы можете сортировать процессы по загрузке процессора, колонка %CPU% или по потреблению памяти %MEM%. Так вы можете очень просто понять в чем проблема и кто перегружает систему. Например, веб-сервер Apache потребляет слишком много памяти, поэтому, возможно, будет эффективнее использовать Nginx.

    Также в некоторых случаях нас может интересовать загрузка диска Linux и какие именно процессы перегружают жесткий диск. Для этого применяется утилита iotop. Просто выполните утилиту без параметров:

    Проверка работоспособности сервисов

    В системное администрирование linux также входит управление сервисами. Сейчас в большинстве дистрибутивов, в качестве системы инициализации используется systemd. Соответственно, управление службами linux выполняется с помощью нее. Чтобы посмотреть запущена ли служба, например, веб-сервер nginx, выполните:

    Или запустить ее, если она не была запущена до этого:

    Если служба не запустилась, то вы можете посмотреть информацию об этом с помощью команды status или же выполнить:

    Просмотр логов

    Если какой-либо сервис или системный компонент не работает, то первое что нужно сделать - это смотреть логи. Если не помогает - включить режим отладки и смотреть логи. В 90% вы найдете ответ почему ничего не работает в логах программы. Логи всех служб и системные логи находятся в папке /var/log/. Некоторые службы создают отдельные папки для своих файлов, например, /var/log/nginx или /var/log/apache.

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

    tail -f /путь/к/лог/файлу

    С помощью этой команды вы можете в реальном времени просматривать изменения в конце лог файла. Если опцию -f не указывать, то команда tail покажет десять последних строк из лога:

    Также для просмотра лог файла вы можете использовать любой текстовый редактор или утилиту cat.

    Установка программного обеспечения

    Установка программного обеспечения, одна из распространенных задач администрирования. В Linux большинство программ можно установить из официальных или сторонних репозиториев. Некоторые программы нужно собирать из исходников. Для установки софта из репозиториев используется пакетный менеджер. Существуют два основных пакетных менеджера, которые применяются на серверах, это yum, который используется в CentOS и apt, который применяется в Ubuntu. Работают пакетные менеджеры похожим образом и все их мы рассматривали в отдельных статьях, смотрите установка программ CentOS и установка программ Ubuntu. Например, чтобы установить пакет в Ubuntu используйте такую команду:

    sudo apt install имя_пакета

    А в CentOS/RedHat:

    sudo yum install имя_пакета

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

    Выводы

    В этой статье мы рассмотрели в общих чертах администрирование Linux для начинающих, это очень обширная тема, поэтому сложно охватить ее в одной статье. Мы рассмотрели диагностику сети, установку пакетов, просмотр логов и другие основные действия. Если у вас остались вопросы, спрашивайте в комментариях!

    Сильно бы не разделяла администратора Linux и администратора. Сети обычно смешанные (особенно в России любят Windows за его «бесплатность» :-) ).

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

    Факультативно нужно знать:

    Основы локальных вычислительных сетей.

    Виды сетей по размеру и предназначению. Топологии: классификация, применение, распространение. Стандартизация локальных сетей.

    Техническое оснащение локальной сети.

    Сетевые адаптеры: проводные и беспроводные. Повторители, концентраторы, коммутаторы, маршрутизаторы. IP-камеры, IP-телефоны, IP-принтеры, точки доступа. Шлюзы, мосты, файерволы, NAS и RAID массивы.

    Линии связи.

    Экранированная и неэкранированная витая пара. Волоконно-оптическая линия связи. Радиочастотные устройства. Практическая работа: монтаж линии связи.

    Логическая структура сети.

    Протоколы логического взаимодействия в локальной сети. Протокол TCP/IP v4 и v6. Классовая и бесклассовая адресация, маска подсети.

    Построение одноранговой сети.

    Основные методы построения сети. От рабочих групп к домашним группам. Управление списком пользователей. Разделение ресурсов в одноранговой сети.

    Дисковая подсистема и подсистема печати.

    Работа с жесткими дисками. Работа с принтерами. Разграничение доступа к ресурсам сети.

    Построение беспроводной сети.

    Основные методы построения беспроводных сетей. Формирование беспроводной точки доступа. Протоколы безопасности при формировании беспроводной сети.

    DNS.

    Общие сведения о DNS. Формирование доменной зоны, подключение. Мониторинг DNS-сервера. Практическая работа: Настройка DNS-сервера.

    DHCP.

    Общие сведения о DHCP. Установка и настройка DHCP сервера. Управление областями DHCP, пулом, арендой и резервированием.

    По Linux для начинающих администраторов дают следующую программу:

    1. Краткая история UNIX и Linux. Проект GNU.
    2. Общие сведения об архитектуре системы Linux.
    3. Основные понятия — операционная система, shell, консоль, терминал.
    4. Обзор существующих дистрибутивов Linux.

    Установка и начало работы.

    1. Что нужно знать до установки.
    2. Установка Debian GNU/Linux.
    3. Начало работы в Linux.
    4. Локальный вход в систему. Виртуальные терминалы.

    Основы управления в Linux.

    1. Интерфейс командной строки.
    2. Основы Bourne Shell (sh).
    3. Bash: интерактивный shell.
    4. Что такое сценарии shell.
    5. Управление процессами и задачами.
    1. Как получить справку — man и info.
    2. Файлы и каталоги.
    3. Поиск файлов.
    4. Обработка текста. Текстовый редактор vi.
    5. Управление файлами через Midnight Commander.

    Установка и удаление программ.

    1. Утилиты make, diff, patch.
    2. Установка программ из исходных кодов.
    3. Система управления пакетами RPM и расширение возможностей при помощи YUM.
    4. Система управления пакетами APT.

    Работа с дисками и файловыми системами.

    1. Дисковые накопители в Linux.
    2. Создание дисковых разделов: fdisk, cfdisk.
    3. Файловые системы в файле: loop device.
    4. Виртуальная память (swap).
    5. Файловые системы Linux: Ext2, Ext3, Ext4, ReiserFS, XFS.
    6. Поддержка «неродных» файловых систем NTFS, FAT.
    7. Виртуальные файловые системы.

    Администрирование учетных записей пользователей и групп. Авторизация в Linux.

    1. Права доступа.
    2. Авторизация пользователей.
    3. Администрирование пользователей.
    4. Управление паролями: passwd.

    Журналирование и ядро Linux.

    Резервное копирование и восстановление.

    1. Общие вопросы. Терминология.
    2. Стратегии резервного копирования.
    3. Архиватор tar.
    4. Прямой доступ к устройствам — dd.
    5. Упаковщики gzip, bzip2.

    Процесс загрузки Linux и графическая система X Window System.

    Основы построения сетей.

    1. Оборудование и топология сетей.
    2. Иерархия сетевых протоколов. Эталонная модель ISO/OSI.
    3. Семейство протоколов TCP/IP.11.4 Основы IP-адресации, маршрутизация, классы и маски подсетей.

    Сетевые средства Linux.

    1. Настройка сетевых интерфейсов.
    2. Настройка статической маршрутизации
    3. Средства диагностики: ping, traceroute, netstat, tcpdump, lsof.
    4. Удаленный доступ — secure shell (OpenSSH).
    5. Синхронизация файлов с использованием утилиты RSync.

    Да и вообще, возьмите программу образовательного курса и почитайте по этим темам в интернете. Также можете посмотреть пару вебинаров.

    Читайте также: