Ключевые слова:account, log, linux, (найти похожие документы)
From: Roman Sozinov <http://sozinov.blogspot.com>
Date: Mon, 3 Jan 2008 14:31:37 +0000 (UTC)
Subject: Инструментарий для анализа произошедшего в системе
Оригинал: http://sozinov.blogspot.com/2007/05/gnu-accounting-utilities.html
The GNU Accounting Utilities (acct) - набор из нескольких утилит,
помогающих проанализировать произошедшие инциденты и обнаружить слабые
места в работе сервера.
Смысл простой - вы включаете запись всего происходящего, а потом
анализируете накопленные данные (файлы /var/log/pacct и
/var/log/wtmp). Слежение происходит на уровне ядра, поэтому ядро
должно иметь соответствующую опцию (BSD-style process accounting) при
сборке (мною опробованы стандартные ядра Debian 3.1, 4.0, Slackware 10
- с ними все в порядке). В Debian и Slackware - все элементарно
ставится из репозитария - пакет acct.
В данный набор входят следующие утилиты:
* ac: выводит статистику о длительности сессии
* accton: включает сбор данных
* last: выводит данные о последних сессиях пользователей
* lastcomm: выводит список запущенных комманд
* sa: выводит статистику по аккаунтам пользователей
Лучший способ рассказа об этих утилитах - пример ситуации. Итак,
представьте себе, вы хорошо осведомлены о том, что происходит на ваших
серверах, накапливаете статистику (например, по snmp с помощью
Cacti) о загрузке, использовании памяти и процессорного времени,
приходите утром смотрите на графики и видите дикую нагрузку на вашем
веб-сервере ночью, когда обычно всё тихо. Естественно, первым делом
идут в ход обычные логи (/var/log/messages, /var/log/auth.log,
/var/log/syslog и .т.д.), но ситуация несколько осложняется - дело в
том, что на веб-сервере запущен не только веб-сервис, но и с десяток
других (mail, ftp, ldap, dns и т.д.). Если обычные логи ничего
толкогого не говорят и вы не можете точно сказать, что за сервис
вызвал такую нагрузку (да и сервис ли это был?), тогда в дело вступают
Accounting Utilities (естественно, если вы прежде включили накопление
результатов :) )
# lastcomm -f /var/log/pacct.1 > ~/lastcomm.log
Вывод будет примерно следующий:
...
apachectl root ?? 0.01 secs Tue May 1 18:50
lynx root ?? 0.01 secs Tue May 1 18:50
awk root ?? 0.01 secs Tue May 1 18:50
lynx root ?? 0.00 secs Tue May 1 18:50
cat root ?? 0.00 secs Tue May 1 18:50
httpd www ?? 0.13 secs Tue May 1 18:49
httpd www ?? 0.12 secs Tue May 1 18:49
httpd www ?? 0.15 secs Tue May 1 18:49
httpd www ?? 0.17 secs Tue May 1 18:49
httpd www ?? 0.25 secs Tue May 1 18:49
httpd www ?? 0.14 secs Tue May 1 18:49
httpd www ?? 0.14 secs Tue May 1 18:49
httpd www ?? 0.25 secs Tue May 1 18:49
httpd www ?? 1.56 secs Tue May 1 18:39
httpd www ?? 0.13 secs Tue May 1 18:49
httpd www ?? 0.14 secs Tue May 1 18:49
httpd www ?? 0.23 secs Tue May 1 18:49
httpd www ?? 1.92 secs Tue May 1 18:39
proftpd root ?? 0.01 secs Tue May 1 18:49
httpd www ?? 0.14 secs Tue May 1 18:49
httpd www ?? 0.14 secs Tue May 1 18:49
httpd www ?? 0.13 secs Tue May 1 18:48
httpd www ?? 0.15 secs Tue May 1 18:48
httpd www ?? 1.42 secs Tue May 1 18:39
httpd www ?? 361.29 secs Tue May 1 18:30
httpd www ?? 0.32 secs Tue May 1 18:45
httpd www ?? 0.75 secs Tue May 1 18:45
httpd www ?? 0.80 secs Tue May 1 18:45
httpd www ?? 0.19 secs Tue May 1 18:47
...
Колонки: команда, пользователь, терминал, время выполнения, время
старта данной команды (еще могут быть различные флаги, о которых
написано в документации)
Из приведенного выше лога видно, что веб-сервер что-то выполнял 360
секунд (видимо это был какой-то скрипт). Плюс число 360 - это явно
какой-то лимит, видимо веб-сервер остановил выполнение скрипта по
истечению timeout'а в 360 секунд. Ну а дальше - дело техники - в лог
файлах выших сайтов найти что за скрипт был остановлен (и не раз) за
то, что повисал.
Ссылки:
1. Accounting Utilities Manual
2. Как отследить запущенные пользователями программы