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

Ведение журнала сервера выходит из строя, и некоторые системные службы умирают до полной перезагрузки

Суть нашей проблемы в том, что мы теряем доступ по ssh к нашему VPS, и наши файлы журналов перепутываются. Жесткая перезагрузка через веб-консоль нашего хостинг-провайдера, похоже, все исправляет, но проблема повторяется.


Подробнее

Похоже, это происходит случайно, примерно раз в две недели. Симптом, который мы обычно замечаем первым, заключается в том, что мы не можем войти в систему через ssh; как ни странно, сервер по-прежнему запрашивает пароль, но никогда не позволяет нам войти в систему. Apache продолжает работать, но другие системные службы также умирают.

Во время «событий ошибки» мы получаем массу случайного мусора во всех наших файлах журнала (все в / var / log, а также журналы виртуального хоста Apache и другие). Мусор содержит много нулевых байтов, некоторые вещи, похожие на двоичный код Unicode, большие блоки случайных ASCII, части других файлов журнала и css / javascript (см. Примеры ниже). Кажется, что он записывает буферный кеш в открытые в данный момент файлы, но я понятия не имею, почему и даже как это могло произойти. Fedora использует syslogd для ведения журнала, но мне не удалось найти там очевидных проблем.

Наш сервер - это VPS под управлением Fedora 12. В его основные обязанности входят Apache, Postfix и ssh. Сайты, которые обслуживает Apache, используют PHP / MySQL (в последний раз я установил патч Suhosin на случай, если это странная атака переполнения буфера или что-то подобное).

У нас есть безопасные пароли для наших пользователей ssh ​​/ htpasswd, и журналы (части, которые мы все равно можем прочитать) не указывают, что наш сервер был взломан «изнутри».


Примеры загруженных файлов журнала

Вот отрывок из нашего журнала cron. У этого есть куча нулевых байтов и других двоичных данных, но, как упоминалось выше, некоторые другие файлы содержат ASCII и / или фрагменты других файлов:

Sep 23 03:05:01 HostName CROND[3208]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:05:01 HostName CROND[3209]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:10:01 HostName CROND[3792]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 03:10:01 HostName CROND[3795]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:10:01 HostName CROND[3793]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:15:01 HostName CROND[4414]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:15:01 HostName CROND[4415]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:20:01 HostName CROND[5000]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 03:20:01 HostName CROND[5001]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:20:01 HostName CROND[5003]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:25:01 HostName CROND[5590]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:25:01 HostName CROND[5591]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:30:01 HostName CROND[6175]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:30:01 HostName CROND[6174]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 03:30:01 HostName CROND[6176]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:35:01 HostName CROND[6763]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:35:01 HostName CROND[6764]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 03:40:01 HostName CROND[7347]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 03:40:01 HostName CROND[7349]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 03:40:01 HostName CROND[7350]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^$


