Upload
yandex
View
460
Download
6
Embed Size (px)
DESCRIPTION
Citation preview
Linux-инструменты системного администратора
Современный сервис
Сервис – система состоящая из N узлов.
Система может быть распределённая.
Узкие места могут быть как у узла, так и у системы в целов.
Узел:
• процессор;
• память;
• диск.
Система:
• сеть.
3
Роль системного администратора
• Планировать ёмкость системы и строить архитектуру сервиса и инфраструктуру;
• производить деплой и обновление программ;
• поиск узких мест и оптимизация как приложения так и ОС;
• реагирование на возникающие инциденты (активное и реактивное).
4
Документация – главный инструмент
Документация:
• man <command>
• info / pinfo
• /usr/share/doc/
!
А если её нет?
• Код – хорошая документация (git, svn);
• инструменты отладки: ldd, strace, ltrace, gdb, objdump и т.п.
5
Shell оболочка
• bash;
• zsh;
• dash – Debian Almquist shell;
• ash – Almquist shell.
6
Внешние команды
• *utils;
• grep;
• sed;
• awk;
• ... тысячи их.
7
Эмулятор терминала
• *term;
• screen;
• tmux.
8
Текстовый редактор
• nano;
• vi[m];
• emacs;
• …
9
10
Подсистемы и инструменты
by Brendan Gregg
Класификация инструментов
vmstat iostat sar
tcpdump systemtap
ps top
strace gdb
Счётчики Трассировка
Общесистемные
На каждый процесс
Типы инструментов
• Счётчики;
• трассировка;
• профилирование – серия снимков (snapshot) системы целиком или процесса.
12
Счётчики Бесплатные – не добавляют накладных расходов, как при сборе так и при использовании.
Как правило, целочисленные беззнаковые (unsigned integers), которые увеличиваются при наступлении события. К примеру, счётчики количества принятых сетевых пакетов, сколько было произведено дисковых операций и системных вызовов.
Общесистемные
К примеру vmstat, iostat, netstat, sar.
На основе счётчики из /proc, /sys.
На каждый процесс
ps, top …
Как правило читают из /proc.
13
Трассировка
Трассировка – сбор данных событий для дальнейшего анализа.
Трассировка, как правило не включена по умолчанию, так как добавляет накладные расходы на процессор и может потребовать значительного места для сохранения данных.
Логи могут быть названы инструментами трассировки в каком-то приближении, включенными по умолчанию в большинстве приложений.
Общесистемные
tcpdump, blktrace, SystemTap, perf.
Собирают данные при помощи: libpcap, tracepoints, kprobes, ftrace…
На каждый процесс
strace, gdb.
14
Профилирование
Профилирование, как правило, производится при помощи:
• oprofile;
• perf;
• SystemTap.
15
CPU (1)
Нагрузка на процессор измеряется в процентах от времени, когда он был занят выполнением работы за интервал.
Она также может быть измерена как время, когда процессор не выполнял поток ядра называемый idle, а был занят выполнением приложений, других потоков ядра или обслуживанием прерываний.
CPU делят на User-Time/Kernel-Time.
16
CPU (2)
• uptime – показывает среднюю нагрузку (load average) для понимания характера нагрузки на процессор и систему (растёт/падает);
• vmstat – запустив утилиту с интервалов в 1 секунду, можно, к примеру, увидеть сколько запаса по процессору осталось;
• top – показывает какой процесс и пользователь потребляет больше всех процессорного времени.
• pidstat – показывает как именно используется процессор в разрезе user и system time.
• sar -q – показывает величину очереди на выполнение (run-queue).
17
Память (1)
• Виртуальная;
• физическая;
• Page Cache.
18
Память (2)
• vmstat – выводит общесистемную статистику использования виртуальной и физической памяти;
• sar:
◦ -B – статистика paging;
◦ -H: – статистика huge pages;
◦ -r: – использование памяти.
• ps;
• top;
• free;
• valgrind.
19
Память (3)
Cчётчики: • /proc/meminfo – общесистемные счётчики памяти; • /proc/zoneinfo – статистика по зонам памяти (NUMA ноды).
20
Дисковое IO (1)Дисковое I/O может приводить к значительному уменьшению времени отклика приложения и теоритически важнейшая цель анализа производительности системы.
Под высокой нагрузкой диски становятся узким местом, оставляя процессор простаивать в ожидании окончания операций ввода-вывода.
Нагрузка на дисковую подсистему может быть рассчитана как время, когда диск был нагружен выполнением работы, за интервал.
Диск используется на 0%, т.е. простаивает, и на 100% – непрерывно выполняет операции ввода-вывода и другие команды.
Диск в 100% использовании источник проблем с производительностью.
Однако любой показатель использования диска может быть причиной плохой производительности приложения хотя бы потому, что он самый медленный элемент в системе.
21
Дисковое IO (2)
!
I/O wait – метрика каждого CPU, которая показывает время проведённое в статусе idle в ожидании дисковой операции.
I/O wait делит время CPU idle на время, когда нечего было делать, и время, когда процессор был заблокирован на дисковом I/O.
Высокие показатели I/O wait говорят о том, что диск может быть узким местом, и недогруженным CPU.
Однако с IO wait нужно быть осторожным.
22
Дисковое IO (3)
• iostat;
• iotop;
• smartctl;
• blkid;
• blockdev;
• sar -d;
• pidstat -d;
• blktrace – трассировка блочного I/O устройства;
• MegaCli – статистика и настройка LSI RAID контроллера.
23
• Round-Trip Time;
• First-Byte Latency;
• пропускная способность относительно общей полосы пропускания в байтах и пакетах.
Сеть (1)
24
Сеть (2)• netstat -s – много общесистемной статистики;
• netstat -i – показывает ошибки на интерфейсах;
• ifconfig – ошибки на интерфейсах, дропы и т.д.;
• iftop;
• ip link;
• sar
◦ -n DEV – статистика интерфейса;
◦ -n EDEV – ошибки на интерфейсе;
• ping;
• traceroute; mtr.
25
Анализаторы пакетов
• tcpdump;
• tshark / wireshark;
• dumpcap;
• airodump-ng.
26
Отладка и профилирование
• gdb;
• valgrind;
• oprofile;
• perf;
• ...
27
Трассировка
• strace;
• ltrace;
• SystemTap;
• LTTng.
28
Мониторинг
• sar;
• Nagios/Icinga;
• Zabbix;
• …;
• функциональный.
29
Менеджеры пакетов
• rpm;
• dpkg;
• …
30
Управление версиями
• git;
• svn.
31
Автоматизация
• Пакетирование;
• Puppet;
• Salt Stack;
• Ansible;
• Chef;
• CFEngine;
• …
32
Контроль целостности
• tripwire;
• aide.
33
Методы резервного копирования
• Полное;
• инкрементальное;
• дифференциальное;
• непрерывное.
34
Резервное копирование
• tar;
• rsync/rdiff/duplicity;
• моментальные снимки (lvm snapshots, btrfs snapshots, NetApp, etc);
• pg_dump/mysqldump;
• Amanda;
• Bacula;
• ...
35