Мониторинг Linux/FreeBSD серверов
Николай Маржан, Киев, Украина, PortaOne, Inc.
LVEE 2011
Purposes and functions of monitoring systems are discussed, as far as general approaches to analyze the diagnostic parameters of a server. Observed information is classified into parameters received from hardware maintenance, operating system, services and typical database. Sample diagnostic parameters are presented for each category.
К стандартным целям проводимого на серверах мониторинга можно отнести:
- Отслеживание критических значений диагностических параметров состояния и уведомление инженеров об их появлении.
- Накопление статистической информации для последующего анализа.
Уведомление о том, что система находится в критическом состоянии, является наиболее важной функцией мониторинга, так как требует немедленного вмешательства инженеров, которые занимаются поддержкой данной системы.
Даже если проблема носит временный характер (например, стопроцентная загрузка процессора, возникшая спонтанно и затем прекратившаяся через 20 минут), выяснить причину такого поведения можно только тогда, когда проблема присутствует (причиной могла быть удаленная DOS-атака).
Накопление статистической информации происходит обычно в 2-х видах:
- Лог-файлы. Обычно в них записываются только те моменты, когда система входит в критическое состояние, и когда возващается в нормальное.
- Данные для графиков по каждому показателю.
Графики — не менее важная часть системы мониторинга, так как только они позволяют проводить анализ состояния сервера в целом, как сложной системы. Используя графики для наблюдения динамики диагностических параметров, мы можем:
- Увидеть, в каком состоянии находился сервер в любой момент времени в прошлом. Мы можем быстро понять, чем отличается сегодняшнее состояние от состояния недельной давности.
- Проследить закономерности возможной взаимосвязи между диагностическими параметрами. Например, когда повышается входящий трафик на сетевом интерфейсе — повышается нагрузка на центральный процессор.
- Находить противоречия между значениями диагностических параметров. Например, сильно возросло количество запросов на чтение к базе данных, и база данных начала использовать на 1 Гб больше оперативной памяти, но при этом с жесткого диска было считано всего 100 Мб данных.
Диагностическими параметрами состояния для аппаратного обеспечения являются:
- температура центрального процессора;
- наличие повреждённых секторов или ошибок чтения на жестком диске;
- состояние аппаратного RAID-контроллера.
К диагностическим параметрам состояния для операционной системы можно отнести:
- количество задач, ожидающих выполнения (load average);
- время простоя центрального процессора (idle);
- время простоя каждого ядра центрального процессора (idle);
- размер свободного места на жестком диске;
- нагрузка на жесткий диск;
- количество данных в разделе подкачки (swap);
- активная запись или чтение с раздела подкачки (swaping/paging);
- количество использованной памяти;
- количество памяти, потребляемой каждым приложением;
- скорость передачи данных на сетевых интерфейсах;
- подтверждение того, что сетевые интерфейсы работают на нужной скорости и в полнодуплексном режиме;
- количество ошибок и коллизий на сетевых интерфейсах;
- состояние системных буферов (freebsd vm.zone), mbuf clusters, sendfile-буферов, размер KVM, Pipe KVA;
- количество открытых файлов, количество открытых сокетов;
- отсутствие процессов-зомби;
- отсутствие ошибок сегментации у процессов.
Диагностическими параметрами состояния сервисов являются:
- подтверждение того, что все критически важные сервисы запущены.
- подтверждение того, что сервисы успевают вычитывать данные из входящей очереди сетевой подсистемы.
- подтверждение того, что нет отброшенных данных вследствие полных буферов соединения (dropped due to full socket buffers).
Диагностическими параметрами состояния базы данных MySQL являются:
- количество максимально использованных соединений;
- количество запросов, количество медленных запросов;
- количество операций записи/чтения с жесткого диска;
- отставание репликации.
Как показал опыт построения систем мониторинга в гетерогенных сетях, подходы и диагностические параметры практически идентичны для операционных систем FreeBSD и Linux; основные различия связаны с мониторингом системных буферов и с некоторыми расхождениями в синтаксисе команд.