Troubleshooting 
для системных администраторов 
Сергей Еланцев, группа обеспечения стабильности 
Поиска, разработчик
• Введение 
• Мониторинг 
• Проблемы в сети 
• Процессы на сервере 
• Диски 
• Что с этим делать? 
3 
Содержание
4 
toolbox
Введение 
Поехали!
Почему нужно уметь разбираться с проблемами сервисов? 
! 
• Одна из основных задач системных администраторов 
• Улучшить понимание работы ОС и сервиса 
• Получить идеи оптимизации сервиса 
• Безысходность 
6 
Мотивация
Почему эта часть работы не должна существовать? 
! 
• Тесты 
• Не существует проблем в сети 
• Не существует проблем с ресурсами 
• Идеальный код 
7 
Демотивация
• Знать свой shell 
• Освоить командные утилиты для обработки текста (grep, awk) 
• Иметь представление о принципах работы ОС и сетей 
• Знать скриптовый язык программирования (python, perl) 
8 
Полезные умения
• Работающий мониторинг 
• Знание принципов работы сервисов 
• Знание парка машин 
9 
Всегда готов - стандартные ситуации
• Бэкапы логов 
• Быстрый откат к предыдущей(-им) конфигурации(-ям) 
• Возможность оставить несколько инстансов в проблемном 
состоянии для исследования 
10 
Всегда готов - пожар
Мониторинг 
Наше всё
• Информация о состоянии сервиса в реальном времени 
• Дать понимание состояния сервиса в целом (запросы, неудачи, 
время ответа и т.п.) 
• Дать понимание состояния конкретных машин (потребление 
CPU, памяти, сетевая и дисковая активности) 
• Дать понимание работы сети на машинах, в роутерах и т.п. 
• Исторические данные - тренды 
• Количественный и качественный мониторинг 
12 
Задачи мониторинга
• Nagios 
• Zabbix 
• Cacti 
• Ganglia 
• Своё 
13 
Системы мониторинга
14
• Процентили - 50, 90, 95. 
• Максимальные и минимальные значения 
• Выбросы 
• И всё это уметь соотносить со временем релиза (CI) 
15 
Объекты мониторинга
16 
Объекты мониторинга
17 
Мониторинг и хосты
18
19 
Мониторинг и хосты - окончание
• Быстрое понимание того, что произошло что-то нехорошее 
• Быстрое понимание того, где произошло что-то нехорошее 
• Возможность отличить общесистемную проблему от проблемы 
на ограниченном подмножестве серверов 
20 
Что даёт мониторинг
• Причину поломки 
• Всеохватность 
21 
Что мониторинг НЕ даёт
Проблемы в сети
• Потеря связности 
• Перегрузка каналов 
• Проблемы в приложениях 
23 
Виды проблем
• Браузер / wget / curl / telnet / nc 
• ping, ping6 (-s) 
• traceoute, traceroute6 
• iptables -L 
• dig / nslookup 
24 
Грубые инструменты
25 
Ping - пример
26 
traceroute
• Всё ещё не говорят, что сломалось 
• Могут навести на неправильные мысли. Например, при 
поломке DNS будет казаться, что потерялась связность 
• ICMP может быть заблокирован правилами firewall (или опять 
обманывать про связность) 
27 
Грубые инструменты - недостатки
• netstat -i - список интерфейсов 
• netstat -r - таблица маршрутизации 
• netstat -b <interval> - in/out пакеты на интерфейсе 
• netstat -d <interval> - drop пакетов 
• netstat -Latn - listen queue для слушающих tcp сокетов 
• netstat -qI eth0 - статистика очередей на интерфейсе 
28 
netstat
Программа tcpdump - это швейцарский нож, который покажет все 
проблемы с сетью. 
Синтаксис: 
tcpdump -i <interface> [options] <expression> 
expression - выражение, фильтрующее пакеты 
29 
Швейцарский нож - tcpdump
• tcpdump -i eth0 tcp port 80 
• tcpdump -i eth0 -n tcp port 80 
• tcpdump -i en1 tcp port 443 and host ssllabs.com 
• tcpdump -i eth0 ‘host ssllabs.com and (tcp port 80 or tcp port 443)’ 
• А также UDP, (R)ARP, ICMP и тысячи других 
30 
tcpdump - примеры
Кроме собственно tcpdump есть вспомогательные программы 
• wireshark - GUI над tcpdump. Другой синтаксис фильтров 
(tcp.port == 80 против tcp port 80). 
• tshark - пакетная обработка pcap-файла 
31 
wireshark tcpdump
• Общение - удаётся ли переходить между состояниями tcp 
• Потери пакетов (ретрансмиты) 
• Время, затрачиваемое каждым из участников общения 
• Какими порциями происходит передача данных 
• Опции tcp: maximum segment size и прочие 
• Сопоставлять с логами сервиса 
• Различия восприятия передачи клиентом и сервером 
32 
На что смотреть
Процессы на сервере
• ps - %CPU, %MEM, VSS, RSS, SHR 
• top (htop) - на машине, realtime 
• uptime 
• /proc/meminfo 
• /proc/cpuinfo 
34 
Смотрим процессы ОС
• Стандартные места - /var/log/ 
• Сервис-специфичные места (/usr/local/www/logs) 
• Системные - dmesg, /var/log/messages 
• lsof - потому что все врут 
• /proc/<pid> 
35 
Логи и где их искать
• Факт записи coredump’а можно поискать в dmesg’е 
• ulimit -c 
• sysctl kernel.core_pattern 
%p - pid 
%s - номер сигнала 
%t - timestamp 
%e - название программы 
%h - hostname 
36 
Coredump
• gdb <program> <coredump> 
• bt 
• fr 
• print 
37 
gdb
38 
gdb - пример
39 
ltrace
40 
strace
• -tt - timestamp 
• -c - count time 
• -f - follow fork 
• -o - outfile 
• -ff - multiple files 
• -p - pid 
• -e - filter 
41 
strace - флаги
Диски
• df, du 
• hdparm 
• swapon/swapoff 
43 
Простейшие инструменты
Показывает утилизацию система ввода-вывода, процессора и 
памяти. 
hint: печатайте ещё и текущее время 
perl -ne «print scalar localtime(), ‘ ‘, $_;» | vmstat 1 
44 
vmstat
45 
vmstat пример
• procs: r - в state: running, b - заблокировнные 
• memory: free, buff, cache 
• swap: si - swap in, so - swap out 
• io: bi - block in, bo - block out 
• system:in - interrupts, cs - context switches 
• cpu: us - user, sy - system, id - idle, wa - waiting on io 
46 
Расшифровка
47 
iostat, iotop
Что с этим делать?
• Без паники 
• Итеративно 
• Оперативно 
49 
Как разбираться?
• Разобраться 
• Устранить 
• Добавить в мониторинг 
• Добавить в тесты 
50 
Что делать?
Вопросы?