����.]������^[�Z��� ��H*[ݬ^T�՜^F�Ük֜�՜0�|��Ԝ0��5�֜+�^\J̜aMݺu3^]�'M��I�&�[�n^Vdz�&""^RȳZ�uݳݳʳ��۳g:h��;�5^U;k�j�C��Rj�C ^Zv��Ρġ^\֡T]]���2^@@aa!���Q^^nq�]v֛7oƚ5k`4^Z1^?�|^D^E^E!22^R���P�TX�n��aޚwbgM$
^KQ�����l4U�;���e��v�� 7u֯7oޯDVV^V j5������^O�Vk���5^Q^QI%���ͱ�α�ƍ^[�� ^O􁏏z=BBB���^L^@HIIAHH�ŁZ^����9䁏^[/��9䁏�၏�^y灏Pb^Nk2^X^Lȁ́́DJJ
RRR���^E��`q�]v֛7oƇ^_~^H�ш ^{^MAAA�7o^^T*^U����v�Zx�vψ ;��&""���9k777t�ވ^]^@p��E���`����ƈوug���ψ��ѣ8v�^X"""����={�`ǎ^]ؽ{�Ž^C5�νZν^Z��o��^Z搷�^]��s(1�5ՐԐԐ�ېې^[NNNprr���Oː묛��5^Q^QIŬ笛Y7^Sv֬�լ0$
�֭����٭zv֭DD$^U�g-PFF��Wdd$����!&&^F^Q^Q^QHMMEDD^D���-ֳ����9�^[/��9��aG*�^\J̳aM��eݭ[7������s��yDGGc۶m�ѣ^GN�<��^];���^P���У�tf�أY^S^Q�T�f-Rtt4ޣ~�m888@�ףãݣݣ^]^@�V�Q\\|ף���"�$$��ң%���^B���^Z�Fԣx^@$
�N^G�N���0��� ,,^Lyyy^V��Y�W�^\���R�^\�ְ#�w^N%氦�gX߰��^V�<밦尦˗×h4bɒ%HJJBZZ^Z*++1~�x̚5^K���HII��M�,ֳ�&"")��9볦ʳʳJ^\<x^P���P�T8q⳦^D^^~� zc춳� �쫯�ϫ^B^@�~�i�髯O^?Bjj*«ëë^A^@   Hk૯_K쫯�嫯�a^N�ƫK�a$
����6m^Z�n݊�{�"11ъl=�Y^S^Q�T�7�@�W�Ɗܹs1nܹ8DFFb���CRR^R�L���^[7"66 b=�YˈWÈ^\ ��RÈ^\  �Z��s(1�-و]g݈T쬉�H*v֬̈́��|5̄!߄x)5̄!o^M;Ry焉Pb^N[bgMDD$^P;넉f^Ä΄Z�^Z愉�o��^Z搷�^]��s(1�-��&""^R���̪���Ӫ骷p� e^@@nn��$
6m�d���5^Q^QI��κW�^X�z5


^P^U^U���^@�={^Vyyy6;P^C�/���C�^N����ǰað�ӰO?!55^U���^@���p�5��%vְ�հ0�|�� 0��5�H��C�9l��7�988�ٰg�ŢE�����b��͢0^Z�͵6������˵/#//^O�f͵µ���� ����^N^@P�յ(..�����^H%              p6^XP��
^@������^Z^O^@]~;^M/t<jkE���.�`^N����Ď/MM�Kp0s؎q^NCa!J^R^RP����f�4��_~�?���pvvƎ�ի1a«^D� ^_;v��^[o�^A__ f_��***Э[78;;#++^Kj�^ZEEE����V�5[^S^U^U���x�sh4^ZѭYŭ֔���%8X֔9��9䘣�䘣�R#e^N�Y�CY9^@ؘ옣4�$
�֭����٭:v֭DD$^U;k^Q����r�J���^A^@bbb^P^Q^Q�  TDDD ::ڭb-;k�j�C��Rj�Cޭ^Zv��Ρġ^\�dw���`��9s�t�R^L^\8^P%%%���¡ɓ'ѱcG^T^V^V±߱߱^_:�αl=;k""����@˖-CDD^D|||Lۖ�z=ܖݖݖ^A^@j�^ZŖŖŖwՖՖ^T^U�$!^A��.�zظF�^Q�и�ܸm۸D��$
^@������^Z^O^@]~;^M/t<jkE���.�`^N����Ď/MM�Kp0s؎q^NCa!J^R^RP����fw��븺���d///deeA�V���^H���иj�f뢢�^P^_^_/x^^�F^C___Qk^S[S��^F� `Y碢`^N梢�c���CJ��9Ģfa^Ne墢^@`�Ӣ -⢢`=s梢L���cڴiغu+� ċċD�u�fMDD$
^K^K���o�9.\�`��Mk�j�Y7�M�6pr����e˖!""^B>>>�Y�^D�r8;;���_F^^^^f͚����ۚhu^Ù˙q�^Ù^E|�ə'� ^SF�^\�+W�ةhu^Ù˙Q'::^Zo����^OԀ�^\+W�Āرc1nܱ8�8C^@�ϱ2p�@|�ٱg����DZ^_^?�^[7nرhu±^M^[6^L>>>8~�8�y�^Yıűű5x�(�2��$
Sep 23 20:11:21 HostName crond[1077]: (CRON) INFO (running with inotify support)
Sep 23 20:15:01 HostName CROND[1578]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:15:01 HostName CROND[1579]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:20:01 HostName CROND[2192]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 20:20:01 HostName CROND[2193]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:20:01 HostName CROND[2194]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:25:01 HostName CROND[2841]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:25:01 HostName CROND[2843]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:30:01 HostName CROND[3432]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:30:01 HostName CROND[3433]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:30:01 HostName CROND[3436]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 20:35:01 HostName CROND[4022]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:35:01 HostName CROND[4023]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:40:01 HostName CROND[4671]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:40:01 HostName CROND[4672]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:40:01 HostName CROND[4675]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)
Sep 23 20:45:01 HostName CROND[5288]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:45:01 HostName CROND[5289]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:50:01 HostName CROND[5929]: (munin) CMD (test -x /usr/bin/munin-cron && /usr/bin/munin-cron)
Sep 23 20:50:01 HostName CROND[5930]: (user1) CMD (/path/to/development.domain.com/public/protected/yiic serverState)
Sep 23 20:50:01 HostName CROND[5928]: (root) CMD (/usr/lib64/sa/sa1 -S DISK 1 1)

И вот отрывок из журнала application.log нашего сайта (мы используем Yii Framework, и здесь происходит ведение журнала на уровне приложения). Он включает в себя фрагменты других файлов (файлы журналов, метаданные svn и т. Д.), Двоичные данные, ASCII и т. Д.


Кто-нибудь видел что-нибудь подобное?

Здесь много неизвестного, но я думаю о сбое файловой системы.

У запущенного демона может быть достаточно вещей, кэшированных в оперативной памяти, чтобы принять соединение, но не завершить полную аутентификацию.

Перепутанные файлы - сильный индикатор того, что файловая система (или ее восстановление) выходит из строя. Это могло быть вызвано программным обеспечением (экспериментальное ядро ​​/ файловая система / ...) или оборудованием. Я склоняюсь к последнему. Запустите правильную проверку файловой системы и аппаратный тест на диске (плохие блоки, и пока вы на нем, запустите memtest86, если можете).

Кроме того, вы должны учитывать, что это копирование файлов не может ограничиваться файлами журнала. Это также может быть в коде или в базах данных. Я рекомендую вам проверить, везде ли актуальны данные ...

Что касается странностей с файловой системой, ваши симптомы кажутся именно такими, как нехватка оперативной памяти. SSH выдает приглашение, поскольку он уже запущен, но поиск памяти для запуска нового процесса происходит медленно. А системные сервисы отмирают, потому что их запускает OOM-убийца. Есть ли ссылки на это в журналах?

Есть ли у вас какие-либо показатели использования памяти или загрузки системы, желательно записанные извне на проблемную машину?

Также было бы чрезвычайно полезно иметь удаленное ведение журнала - тогда вы могли бы увидеть, не перезаписываются ли какие-либо важные подсказки из-за повреждения файла. Fedora использует rsyslogd, а на сайте rsyslog есть инструкции по безопасной настройке.