Данные Rsyslog, сдвигаемые по битам в Linux в AWS - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть десятки c4.xlarge HVM CentOS 6 Linux экземпляров, работающих в AWS. Они являются частью распределенной измерительной сети, которая собирает данные и направляет их в центральное место с помощью rsyslog. Все экземпляры работают в одном и том же VPC, и это плоская сеть / 24. Версия rsyslog, которую я использую, - 8.36.0-2, и я использую протокол системного журнала, а не RELP или TLS или любой другой из более интересных транспортных протоколов, которые поддерживает rsyslog. Каждый измерительный узел передает десятки событий в секунду в центральный коллектор. Все это прекрасно работает, за исключением того, что раз в 3-4 месяца данные измерений в небольшом количестве экземпляров будут искажаться из-за сдвига одного или нескольких битов на один символ. Например, одно из полей данных, которые эти экземпляры передают центральному сборщику, включает имя хоста экземпляра. Этот экземпляр называется «tagserver-prod-us-west-2-i-0d16b7e4c51e85697.internal.domain», но вот ошибочные значения, которые он использовал для имени своего хоста, когда эта проблема возникала в течение 15 минут:

tagserver-ppod-us-west-2-i-0d16b7e4c51e85697.internal.domain
tagserver-prod-uq-west-2-i-0d16b7e4c51e85697.internal.domain
tagserver-prod-us-west-0-i-0d16b7e4c51e85697.internal.domain
tagserver-prod-us-west-2-i-0d14b7e4c51e85697.internal.domain
tagserver-prod-us-west-2-i-0d16b5e4c51e85697.internal.domain
tagserver-prod-us-west-2-i-0d16b7e4a51e85697.internal.domain
tagserver-prod-us-west-2-i-0d16b7e4c51e85697.internal.domain
tagserver-prod-us-west-2-i-0d16b7e6c51e85697.internal.domain
tagserver-prod-us-west-2-i-0f16b7e4c51e85697.internal.domain
tagserver-prod-us-wgst-2-i-0d16b7e4c51e85697.internal.domain
tagserver-prof-us-west-2-i-0d16b7e4c51e85697.internal.domain
tagserver-rrod-us-west-2-i-0d16b7e4c51e85697.internal.domain

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

r -> p
s -> q
2 -> 0
6 -> 4
7 -> 5
a -> c
d -> f

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

Я немного затрудняюсь определить, где происходит это смещение битов. Я просмотрел журналы своего ядра и системные журналы, пытаясь сопоставить времена, когда сдвиг битов происходил с какой-то проблемой с системой, но не смог ничего найти, все остальное в системе, кажется, работает нормально. Я читал, что сдвиг битов может происходить из-за плохой памяти, но, насколько я понимаю, все оборудование в AWS работает с памятью ECC, что должно предотвратить это из-за неисправной памяти. Есть ли что-то в Linux или rsyslog, на которое я должен обратить внимание, чтобы определить причину этой проблемы или предотвратить ее повторное появление? Я читал, что в Linux есть модуль ядра под названием EDAC, который может помочь обнаружить ошибки памяти, но я не уверен, что он будет функционировать в виртуальной машине, я считаю, что ему потребуется прямой доступ к физической памяти. У кого-нибудь есть какие-либо предложения относительно того, что может быть причиной этой проблемы или где мне следует сосредоточиться на устранении неполадок?

...