Сергей Еланцев - Troubleshooting

  • 2.
    Troubleshooting для системныхадминистраторов Сергей Еланцев, группа обеспечения стабильности Поиска, разработчик
  • 3.
    • Введение •Мониторинг • Проблемы в сети • Процессы на сервере • Диски • Что с этим делать? 3 Содержание
  • 4.
  • 5.
  • 6.
    Почему нужно уметьразбираться с проблемами сервисов? ! • Одна из основных задач системных администраторов • Улучшить понимание работы ОС и сервиса • Получить идеи оптимизации сервиса • Безысходность 6 Мотивация
  • 7.
    Почему эта частьработы не должна существовать? ! • Тесты • Не существует проблем в сети • Не существует проблем с ресурсами • Идеальный код 7 Демотивация
  • 8.
    • Знать свойshell • Освоить командные утилиты для обработки текста (grep, awk) • Иметь представление о принципах работы ОС и сетей • Знать скриптовый язык программирования (python, perl) 8 Полезные умения
  • 9.
    • Работающий мониторинг • Знание принципов работы сервисов • Знание парка машин 9 Всегда готов - стандартные ситуации
  • 10.
    • Бэкапы логов • Быстрый откат к предыдущей(-им) конфигурации(-ям) • Возможность оставить несколько инстансов в проблемном состоянии для исследования 10 Всегда готов - пожар
  • 11.
  • 12.
    • Информация осостоянии сервиса в реальном времени • Дать понимание состояния сервиса в целом (запросы, неудачи, время ответа и т.п.) • Дать понимание состояния конкретных машин (потребление CPU, памяти, сетевая и дисковая активности) • Дать понимание работы сети на машинах, в роутерах и т.п. • Исторические данные - тренды • Количественный и качественный мониторинг 12 Задачи мониторинга
  • 13.
    • Nagios •Zabbix • Cacti • Ganglia • Своё 13 Системы мониторинга
  • 14.
  • 15.
    • Процентили -50, 90, 95. • Максимальные и минимальные значения • Выбросы • И всё это уметь соотносить со временем релиза (CI) 15 Объекты мониторинга
  • 16.
  • 17.
  • 18.
  • 19.
    19 Мониторинг ихосты - окончание
  • 20.
    • Быстрое пониманиетого, что произошло что-то нехорошее • Быстрое понимание того, где произошло что-то нехорошее • Возможность отличить общесистемную проблему от проблемы на ограниченном подмножестве серверов 20 Что даёт мониторинг
  • 21.
    • Причину поломки • Всеохватность 21 Что мониторинг НЕ даёт
  • 22.
  • 23.
    • Потеря связности • Перегрузка каналов • Проблемы в приложениях 23 Виды проблем
  • 24.
    • Браузер /wget / curl / telnet / nc • ping, ping6 (-s) • traceoute, traceroute6 • iptables -L • dig / nslookup 24 Грубые инструменты
  • 25.
    25 Ping -пример
  • 26.
  • 27.
    • Всё ещёне говорят, что сломалось • Могут навести на неправильные мысли. Например, при поломке DNS будет казаться, что потерялась связность • ICMP может быть заблокирован правилами firewall (или опять обманывать про связность) 27 Грубые инструменты - недостатки
  • 28.
    • netstat -i- список интерфейсов • netstat -r - таблица маршрутизации • netstat -b <interval> - in/out пакеты на интерфейсе • netstat -d <interval> - drop пакетов • netstat -Latn - listen queue для слушающих tcp сокетов • netstat -qI eth0 - статистика очередей на интерфейсе 28 netstat
  • 29.
    Программа tcpdump -это швейцарский нож, который покажет все проблемы с сетью. Синтаксис: tcpdump -i <interface> [options] <expression> expression - выражение, фильтрующее пакеты 29 Швейцарский нож - tcpdump
  • 30.
    • tcpdump -ieth0 tcp port 80 • tcpdump -i eth0 -n tcp port 80 • tcpdump -i en1 tcp port 443 and host ssllabs.com • tcpdump -i eth0 ‘host ssllabs.com and (tcp port 80 or tcp port 443)’ • А также UDP, (R)ARP, ICMP и тысячи других 30 tcpdump - примеры
  • 31.
    Кроме собственно tcpdumpесть вспомогательные программы • wireshark - GUI над tcpdump. Другой синтаксис фильтров (tcp.port == 80 против tcp port 80). • tshark - пакетная обработка pcap-файла 31 wireshark tcpdump
  • 32.
    • Общение -удаётся ли переходить между состояниями tcp • Потери пакетов (ретрансмиты) • Время, затрачиваемое каждым из участников общения • Какими порциями происходит передача данных • Опции tcp: maximum segment size и прочие • Сопоставлять с логами сервиса • Различия восприятия передачи клиентом и сервером 32 На что смотреть
  • 33.
  • 34.
    • ps -%CPU, %MEM, VSS, RSS, SHR • top (htop) - на машине, realtime • uptime • /proc/meminfo • /proc/cpuinfo 34 Смотрим процессы ОС
  • 35.
    • Стандартные места- /var/log/ • Сервис-специфичные места (/usr/local/www/logs) • Системные - dmesg, /var/log/messages • lsof - потому что все врут • /proc/<pid> 35 Логи и где их искать
  • 36.
    • Факт записиcoredump’а можно поискать в dmesg’е • ulimit -c • sysctl kernel.core_pattern %p - pid %s - номер сигнала %t - timestamp %e - название программы %h - hostname 36 Coredump
  • 37.
    • gdb <program><coredump> • bt • fr • print 37 gdb
  • 38.
    38 gdb -пример
  • 39.
  • 40.
  • 41.
    • -tt -timestamp • -c - count time • -f - follow fork • -o - outfile • -ff - multiple files • -p - pid • -e - filter 41 strace - флаги
  • 42.
  • 43.
    • df, du • hdparm • swapon/swapoff 43 Простейшие инструменты
  • 44.
    Показывает утилизацию системаввода-вывода, процессора и памяти. hint: печатайте ещё и текущее время perl -ne «print scalar localtime(), ‘ ‘, $_;» | vmstat 1 44 vmstat
  • 45.
  • 46.
    • procs: r- в state: running, b - заблокировнные • memory: free, buff, cache • swap: si - swap in, so - swap out • io: bi - block in, bo - block out • system:in - interrupts, cs - context switches • cpu: us - user, sy - system, id - idle, wa - waiting on io 46 Расшифровка
  • 47.
  • 48.
    Что с этимделать?
  • 49.
    • Без паники • Итеративно • Оперативно 49 Как разбираться?
  • 50.
    • Разобраться •Устранить • Добавить в мониторинг • Добавить в тесты 50 Что делать?
  • 51.