Почти каждый раз, когда syslog-ng записывает в текущий файл журнала, он обращается к файлу журнала за 6 дней до этого. Он не записывает никаких данных в старые файлы журналов, а просто обновляет их последнюю измененную метку времени. Скриншот файлов журнала
Я не уверен на 100%, почему он перестал обновлять последнюю измененную метку времени файлов от 26-го и 27-го числа незадолго до полудня за последние два дня, но я думаю, что это может быть просто совпадением. Я перезапустил службу syslog-ng и службу syslog хоста VMware примерно в это же время в последние два дня, и это могло остановить обращение к старым файлам. При этом я снова перезапустил службы сегодня утром, и это все еще происходит.
В настоящее время мы собираем журналы с 24 хостов VMware. Файлы журнала каждого хоста хранятся в отдельном каталоге с новым файлом каждый день. Это происходит только с файлами журнала с одного хоста. Все имена хостов очень похожи (group1-esx01… 08, group2-esx01… 08, group3-esx01… 08), поэтому не похоже, что проблема фильтрации объясняет, почему это происходит только с журналами, расположенными в одной папке. .
Мы используем файл syslog-ng.conf по умолчанию и помещаем наши конфигурации в один файл, расположенный в каталоге conf.d. Этот файл выглядит так:
#Global network listener
source s_network {
network(
ip("1.1.1.1")
port(1514)
max-connections(100)
transport("tls")
tls(
key_file("/etc/syslog-ng/cert/PrivateKey.pem")
cert_file("/etc/syslog-ng/cert/PublicKey.pem")
peer_verify(optional-untrusted)
)
);
};
#VMware
#Dir for each host, file for each day.
destination d_vmware {
file(
"/var/log/vmware/$HOST/$YEAR$MONTH$DAY.log"
perm(0644)
create_dirs(yes)
);
};
#Only get data from machines who's hostname starts with the prefixes of the various blade groups.
filter f_vmware {
host("group1-esx*" type(glob)) or
host("group2-esx*" type(glob)) or
host("group3-esx*" type(glob));
};
#From global listener to VMware dest
log {
source(s_network);
filter(f_vmware);
destination(d_vmware);
};
Я считаю, что найти кого-то, кто сталкивался с этим раньше, - довольно долгий путь. Однако я надеюсь, что кто-то хотя бы знает, с чего начать.
Спасибо за ваше время.
Редактировать: Быстрое обновление, в 12:12 в файле 20170728.log перестала обновляться последняя измененная метка времени, а в файле 20170729.log началось обновление последней измененной метки времени.
С тех пор я установил неизменяемость 20170729.log и получаю сообщение «Отказано в разрешении» при попытке прикоснуться к файлу как root, как и ожидалось. Однако время последнего изменения все еще обновляется! Я также не вижу сообщений syslog-ng об ошибках. Странные вещи.
Edit2: Я нашел решение! По умолчанию syslog-ng использует метку времени в сообщениях, которые он получает, как метку времени записи журнала, что имеет смысл. Таким образом, была большая вероятность, что проблема заключалась в отправке хостом сообщений журнала на сервер syslog-ng. Я думаю, что он регулярно отправлял пустое сообщение с неправильной датой в метке времени. В любом случае, вместо того, чтобы углубляться во все, что может генерировать сообщения журнала в ESXi, я просто перенес виртуальные машины с затронутого хоста и перезагрузил его. Кажется, что на данный момент проблема решена, и для меня этого достаточно, поскольку мы заменим этот набор серверов в ближайшем будущем.