Как контролировать систему Ubuntu 16.04 с помощью Sysdig

Вступление

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

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

Основное приложение Sysdig контролирует сервер, на котором оно установлено. Однако компания, стоящая за проектом, предлагает размещенную версию под названием Sysdig Cloud, которая может удаленно контролировать любое количество серверов.

Автономное приложение доступно в большинстве дистрибутивов Linux, но также доступно с более ограниченной функциональностью в Windows и macOS. Помимо инструмента командной строки + sysdig +, Sysdig также поставляется с интерактивным интерфейсом под названием + csysdig + с аналогичными параметрами.

В этом руководстве вы будете устанавливать и использовать Sysdig для мониторинга сервера Ubuntu 16.04. Вы будете транслировать живые события, сохранять события в файлы, фильтровать результаты и исследовать интерактивный интерфейс + csysdig +.

Предпосылки

Для завершения этого урока вам понадобится:

Шаг 1 - Установка Sysdig с использованием официального скрипта

В репозитории Ubuntu есть пакет Sysdig, но обычно за текущей версией стоит одна или две ревизии. Например, во время публикации, установив Sysdig с помощью диспетчера пакетов Ubuntu, вы получите Sysdig 0.8.0. Однако вы можете установить его с помощью официального скрипта со страницы разработки проекта, который является рекомендуемым методом установки. Это метод, который мы будем использовать.

Но сначала обновите базу данных пакетов, чтобы у вас был последний список доступных пакетов:

sudo apt-get update

Теперь загрузите скрипт установки Sysdig с помощью + curl +, используя следующую команду:

curl https://s3.amazonaws.com/download.draios.com/stable/install-sysdig -o install-sysdig

Это загружает скрипт установки в файл + install-sysdig + в текущую папку. Вам нужно будет выполнить этот скрипт с повышенными привилегиями, и опасно запускать скрипты, которые вы загружаете из Интернета. Перед выполнением сценария проверьте его содержимое, открыв его в текстовом редакторе или с помощью команды + less +, чтобы отобразить содержимое на экране:

less ./install-sysdig

Когда вы освоитесь с командами, которые будет запускать сценарий, выполните сценарий с помощью следующей команды:

cat ./install-sysdig | sudo bash

Команда установит все зависимости, включая заголовки ядра и модули. Вывод установки будет аналогичен следующему:

Output* Detecting operating system
* Installing Sysdig public key
OK
* Installing sysdig repository
* Installing kernel headers
* Installing sysdig

...

sysdig-probe:
Running module version sanity check.
- Original module
  - No original module exists within this kernel
- Installation
  - Installing to /lib/modules/4.4.0-59-generic/updates/dkms/

depmod....

DKMS: install completed.
Processing triggers for libc-bin (2.23-0ubuntu5) ...

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

Шаг 2 - Мониторинг вашей системы в режиме реального времени

В этом разделе вы будете использовать команду + sysdig + для просмотра некоторых событий на вашем сервере Ubuntu 16.04. Для выполнения команды + sysdig + требуются права суперпользователя, а также любое количество параметров и фильтров. Самый простой способ выполнить команду - без аргументов. Это позволит вам в режиме реального времени просматривать системные данные, обновляемые каждые две секунды:

sudo sysdig

Но, как вы увидите, как только вы выполните команду, может быть сложно проанализировать данные, записываемые на экран, потому что они непрерывно передаются, и на вашем сервере происходит много событий. Остановите + sysdig +, нажав + CTRL + C +.

Прежде чем мы снова запустим команду с некоторыми опциями, давайте ознакомимся с выводом, посмотрев пример вывода команды:

Output253566 11:16:42.808339958 0 sshd (12392) > rt_sigprocmask
253567 11:16:42.808340777 0 sshd (12392) < rt_sigprocmask
253568 11:16:42.808341072 0 sshd (12392) > rt_sigprocmask
253569 11:16:42.808341377 0 sshd (12392) < rt_sigprocmask
253570 11:16:42.808342432 0 sshd (12392) > clock_gettime
253571 11:16:42.808343127 0 sshd (12392) < clock_gettime
253572 11:16:42.808344269 0 sshd (12392) > read fd=10(<f>/dev/ptmx) size=16384
253573 11:16:42.808346955 0 sshd (12392) < read res=2 data=..

Столбцы вывода:

