Назад | Перейти на главную страницу

Хорошее введение в мониторинг сервера?

В настоящее время я разрабатываю небольшое веб-приложение с использованием Linux, Apache, Django и MySql.

Будучи разработчиком с минимальными знаниями в области Linux / сценариев оболочки / мониторинга серверов, я не имею ни малейшего представления о том, какой вид мониторинга я собираюсь делать ... Тем не менее, некоторые вещи, которые мне нравятся, это:

Кроме того, мне интересно, есть ли другие файлы журналов / службы, на которые я должен следить?

Мониторинг сервера зависит от того, какие показатели имеют значение для назначения сервера. У веб-приложения есть несколько областей, которые нужно охватить. Вы можете придумать бесконечное количество показателей, но обычно у вас есть эти минимальные значения:

  • Доступность сервера и сервисов
  • Дисковое пространство и использование
  • Использование сети
  • Использование памяти
  • использование процессора
  • Лог-файлы

Другая часть наблюдения, помимо взгляда в настоящее, - это запись прошлого. Это дает вам возможность:

  • План на будущее
  • Определите причины появления проблем

Не хватит ли вам дискового пространства в следующие два месяца при таком же росте? Видите ли вы увеличение использования ЦП в соответствии с развертыванием новых функций? Почему пользователям приходится ждать четыре секунды, чтобы просмотреть страницу?

Я коснусь каждого из вышеперечисленных показателей:

Доступность

Очень простой мониторинг доступности осуществляется с помощью команды ping, но тот факт, что сервер проверяет связь, не означает, что такие службы, как веб-сервер, доступны, поскольку он мог дать сбой. Более сложный мониторинг будет запускать тестовую транзакцию на веб-сайте каждый час, чтобы пользователи могли покупать продукты.

Дисковое пространство и использование

Метрика пространства очевидна, вам нужно знать заранее, прежде чем приложение перестанет работать. Часть использования немного сложнее. Использование будет показывать такие показатели, как чтение / запись байтов, количество операций ввода / вывода в секунду и т. Д. Они могут быть важны, потому что, если вы видите увеличение задержки сайта, коррелированное с падением производительности диска, возможно, вы разработали неисправный диск, требующий нескольких ищет или читает, чтобы удовлетворить запрос. Не забудьте также измерить использование inode - это показатель, о котором я забыл пару раз в OpenVZ.

Использование сети

Превышение предела пропускной способности вашей сети? Вы видите те же числа, что и ваш интернет-провайдер?

Использование памяти

Когда в системе начнется нехватка памяти, начнется подкачка. Это повлияет на производительность.

Использование процессора

ЦП загружен на 100% в часы пик? Возможно, вы сможете улучшить взаимодействие с пользователем, установив на сервере более быстрый процессор или большее количество процессоров. Умирает ли производительность из-за того, что ЦП должен обрабатывать столько прерываний сетевого контроллера? Может быть, пора вложить деньги в карту разгрузки TCP.

Лог-файлы

  • Журнал медленных запросов MySQL: запросы выполняются медленнее, чем ваш порог. Просмотрите этот файл и при необходимости улучшите. Если вы не можете их улучшить, а время запроса соответствует большой загрузке системы, возможно, пора обновить.

  • Файлы журнала приложения: что вы делали, вызывая всю большую нагрузку на систему? Просматривали ли большинство из них определенную страницу? Почему сегодня работает только половина загруженных пользователями файлов?

  • Файлы журнала Apache: знание чисел полезно для эффективности дизайна сайта, удобства использования, измерения рекламных кампаний, битых страниц или изображений и т. Д.

  • Файлы системного журнала: попытки взлома, аппаратные ошибки, различные сообщения демонов.

Обычно лучше всего иметь системные журналы для отправки на другой сервер, чтобы следы не могли быть закрыты.

Помимо этого, есть еще много вещей, которые можно отслеживать: количество транзакций в секунду, температура сервера, температура жесткого диска и SMART, статус RAID, отчеты о резервном копировании, статусы пакетных заданий,

Инструменты

Есть довольно много инструментов для выполнения некоторых из вышеперечисленных задач. Другие более конкретные метрики должны быть либо самокодированными, если они еще не доступны (отображение размера очереди qmail через SNMP - это одна из таких метрик, которую я собрал, потому что иногда qmail наполовину прерывается, все равно принимает новые электронные письма, но не отправляет их. ).

Некоторые из используемых мной инструментов, с которых вы легко можете начать:

  • Nagios или Icinga - Один из самых популярных инструментов мониторинга * nix. Довольно много инструментов мониторинга, таких как мониторинг подчиненного сервера mysql. Обычно я использую это специально для мониторинга доступности всех сервисов. Настройка отправки электронного письма на адрес электронной почты телефона для получения предупреждений. Icinga - это форк Nagios. Просмотрите через «команды» и посмотрите, какие из них можно использовать.
  • Мунин или собирать - Это дает вам графики. Легко настроить на CentOS. Настройте подключаемый модуль мониторинга MySQL для получения информации о базе данных, например об использовании буфера.
  • WebSitePulse - Имейте в виду, что мониторинг доступности лучше всего проводить удаленно. Я использую их мониторинг POP3, чтобы убедиться, что Nagios все еще работает с помощью созданного мной сценария.
  • AWStats - Преобразование файлов журнала Apache в отчеты.
  • Гугл Аналитика - Дополнительные сведения о клиенте, которых нет в общем журнале Apache, например, разрешение экрана и глубина цвета.

Вероятно, первая остановка будет vmstat, он сообщит вам различную информацию о виртуальной машине - не о виртуальной машине, как в vmware или VirtualPC и т. д., а о виртуальной машине ядра, которая контролирует память и системы ввода-вывода. Вы можете запустить vmstat с периодом обновления, например vmstat 1, который будет сообщать о состоянии виртуальной машины каждую секунду.