Вопрос или проблема
У нас есть несколько серверов на Linux, и они зависают (не реагируют), но не останавливаются. Как я могу справиться с такими серверами? Неясно, что вызывает эту зависание. Буду признателен за любые рекомендации.
Проблемы:
- Сервер периодически зависает. Он не останавливается, он просто зависает. Теоретически он всё ещё работает, но на практике перестает функционировать. Один из способов отследить это — мониторить логи, вы бы заметили, что логи больше не выводятся.
Причина: Неизвестно
- Сервер периодически отключается, слишком часто на некоторых серверах.
Причина: Огромный размер логов
Решение: logrotate
- Сервер периодически отключается, слишком часто на некоторых серверах.
Причина: Неизвестно
Решение: Скрипт, который автоматически перезапускает сервис в нужное время. Хотя у меня есть небольшие надежды, что это сработает.
- Клиенты хотят иметь возможность сами мониторить эти сервисы и перезапускать их. Какой лучший инструмент мониторинга, который также позволяет перезапускать сервисы (т.е. что-то, что выполняет скрипты по моему желанию)?
Используются ли для этой цели nagios, zabbix, monit? Какой лучший инструмент для этой цели?
Мы используем CentOS 7 (да, он близок к завершению срока службы). Серверы размещены на виртуальной машине. У нас есть только удалённый доступ. Приложения:
-
java-серверы
-
серверы glassfish
-
серверы tomcat
Да, для этой цели используются nagios и т.д. Вы можете попросить nagios, например, регулярно отправлять HTTP-запрос на конкретный URL проверки работоспособности, и он уведомит вас (по электронной почте, SMS и т.д.), если не сможет подключиться. Это работает, регулярно опрашивая некоторые порты или данные с серверов и также низкоуровневые компоненты, и имеет концепции, такие как сервер, находящийся за какой-то сетью, поэтому, если сеть пропадает, сервер не будет помечен как “красный” (что не имеет смысла, если сервер недоступен для nagios).
Поскольку вы упоминаете, что не знаете причины некоторых из ваших проблем, позвольте мне предложить другое программное обеспечение:
Prometheus для сбора метрик. “Метрики” — это такие вещи, как “этот веб-сервер обслужил 100 страниц за последний час с средней задержкой ответа 100 мс”. Он выступает в качестве центральной базы данных для этих и многих других метрик — для веб-серверов, Linux-хостов и так далее; включая пользовательские метрики, которые ваши разработчики могут программировать сами.
Grafana как инструмент визуализации для метрик, хранящихся в Prometheus. Вы можете настраивать все виды панелей мониторинга в реальном времени, как вам угодно. Вы также можете легко проверять исторические данные на тех же панелях. Это может помочь значительно, если у вас есть неизвестные причины — возможно, ваш сервер Linux просто исчерпал оперативную память, или он показывал 100% загрузку ЦП в течение часа перед каждым сбоем и так далее.
Эти два инструмента дают вам Мониторинг.
Затем вы также можете задуматься о вложении в стек Логирования. Популярным вариантом является ELK стек (ElasticSearch – Logstash – Kibana). В этом случае ElasticSearch выполняет роль управления данными / базы данных, logstash отвечает за ввод данных, а Kibana — за запросы и визуализацию. Есть альтернативные решения, например, вы можете использовать fluentd вместо logstash, если это вам больше подходит.
Говоря об этом: поскольку вы пишете о довольно небольшой серверной среде, любой из этих инструментов более чем способен удовлетворить ваши потребности. Вы действительно можете немного полагаться на свои предпочтения; возможно, вы хотите что-то строго с открытым исходным кодом или бесплатное; возможно, вы предпочитаете что-то с лицензией на платной основе (и коммерческой поддержкой), и т.д.
Стек логирования дает вам а) централизованное хранилище для всех логов всех ваших компонентов. Вам больше не нужно иметь гигабайты памяти на каждом отдельном веб-сервере; логи обычно передаются в стек в реальном времени. Особенно полезно, если сервер дает сбой, и вы каким-либо образом теряете файлы логов… И б) он предоставляет вам центральный интерфейс для просмотра всех ваших логов. Это позволяет очень легко получить все логи от разных компонентов за заданный промежуток времени и значительно облегчает обнаружение возможных связей между различными компонентами, которые могли вызвать проблему.
Ответ или решение
Для эффективного мониторинга ваших серверов под управлением Linux и выявления причин их зависания, рекомендую рассмотреть несколько подходов и инструментов мониторинга.
1. Использование систем мониторинга
Nagios и Zabbix — это традиционные системы мониторинга, которые подойдут для ваших задач. Эти инструменты могут регулярно выполнять запросы на HTTP к определённым URL-адресам для проверки состояния приложений и серверов, а также могут отправлять уведомления о сбоях (например, по электронной почте или SMS).
- Nagios: Позволяет настраивать различные плагины для проверки состояния сервисов и может быть легко расширен для выполнения пользовательских сценариев.
- Zabbix: Имеет более современный интерфейс, поддерживает управление временными метками и может автоматически восстанавливать сервисы при возникновении проблем.
Monit также может быть полезным: это инструмент мониторинга, который позволяет не только отслеживать состояние сервисов, но и автоматически перезапускать их в случае их падения.
2. Сбор и мониторинг метрик
Для более глубокого анализа причин зависаний целесообразно использовать Prometheus в сочетании с Grafana. Prometheus будет собирать метрики с ваших серверов и приложений, а Grafana поможет визуализировать эти данные.
- Prometheus: Собирает метрики в режиме реального времени и может хранить данные в течение длительного времени, что позволит вам анализировать историю работы серверов и выявлять аномалии.
- Grafana: Позволяет создавать информативные и настраиваемые дашборды, упрощая визуализацию состояния ваших приложений.
3. Анализ логов
Рекомендую вам внедрить решение для централизованного хранения логов, такое как ELK Stack (Elasticsearch, Logstash, Kibana).
- Elasticsearch: Хранит и индексирует ваши логи.
- Logstash: Служит для сбора и обработки логов из различных источников.
- Kibana: Предоставляет интерфейс для анализа и визуализации логов.
С помощью ELK Stack вы сможете собирать логи со всех ваших серверов и быстро находить причину зависания приложений путем анализа взаимосвязей между событиями.
4. Автоматизация восстановления
Создание скриптов для автоматического перезапуска сервисов в случае их падения — это хороший подход, но важно также вести учёт состояния системы. Это можно сделать с помощью механизмов мониторинга и уведомлений, которые будут предупреждать администраторов о повторяющихся проблемах.
Также следует продумать логику перезапуска — возможно, стоит использовать небольшие задержки или проверку состояния перед тем, как пытаться перезапустить.
Заключение
Объединив перечисленные инструменты и подходы, вы сможете не только следить за состоянием серверов и приложений, но и анализировать причину зависаний, что поможет наладить стабильную работу системы. Удачи вам в реализации!