Output%evt.num %evt.outputtime %evt.cpu %proc.name (%thread.tid) %evt.dir %evt.type %evt.info

Вот что означает каждый столбец:

  • * evt.num * - номер добавочного события.

  • * evt.outputtime * - это отметка времени события, которую вы можете настроить.

  • * evt.cpu * - номер процессора, на котором было записано событие. В приведенном выше выводе * evt.cpu * равен * 0 *, который является первым процессором сервера.

  • * proc.name * - это имя процесса, который сгенерировал событие.

  • * thread.tid * - это TID, сгенерировавший событие, который соответствует PID для однопотоковых процессов.

  • * evt.dir * - направление события. Вы увидите > * для входных событий и * < для выходных событий.

  • * evt.type * - название события, например, «Открыть», «прочитать», «написать» и т. Д.

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

Вряд ли есть значение для запуска + sysdig +, как вы делали в предыдущей команде, потому что поток информации настолько велик. Но вы можете применить параметры и фильтры к команде, используя этот синтаксис:

sudo sysdig [option] [filter]

Вы можете просмотреть полный список доступных фильтров, используя:

sysdig -l

Существует обширный список фильтров, охватывающих несколько классов или категорий. Вот некоторые из классов:

  • * fd *: Фильтровать информацию дескриптора файла (FD), такую ​​как номера FD и имена FD.

  • * process *: Фильтровать информацию о процессе, такую ​​как идентификатор и имя процесса, который сгенерировал событие.

  • * evt *: Фильтровать информацию о событии, например, номер события и время.

  • * user *: фильтр по пользовательской информации, такой как идентификатор пользователя, имя пользователя, домашний каталог пользователя или оболочка входа.

  • * группа *: Фильтр информации о группе, такой как идентификатор группы и имя.

  • * syslog *: Фильтровать информацию системного журнала, такую ​​как объект и серьезность.

  • * fdlist *: Фильтр по дескриптору файла для событий опроса.

Поскольку охватывать каждый фильтр в этом учебном пособии нецелесообразно, давайте просто попробуем пару, начиная с фильтра * syslog.severity.str * в классе * syslog *, который позволяет просматривать сообщения, отправляемые в системный журнал с определенным уровнем серьезности. Эта команда показывает сообщения, отправленные в системный журнал на уровне «информации»:

sudo sysdig syslog.severity.str=info

Убейте команду, нажав + CTRL + C +.

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

