Вопрос или проблема
У меня установлена god
как минимум на десятке (или более) серверов, работающих под управлением CentOS 5.5 как в i386, так и в x86_64 версиях, которые работают безупречно. Я только что настроил два новых сервера CentOS 5.5 x86_64 и установил God, но получаю ошибку системы событий:
$ tail /var/log/god.log
E [2011-04-22 12:33:17] ERROR: Условие 'God::Conditions::ProcessExits'
требует систему событий, но ни одна не была загружена
$ god check
используется система событий: нет
[fail] система событий не загрузилась
$ uname -a
Linux server2.example.com 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
Я не могу найти ни cn
, ни netlink
модуль ядра на любом из моих серверов CentOS. Тем не менее у меня есть другие серверы, которые работают нормально:
$ god check
используется система событий: netlink
запуск обработчика событий
создание нового процесса
созданный процесс с pid = 17559
убиваем процесс
[ok] событие завершения процесса получено
$ uname -a
Linux server1.example.com 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
Все сервера работают под ruby v1.8.6-399:
# ruby -v
ruby 1.8.6 (2010-02-05 patchlevel 399) [x86_64-linux]
Ruby поставляется из репозитория ELFF:
# rpm -qi ruby
Имя : ruby Переносы: (не переносимый)
Версия : 1.8.6.399 Поставщик: Bravenet ELFF <[email protected]>
Выпуск : 2.el5 Дата сборки: Fri Apr 16 18:53:48 2010
Дата установки: Thu Mar 24 11:23:48 2011 Хост сборки: el-build.local
Группа : Development/Languages Исходный RPM: ruby-1.8.6.399-2.el5.src.rpm
Размер : 1738695 Лицензия: Ruby или GPLv2
Подпись : DSA/SHA1, Fri Apr 16 19:07:49 2010, Идентификатор ключа 551751dfe8b071d6
Упаковщик : Bravenet ELFF <[email protected]>
Я немного покопался и вижу, что исключение выбрасывается, когда God пытается загрузить обработчик событий Netlink:
не удается загрузить файл -- netlink_handler_ext
Что может быть не так между моими серверами? Я пропустил что-то простое?
netlink_handler_ext — это нативное расширение Ruby, которое является частью God. Похоже, что God не может загрузить это нативное расширение, либо потому, что оно никогда не компилировалось и гем никогда не устанавливался правильно, либо оно не было добавлено в его путь загрузки.
Используйте “gem env”, чтобы проверить вашу среду гемов, вы должны быть в состоянии найти, где установлен гем, и вручную проверить, присутствует ли нативное расширение или нет.
Ответ или решение
Ошибка системы событий God на CentOS: отладка и устранение неполадок
При установке и настройке системы мониторинга God на новых серверах CentOS 5.5 x86_64 вы столкнулись с проблемой, связанной с недоступностью системы событий. Давайте подробно разберем, почему возникает ошибка «Event System Not Found», и как её можно устранить.
Описание проблемы
Отладочные логи показывают, что происходит ошибка при загрузке обработчика событий netlink
. Сообщения из логов указывают на следующие моменты:
-
Ошибка Condition ‘God::Conditions::ProcessExits’: проблема в том, что God требует систему событий, но не может её загрузить:
ERROR: Condition 'God::Conditions::ProcessExits' requires an event system but none has been loaded
-
Проверка событийной системы:
using event system: none [fail] event system did not load
-
Отсутствие модулей
cn
илиnetlink
: на новых серверах отсутствуют необходимые модули, которые были найдены на старых серверах.
Причины проблемы
Судя по всему, основная проблема заключается в том, что расширение netlink_handler_ext
, необходимое для работы системы событий God, не загружается. Это может быть вызвано:
- Неправильной установкой God и его зависимостей.
- Отсутствием или неправильной компиляцией нативного расширения
netlink_handler_ext
.
Решения
-
Проверка установки Gem и его зависимостей:
Используйте командуgem env
, чтобы узнать, куда установлены ваши гемы. Вам необходимо проверить, присутствует ли нативное расширениеnetlink_handler_ext
в том каталоге, где установлен God.gem env
Обратите внимание на параметры
INSTALLATION DIRECTORY
иGEM PATHS
. Убедитесь, что в этом пути есть папка дляnetlink_handler_ext
. -
Переустановка God:
Если оказывается, что нативное расширение отсутствует, попробуйте переустановить God. Для этого выполните следующие шаги:gem uninstall god gem install god
Убедитесь, что установка завершилась успешно и никаких ошибок не возникло.
-
Проверка наличия Ruby Development Kit:
Убедитесь, что у вас установлен пакетruby-devel
, который необходим для компиляции нативных расширений. Вы можете установить его черезyum
:sudo yum install ruby-devel
-
Сборка расширения вручную:
Если проблема сохраняется, возможно, потребуется вручную собрать расширение. Найдите исходный кодnetlink_handler_ext
в репозитории God и выполните:cd /путь/к/netlink_handler_ext ruby extconf.rb make make install
-
Сравнение конфигураций серверов:
Обратите внимание на возможные различия между рабочими и проблемными серверами. Проверьте версии зависимостей, конфигурации среды и права пользователя, под которым запускается God.
Заключение
Ошибка загрузки системы событий God часто связана с отсутствием нативного расширения или неправильной установкой. Следуя рекомендациям по проверке и переустановке расширений, вы сможете быстро устранить проблему. Если ошибки все еще возникают, стоит проверить все зависимости и конфигурации сервера более детально.
Если у вас есть дополнительные вопросы или требуется дальнейшая помощь, не стесняйтесь обратиться за помощью к сообществу или профессионалам в этой области.