Я видел много инструментов мониторинга и в основном показывал одно и то же. Но мне интересно, действительно ли нужно смотреть все это.
Я хотел бы знать, какие показатели действительно имеют значение, например, веб-сервер, на котором в основном работает веб-сайт, с PHP-FPM, Nginx и MySQL.
Кроме того, я изучаю графики, но как их понять и проанализировать, чтобы предотвратить будущие неудачи?
Имеют значение те показатели, которые:
Какие показатели важны для вас, зависит от того, какие, по вашему профессиональному мнению, показатели, которые лучше всего соответствуют этим двум критериям. Если у вас нет опыта, чтобы точно оценить это заранее, Ну, да. Лучше собрать больше данных, которые вам никогда не понадобятся, чем не собирать те данные, которые вам понадобятся позже. (Предостережение заключается в том, что если ваш мониторинг начинает мешать эффективной работе службы, вам может потребоваться немного его уменьшить или оптимизировать сбор статистики).
Если вы ищете краткий ответ, боюсь, у меня его нет - вы находитесь на крутом этапе обучения, который затрагивает самую суть того, что значит быть системным администратором. Если вы оказались в ситуации, когда время простоя не имеет значения, отлично! у вас есть прекрасная возможность учиться. Если вы собираетесь в конечном итоге получить иск или выйти из бизнеса, если эта служба не будет работать идеально, вы можете найти кого-то с большим опытом, чтобы дать вам индивидуальное руководство и наставничество.
Я только что написал и опубликовал руководство именно по этой теме:
Позвольте мне подвести итог: есть 3 основные цели, о которых следует думать при мониторинге любой производственной системы:
И вы хотите сделать это, выбрав свои показатели в соответствии со следующей структурой:
Каждое развертывание будет немного отличаться, так что YMMV, но это структура, которую используют многие опытные профессионалы, чтобы думать о вещах (будь то явные или нет).
[Редактировать для раскрытия информации: я связан со Scalyr, компанией, которая участвует в этой сфере, и ссылка выше опубликована на их сайте]
Самый простой - следить за объемом загрузки ЦП, свободной памяти и подкачки, дискового пространства, дискового ввода-вывода и ввода-вывода сети / полосы пропускания. Это можно сделать с помощью таких инструментов, как munin или collectd. Некоторым людям нравится контролировать много вещей, но если вы будете простыми, по крайней мере, вы сможете получить общую картину. Я также рекомендую вам настроить инструменты мониторинга на отправку вам предупреждений по электронной почте, когда что-то пойдет не так (например, с использованием «пороговых значений» или чего-то подобного).
Еще одна очень полезная вещь - следить за наиболее важными журналами сервера на предмет чего-либо необычного, например, сообщений об ошибках или, возможно, даже предупреждений. Но такие сообщения могут быть очень распространенными в зависимости от того, как настроено программное обеспечение для ведения журнала. Обычно у демонов есть файл конфигурации, в котором вы можете изменить "LogLevel" с ошибки (= регистрировать только когда что-то сломано) на отладку (= регистрировать что-либо). Проверьте, какие демоны у вас запущены на вашем сервере, и измените уровни журнала на ошибку или предупреждение. Затем вы можете установить инструмент анализа файлов журнала, такой как OSSEC, и научить его молчать, когда определенные вещи допустимы, в то время как он должен предупреждать, когда что-то сломано. Эти предупреждения могут быть отправлены вам по электронной почте.
Для ваших конкретных сервисов Nginx и Mysql я рекомендую вам следить за их временем отклика. Это хорошо по двум причинам: если вы вообще не получаете ответа, значит, что-то не работает. И если вы получите ответ, указывающий на необычно высокое время отклика - особенно если оно не временное, а в течение, скажем, нескольких минут или часов - тогда служба испытывает трудности.
Я бы порекомендовал вам взглянуть на collectd. Его можно настроить для записи множества измерений в файлы RRD для последующего анализа. Он требует очень мало процессора и поможет вам понять, как ваша производительность изменяется с нагрузкой.
Я не нашел действительно потрясающего инструмента для рисования графиков из сгенерированных RRD, но если вы не хотите проецировать их в реальном времени, обычно достаточно просто использовать rrdgraph в командной строке, чтобы периодически проверять наличие больших изменений.
Отличный совет выше. Но если вам действительно просто нужно начать, сначала ознакомьтесь с основами: использование ЦП с течением времени, использование памяти с течением времени, использование полосы пропускания и использование дискового пространства (или свободного дискового пространства). Эти четыре очень распространены, потому что они в значительной степени определяют возможности компьютера.
После того, как вы некоторое время наблюдаете и узнаете, что такое «нормально» для сервера, вы сможете определить, когда что-то не в порядке. Вот когда вы готовы начать копать глубже и выяснить «почему» - что потребует дополнительного более конкретного мониторинга :)