Как да проверите и разрешите проблеми със сървъра на Linux с помощта на sysdig

Веднага ще отбележа, че sysdig е наличен за други платформи (например за Windows), но не всички версии имат пълна функционалност. Този урок разглежда приложението на Linux, други операционни системи може да имат свои собствени специфики.

Какво е първото нещо, което идва на ум, когато трябва да проследите системните заявки, направени и получени от процес? Може би мислите за strace и сте прави. Какъв инструмент бихте използвали за наблюдение на необработен мрежов трафик от командния ред? Ако сте мислили за tcpdump, отново сте направили отличен избор. И ако някога се окажете, че трябва да следите всички отворени файлове (в Unix смисъла на думата: всичко е файл), шансовете са, че ще използвате lsof.

strace, tcpdump и lsof са наистина страхотни помощни програми, които трябва да бъдат част от инструментариума на всеки системен администратор и точно затова ще харесате sysdig, мощен инструмент с отворен код за изследване на системно ниво и решаване на проблеми, представен от създателите му като „strace + tcpdump + lsof + невероятен сос с малко Lua череша отгоре.“ Като оставим хумора настрана, една от страхотните характеристики на sysdig е способността не само да анализира "живото" състояние на Linux система, но и да записва състоянието в дъмп файл за офлайн наблюдение. Можете също така да персонализирате поведението на sysdig или дори да подобрите неговите възможности, като използвате вградени (или написани от вас) малки скриптове, наречени chisels (chisels - длето, длето). Индивидуалните длета се използват за анализиране на потоци от събития, уловени от sysdig в различни ситуации, специфични за скрипта.

В този урок ще разгледаме инсталирането и основното използване на sysdig за извършване на системен мониторинг и отстраняване на проблеми в Linux.

Инсталиране на Sysdig

За по-голяма простота и краткост, за този урок ще изберем да използваме автоматичния процес на инсталиране, описан на официалния уебсайт. В автоматизиран процес инсталационният скрипт автоматично открива операционната система и инсталира всички необходими зависимости.

Изпълнете следната команда като root, за да инсталирате sysdig от официалното хранилище на apt/yum:

проверите

След като инсталацията приключи, можем да извикаме sysdig, както е показано по-долу, за да усетим присъствието му.

Нашият екран незабавно ще се запълни с това, което се случва в нашата система, което ни пречи да правим много повече с тази информация. Поради тази причина ще изпълним:

сървъра

  • Използване на процесора
  • Грешки
  • I/O (вход/изход)
  • трупи
  • Разни (Разни)
  • Мрежа (мрежа)
  • Изпълнение (производителност)
  • сигурност
  • Състояние на системата

За да покажете информация (включително подробна употреба на командния ред) за конкретно длето, изпълнете:

проблеми

Длетата могат да се комбинират с филтри (които могат да се прилагат както към живи данни, така и към файлови следи), за да се получи по-полезен резултат.

Филтрите следват структурата „class.field“. Например:

Представяме на вашето внимание нов курс от екипа наThe Codeby - "Тестване за проникване на уеб приложения от нулата".Обща теория, подготовка на работната среда, пасивен фузинг и пръстови отпечатъци, активен фузинг, уязвимости, последваща експлоатация, инструменти, социално инженерство и още.Прочетете повече .

Използвайте следната команда, за да тествате сървъра на живореално време. Флагът "-c", последван от името на длетото, казва на sysdig да изпълни конкретно длето.

Като алтернатива можете да извършите офлайн анализ на производителността на сървъра. В този случай можете да запишете пълната следа на sysdig във файл и да изпълните длето за тесни места върху тази следа, както е показано:

Първо запазете следата на sysdig (използвайте Ctrl+c, за да спрете събирането):

След като съберете проследяването, можете да проверите най-бавните системни заявки, които са били изпълнени по време на заснетия интервал, като изпълните:

Трябва да обърнете внимание на колони #2, #3 и #4, които показват съответно времето за изпълнение, името на процеса и PID.

Пример за Sysdig: Наблюдение на интерактивната активност на потребителя

Да предположим, че вие ​​като системен администратор искате да проверите интерактивната активност на потребителите в системата (например какви команди е въвел потребителят от командния ред и какви директории е влязъл). За целта длетото spy_user бърза да ни помогне.

Нека първо изградим sysdig пътека с няколко допълнителни опции.

  • "-s 4096" казва на sysdig да улови до 4096 байта от всяко събитие.
  • „-z“ (използван с „-w“) позволява компресиране на файла за проследяване.
  • "-w" записва следа на sysdig в конкретен файл.

По-горе конфигурирахме името на компресирания файл за проследяване да се базира на хоста. Не забравяйте, че можете да прекъснете sysdig по всяко време, като натиснете Ctrl + c.

Първата колона по-горе показва PID на процеса, свързан с дадената потребителска активност.

Но какво ще стане, ако искате да се насочите към конкретен потребител и да наблюдавате само неговата потребителска активност? Можете да филтрирате резултатите от spy_users chisel по потребителско име:

сървъра

Пример за Sysdig: Наблюдение на входно-изходния файл

Можем да персонализираме изходния формат на проследяването на sysdig с флага „-p“ и да посочим желаните полета (напр. потребителско име, име на процес и име на файл и сокет), оградени в двойни кавички. В този пример ще създадем файл за проследяване, който ще съдържа само събития за запис в домашни директории (които можем да проверим по-късно с „sysdig -r writetrace.scap.gz“).

сървъра

Пример за Sysdig: Мониторинг на мрежови I/O

Като част от решаването на проблеми със сървъра може да се наложи да шпионирате мрежовия трафик, което обикновено се прави с tcpdump. Със sysdig проследяването на трафика може да се извърши също толкова лесно, но по по-удобен за потребителя начин.

Ако вместо това искате да наблюдавате обмена на необработени данни (двоични), заменете "-A" с "-X":

Представяме на вашето внимание курса от екипаcodeby - "Комплекс от мерки за защита на личните данни, анонимност в интернет и не само" Повече .