Output10716 03:15:37.111266382 0 sudo (26322) < sendto syslog sev=info msg=Jan 24 03:15:37 sudo: pam_unix(sudo:session): session opened for user root b
618099 03:15:57.643458223 0 sudo (26322) < sendto syslog sev=info msg=Jan 24 03:15:57 sudo: pam_unix(sudo:session): session closed for user root
627648 03:16:23.212054906 0 sudo (27039) < sendto syslog sev=info msg=Jan 24 03:16:23 sudo: pam_unix(sudo:session): session opened for user root b
629992 03:16:23.248012987 0 sudo (27039) < sendto syslog sev=info msg=Jan 24 03:16:23 sudo: pam_unix(sudo:session): session closed for user root
639224 03:17:01.614343568 0 cron (27042) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27042]: pam_unix(cron:session): session opened for user
639530 03:17:01.615731821 0 cron (27043) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27043]: (root) CMD (   cd / && run-parts --report /etc/
640031 03:17:01.619412864 0 cron (27042) < sendto syslog sev=info msg=Jan 24 03:17:01 CRON[27042]: pam_unix(cron:session): session closed for user

Вы также можете фильтровать по одному процессу. Например, чтобы найти события из + nano +, выполните эту команду:

sudo sysdig proc.name=nano

Поскольку эта команда подает файл в + nano +, вам придется использовать текстовый редактор + nano +, чтобы открыть файл и увидеть любой вывод. Откройте другой редактор терминала, подключитесь к вашему серверу и используйте + nano +, чтобы открыть текстовый файл. Напишите несколько символов и сохраните файл. Затем вернитесь к исходному терминалу.

Затем вы увидите вывод, похожий на этот:

Output21840 11:26:33.390634648 0 nano (27291) < mmap res=7F517150A000 vm_size=8884 vm_rss=436 vm_swap=0
21841 11:26:33.390654669 0 nano (27291) > close fd=3(<f>/lib/x86_64-linux-gnu/libc.so.6)
21842 11:26:33.390657136 0 nano (27291) < close res=0
21843 11:26:33.390682336 0 nano (27291) > access mode=0(F_OK)
21844 11:26:33.390690897 0 nano (27291) < access res=-2(ENOENT) name=/etc/ld.so.nohwcap
21845 11:26:33.390695494 0 nano (27291) > open
21846 11:26:33.390708360 0 nano (27291) < open fd=3(<f>/lib/x86_64-linux-gnu/libdl.so.2) name=/lib/x86_64-linux-gnu/libdl.so.2 flags=4097(O_RDONLY|O_CLOEXEC) mode=0
21847 11:26:33.390710510 0 nano (27291) > read fd=3(<f>/lib/x86_64-linux-gnu/libdl.so.2) size=832

Снова убейте команду, набрав + CTRL + C +.

Получение в реальном времени системных событий с помощью + sysdig + не всегда лучший способ его использования. К счастью, есть и другой способ - захват событий в файл для последующего анализа. Давайте посмотрим, как.

Шаг 3 - Захват активности системы в файл с помощью Sysdig

Захват системных событий в файл с помощью + sysdig + позволяет анализировать эти события позднее. Чтобы сохранить системные события в файл, передайте + sysdig + параметр * -w * и укажите имя целевого файла, например:

sudo sysdig -w .scap

Sysdig будет сохранять сгенерированные события в целевой файл, пока вы не нажмете + CTRL + C +. Со временем этот файл может стать довольно большим. Однако с помощью опции * -n * вы можете указать, сколько событий вы хотите, чтобы Sysdig захватывал. После того, как целевое количество событий было захвачено, оно выйдет. Например, чтобы сохранить 300 событий в файл, введите:

sudo sysdig -n 300 -w .scap

Хотя вы можете использовать Sysdig для записи определенного количества событий в файл, лучше использовать опцию * -C *, чтобы разбить захват на более мелкие файлы определенного размера. И чтобы не перегружать локальное хранилище, вы можете дать Sysdig команду сохранить только несколько сохраненных файлов. Другими словами, Sysdig поддерживает захват событий в журналы с ротацией файлов в одну команду.

Например, чтобы непрерывно сохранять события в файлы размером не более 1 МБ и сохранять только последние пять файлов (это то, что делает параметр * -W *), выполните эту команду:

sudo sysdig -C 1 -W 5 -w .scap

Перечислите файлы с помощью + ls -l sysdig-trace * +, и вы увидите вывод, похожий на этот, с пятью файлами журнала:

Output-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap0
-rw-r--r-- 1 root root 952K Nov 23 04:14 sysdig-trace.scap1
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap2
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap3
-rw-r--r-- 1 root root 985K Nov 23 04:13 sysdig-trace.scap4

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

sudo sysdig -n 200 -w .scap proc.name=nano

Затем в другом терминале, подключенном к вашему серверу, откройте файл с помощью + nano + и сгенерируйте некоторые события, набрав текст или сохранив файл. События будут записываться в + sysdig-trace-nano.scap +, пока + sysdig + не запишет 200 событий.

Как бы вы собрали все события записи, созданные на вашем сервере? Вы примените фильтр следующим образом:

sudo sysdig -w .scap evt.type=write

Нажмите + CTRL + C + через несколько секунд, чтобы выйти.

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

Шаг 4 - Чтение и анализ данных о событиях с помощью Sysdig

Чтение захваченных данных из файла с помощью Sysdig так же просто, как передача ключа * -r * команде + sysdig +, например так:

sudo sysdig -r .scap

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

Например, чтобы прочитать созданный вами файл трассировки + sysdig-trace-nano.scap +, но посмотреть только на определенный тип события, например, на запись событий, введите следующую команду:

sysdig -r .scap evt.type=write

Вывод должен быть похож на:

Output21340 13:32:14.577121096 0 nano (27590) < write res=1 data=.
21736 13:32:17.378737309 0 nano (27590) > write fd=1 size=23
21737 13:32:17.378748803 0 nano (27590) < write res=23 data=#This is a test file..#
21752 13:32:17.611797048 0 nano (27590) > write fd=1 size=24
21753 13:32:17.611808865 0 nano (27590) < write res=24 data= This is a test file..#
21768 13:32:17.992495582 0 nano (27590) > write fd=1 size=25
21769 13:32:17.992504622 0 nano (27590) < write res=25 data=TThis is a test file..# T
21848 13:32:18.338497906 0 nano (27590) > write fd=1 size=25
21849 13:32:18.338506469 0 nano (27590) < write res=25 data=hThis is a test file..[5G
21864 13:32:18.500692107 0 nano (27590) > write fd=1 size=25
21865 13:32:18.500714395 0 nano (27590) < write res=25 data=iThis is a test file..[6G
21880 13:32:18.529249448 0 nano (27590) > write fd=1 size=25
21881 13:32:18.529258664 0 nano (27590) < write res=25 data=sThis is a test file..[7G
21896 13:32:18.620305802 0 nano (27590) > write fd=1 size=25

Давайте посмотрим на содержимое файла, который вы сохранили в предыдущем разделе: файл + sysdig-write-events.scap +. Мы знаем, что все события, сохраненные в файле, являются событиями записи, поэтому давайте посмотрим содержимое:

sudo sysdig -r  evt.type=write

Это частичный вывод. Вы увидите что-то вроде этого, если на сервере были какие-либо действия SSH при захвате событий:

Output42585 19:58:03.040970004 0 gmain (14818) < write res=8 data=........
42650 19:58:04.279052747 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
42651 19:58:04.279128102 0 sshd (22863) < write res=28 data=.8c..jp...P........s.E<...s.
42780 19:58:06.046898181 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
42781 19:58:06.046969936 0 sshd (12392) < write res=28 data=M~......V.....Z...\..o...N..
42974 19:58:09.338168745 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
42975 19:58:09.338221272 0 sshd (22863) < write res=28 data=66..J.._s&U.UL8..A....U.qV.*
43104 19:58:11.101315981 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
43105 19:58:11.101366417 0 sshd (12392) < write res=28 data=d).(...e....l..D.*_e...}..!e
43298 19:58:14.395655322 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
43299 19:58:14.395701578 0 sshd (22863) < write res=28 data=.|.o....\...V...2.$_...{3.3|
43428 19:58:16.160703443 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28
43429 19:58:16.160788675 0 sshd (12392) < write res=28 data=..Hf.%.Y.,.s...q...=..(.1De.
43622 19:58:19.451623249 0 sshd (22863) > write fd=3(<4t>11.11.11.11:43566->22.22.22.22:ssh) size=28
43623 19:58:19.451689929 0 sshd (22863) < write res=28 data=.ZT^U.pN....Q.z.!.i-Kp.o.y..
43752 19:58:21.216882561 0 sshd (12392) > write fd=3(<4t>11.11.11.11:51282->22.22.22.22:ssh) size=28

Обратите внимание, что все строки в предыдущем выводе содержат * 11.11.11.11: 51282→ 22.22.22.22:ssh*. Это события, поступающие с внешнего IP-адреса клиента, + 11.11.11.11 + на IP-адрес сервера, + 22.22.22.22 +. Эти события произошли через соединение SSH с сервером, поэтому эти события ожидаются. Но есть ли другие события записи SSH, которые не с этого известного IP-адреса клиента? Это легко узнать.

Есть много операторов сравнения, которые вы можете использовать с Sysdig. Первое, что вы увидели, это * = . Другие *! = *, *> *, *> = *, * < И * ⇐ *. В следующей команде * fd.rip * фильтрует удаленный IP-адрес. Мы будем использовать оператор сравнения *! = * Для поиска событий с IP-адресов, отличных от + 11.11.11.11 +:

sysdig -r  fd.rip!=

Частичный вывод, который показал, что были события записи с IP-адресов, отличных от IP-адреса клиента, показан в следующем выводе:

Output294479 21:47:47.812314954 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294480 21:47:47.812315804 0 sshd (28766) < read res=1 data=T
294481 21:47:47.812316247 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294482 21:47:47.812317094 0 sshd (28766) < read res=1 data=Y
294483 21:47:47.812317547 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294484 21:47:47.812318401 0 sshd (28766) < read res=1 data=.
294485 21:47:47.812318901 0 sshd (28766) > read fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=1
294486 21:47:47.812320884 0 sshd (28766) < read res=1 data=.
294487 21:47:47.812349108 0 sshd (28766) > fcntl fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) cmd=4(F_GETFL)
294488 21:47:47.812350355 0 sshd (28766) < fcntl res=2(<f>/dev/null)
294489 21:47:47.812351048 0 sshd (28766) > fcntl fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) cmd=5(F_SETFL)
294490 21:47:47.812351918 0 sshd (28766) < fcntl res=0(<f>/dev/null)
294554 21:47:47.813383844 0 sshd (28767) > write fd=3(<4t>33.33.33.33:49802->22.22.22.22:ssh) size=976
294555 21:47:47.813395154 0 sshd (28767) < write res=976 data=........zt.....L.....}[email protected],ecdh-sha2-nistp256,ecdh-s
294691 21:47:48.039025654 0 sshd (28767) > read fd=3(<4t>221.229.172.117:49802->45.55.71.190:ssh) size=8192

Дальнейшее расследование также показало, что мошеннический IP-адрес + 33.33.33.33 + принадлежал машине в Китае. Вот о чем беспокоиться! Это всего лишь один пример того, как вы можете использовать Sysdig, чтобы следить за трафиком, попадающим на ваш сервер.

Давайте рассмотрим использование некоторых дополнительных скриптов для анализа потока событий.

Шаг 5 - Использование долот Sysdig для мониторинга и анализа системы

На языке Sysdig chisels - это сценарии Lua, которые можно использовать для анализа потока событий Sysdig для выполнения полезных действий. Существует около 50 сценариев, которые поставляются с каждой установкой Sysdig, и вы можете просмотреть список доступных долот в вашей системе с помощью этой команды:

sysdig -cl

Некоторые из наиболее интересных долот включают в себя:

  • * netstat *: список (и, возможно, фильтрация) сетевых подключений.

  • * shellshock_detect *: печать shellshock атак

  • * spy_users *: отображение интерактивной активности пользователя.

  • * listloginshells *: список идентификаторов оболочки входа в систему.

  • * spy_ip *: Показать данные, которыми обмениваются с данным IP-адресом.

  • * spy_port *: Показать данные, которыми обмениваются с использованием указанного номера порта IP.

  • * spy_file *: вывод всех операций чтения или записи, выполненных любым процессом, во все файлы. При желании вы можете указать имя файла только для перехвата чтения или записи в этот файл.

  • * httptop *: Показать топ HTTP-запросов

Для более подробного описания долота, включая все связанные аргументы, используйте флаг + -i +, за которым следует имя зубила. Так, например, чтобы просмотреть дополнительную информацию о долоте + netstat +, введите:

sysdig -i netstat

Теперь, когда вы знаете все, что вам нужно знать об использовании долота + netstat, включите его, чтобы отслеживать систему, выполнив:

sudo sysdig -c netstat

Вывод должен быть похож на следующее:

OutputProto Server Address           Client Address           State          TID/PID/Program Name
tcp   22.22.22.22:22           11.11.11.11:60422        ESTABLISHED    15567/15567/sshd
tcp   0.0.0.0:22               0.0.0.0:*                LISTEN         1613/1613/sshd

Если вы видите * ESTABLISHED * SSH-соединения с IP-адреса, отличного от вашего, в столбце * Client Address *, это должен быть красный флажок, и вам следует проверить глубже.

Гораздо более интересное долото - + spy_users +, которое позволяет просматривать интерактивные действия пользователя в системе.

Выйдите из этой команды:

sudo sysdig -c spy_users

Затем откройте второй терминал и подключитесь к вашему серверу. Выполните некоторые команды в этом втором терминале, а затем вернитесь к своему терминалу с + sysdig +. Команды, которые вы ввели на первом терминале, будут отображаться на терминале, на котором вы выполнили команду + sysdig -c spy_users +.

Далее давайте рассмотрим Csysdig, графический инструмент.

Шаг 6 - Использование Csysdig для мониторинга и анализа системы

Csysdig - это другая утилита, которая поставляется с Sysdig. Он имеет интерактивный пользовательский интерфейс, который предлагает те же функции, которые доступны в командной строке с помощью + sysdig +. Это как + top +, + htop + и + strace +, но более многофункциональный.

Как и команда + sysdig +, команда + csysdig + может выполнять мониторинг в реальном времени и может записывать события в файл для последующего анализа. Но + csysdig + дает более полезное представление системных данных в режиме реального времени, обновляемых каждые две секунды. Чтобы увидеть пример этого, введите следующую команду:

sudo csysdig

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

изображение: https: //assets.digitalocean.com/articles/sysdig_ubuntu_1604/LEhCwvI.jpg [Основной интерфейс Csysdig]

В нижней части интерфейса расположены несколько кнопок, которые можно использовать для доступа к различным аспектам программы. Наиболее заметной является кнопка * Views *, которая похожа на категории метрик, собранных с помощью + csysdig +. Из коробки доступно 29 представлений, включая * Процессы *, * Системные вызовы *, * Потоки *, * Контейнеры *, * Процессы ЦП *, * Сбой страниц *, * Файлы * и * Каталоги *.

Когда вы запустите + csysdig + без аргументов, вы увидите живые события из представления * Processes *. Нажав кнопку * Views * или клавишу + F2 +, вы увидите список доступных представлений, включая описание столбцов. Вы также можете просмотреть описание столбцов, нажав клавишу + F7 + или нажав кнопку * Legend *. А краткая справочная страница самого приложения (+ csysdig +) доступна нажатием клавиши + F1 + или нажатием кнопки * Help *.

На следующем рисунке показан список интерфейса приложения * Views *.

изображение: https: //assets.digitalocean.com/articles/sysdig_ubuntu_1604/R7oHhHT.jpg [окно просмотра Csysdig]

Хотя вы можете запустить + csysdig + без каких-либо параметров и аргументов, синтаксис команды, как и в случае с + sysdig + ', обычно принимает следующую форму:

sudo csysdig [option]...  [filter]

Наиболее распространенным параметром является * -d *, который используется для изменения задержки между обновлениями в миллисекундах. Например, чтобы просмотреть вывод + csysdig +, обновляемый каждые 10 секунд, вместо значения по умолчанию, равного 2 секундам, введите:

sudo csysdig -d 10000

Вы можете исключить информацию о пользователях и группах из представлений с помощью опции * -E *:

sudo csysdig -E

Это может ускорить запуск + csysdig +, но в большинстве случаев выигрыш в скорости незначителен.

Чтобы указать + csysdig +, чтобы остановить захват после определенного количества событий, используйте параметр * -n *. Приложение будет закрыто после того, как этот номер будет достигнут. Количество захваченных событий должно быть в пяти цифрах; в противном случае вы даже не увидите пользовательский интерфейс + csysdig +:

sudo csysdig -n 100000

Чтобы проанализировать файл трассировки, передайте + csysdig + параметр * -r *, например, так:

sudo csysdig -r .scap

Вы можете использовать те же фильтры, которые вы использовали с + sysdig +, чтобы ограничить вывод + csysdig +. Так, например, вместо просмотра данных событий, сгенерированных всеми пользователями в системе, вы можете отфильтровать выходные данные пользователей, запустив + csysdig + с помощью следующей команды, которая покажет данные событий, сгенерированные только пользователем root:

sudo csysdig user.name=root

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

изображение: https: //assets.digitalocean.com/articles/sysdig_ubuntu_1604/CFsMTrH.jpg [данные Csysdig, созданные пользователем root]

Чтобы просмотреть выходные данные для исполняемого файла, генерирующего событие, передайте фильтру имя двоичного файла без пути. В следующем примере будут показаны все события, сгенерированные командой + nano +. Другими словами, он покажет все открытые файлы, где текстовый редактор + nano +:

sudo csysdig proc.name=nano

Доступно несколько десятков фильтров, которые вы можете просмотреть с помощью следующей команды:

sudo csysdig -l

Вы заметите, что это была та же опция, которую вы использовали для просмотра фильтров, доступных с помощью команды + sysdig +. Таким образом, + sysdig + и + csysdig + примерно одинаковы. Основное отличие состоит в том, что + csysdig + поставляется с удобным для пользователя интерактивным интерфейсом. Чтобы выйти из + csysdig + в любое время, нажмите клавишу + Q + на клавиатуре.

Заключение

Sysdig поможет вам контролировать и устранять неполадки вашего сервера. Это даст вам глубокое понимание всей активности системы на контролируемом хосте, в том числе сгенерированной контейнерами приложений. Хотя это руководство не касается конкретно контейнеров, именно способность отслеживать активность системы, создаваемую контейнерами, отличает Sysdig от аналогичных приложений. Дополнительная информация доступна на странице проекта home.

Зубила Sysdig являются мощным расширением основных функциональных возможностей Sysdig. Они написаны на Lua, так что вы всегда можете настроить их или написать с нуля. Чтобы узнать больше о создании долот, посетите страницу проекта official chisel page.

Related