Независимый аналитик Кристофер Тоцци рассказывает на портале ITPro Today о восьми инструментах Linux для ИТ-операций. Некоторые из них проверенные временем, другие — более новые, но все они должны быть в арсенале каждого ITOps-инженера.
Какие инструменты Linux наиболее важны для работы специалистов по ИТ-операциям? Конечно, это зависит от того, о каком именно типе ITOps-работы идет речь. Так, команды ITOps, управляющие облачными микросервисными рабочими нагрузками, должны владеть несколько иным набором инструментов Linux, чем, например, те, кто работают с локальными монолитными приложениями.
Тем не менее, в целом существует основной набор инструментов Linux, который должен знать каждый инженер по ИТ-операциям. Ниже приведен краткий обзор восьми лучших таких инструментов. Некоторые из них являются проверенными временем и надежными утилитами, существующими уже несколько десятилетий. Другие — более новые, но становятся все более важными для ITOps.
1. Tcpdump
Хотите узнать, что происходит в сети? Tcpdump, который установлен в большинстве дистрибутивов Linux по умолчанию, является удобным способом сделать это. Инструмент собирает пакеты по мере их прохождения через сетевой интерфейс. Затем инженеры по ИТ-операциям могут их просмотреть, чтобы определить такую информацию, как IP-адрес источника и используемый протокол.
Tcpdump не является лучшим решением для расширенного анализа сетевого трафика (для этого лучше использовать более сложные инструменты, такие как Wireshark). Но для команд ITOps, которым нужен быстрый и простой способ увидеть, что происходит в сети, tcpdump — это лучший Linux-инструмент.
2. Nmap
Tcpdump показывает, какой трафик проходит по вашей сети, но не отображает информацию о самой сети. Для этого вам понадобится nmap — инструмент Linux, который предоставляет информацию о том, как организована ваша локальная сеть, а также такие данные, как открытые порты и даже операционные системы, под управлением которых работают различные серверы.
3. Ps
Ps — один из самых простых, но и самых важных инструментов Linux. Он выводит список запущенных процессов и опционально может предоставить некоторые подробности о них. Это полезно, когда нужно выяснить, запущен ли процесс, или устранить неполадки, когда он перестал отвечать. В современных средах ps особенно ценен для поиска причин, по которым контейнеры не запускаются или перестают работать.
4. Top
Ps отлично подходит, если вы хотите проверить состояние конкретного процесса в определенный момент времени. Но что если вам нужен динамический, постоянно обновляемый взгляд на состояние процессов вашей системы? В этом случае ваш друг — top.
Top отображает список процессов, а также информацию, кто владелец процесса и сколько ресурсов потребляет процесс. Список обновляется в режиме реального времени.
Ограничение top заключается в том, что по умолчанию он перечисляет процессы в порядке убывания объема потребляемых ими ресурсов (отсюда и название «top» — он выводит наверх списка наиболее ресурсоемкие процессы). Это не особенно полезно, если вам требуется проверить процесс, который не является ресурсоемким. Но если вам нужно выяснить, какие процессы съедают весь процессор или память, top — это быстрый способ сделать это.
5. Df
Top и ps могут показать загрузку памяти и процессора для каждого процесса, но они не дают представления о потреблении ресурсов хранения. Для этого вам понадобится такой инструмент, как df, который показывает, какой объем хранения используется различными файловыми системами. (Совет: запускайте diff с аргументом -h, чтобы он отображал данные о хранилище в мега- и гигабайтах, которые более удобны для восприятия, чем те, что используются по умолчанию.)
6. Docker
Сегодня инструмент Docker CLI — который можно вызвать, набрав docker в терминале большинства дистрибутивов Linux — перестал быть очень важным для запуска контейнеров в производстве. Большинство ITOps-команд вместо этого используют такие решения, как Kubernetes, которое развертывают контейнеры, не требуя запуска и управления каждым из них в командной строке, как при использовании Docker.
Тем не менее, команда docker все еще может пригодиться, если вы хотите протестировать контейнер или запустить контейнерное приложение на разовой основе. Поэтому все же стоит ознакомиться с тем, как использовать интерфейс Docker CLI для запуска, остановки и управления контейнерами.
7. Bcc
Bcc — это набор инструментов для запуска Linux-программ с использованием eBPF, удивительной технологии, позволяющей выполнять программы непосредственно в ядре Linux.
Bcc не установлен по умолчанию в большинстве дистрибутивов Linux, но он доступен через менеджеры пакетов, или вы можете установить его с GitHub.
После установки bcc вам необходимо развернуть программы eBPF для его запуска; сам по себе bcc просто предоставляет способ взаимодействия с eBPF. Стоит также отметить, что bcc — не единственный способ воспользоваться преимуществами eBPF; многие инструменты наблюдаемости и безопасности теперь интегрируются с eBPF в бэкенде, чтобы обеспечить функциональность на основе eBPF, которую администраторам не нужно настраивать самостоятельно.
Тем не менее, если вам нужен простой способ использования eBPF непосредственно из командной строки, bcc — это полезный инструмент Linux.
8. History
Приходилось ли вам сталкиваться с тем, что несколько дней назад вы выполнили определенную команду, которую хотите выполнить снова, но не можете вспомнить, что это была за команда? Linux-инструмент history поможет вам разобраться в этом. Он отображает список предыдущих команд, которые вы выполняли в терминале.
Ограничение заключается в том, что history выводит историю выполнения команд каждым отдельным пользователем, поэтому если вы выполнили команду от имени root, но теперь вошли в систему под другим пользователем, вам придется переключиться на root, чтобы найти нужную историю команд.
Заключение
Повторимся, что набор наиболее важных инструментов Linux, которые необходимо знать, зависят от ваших задач. Но в целом почти каждый инженер по ИТ-операциям сегодня должен иметь представление об основных утилитах Linux, описанных выше, поскольку они играют центральную роль в администрировании систем Linux и приложений, работающих на них.