Ke hoʻohana nei mākou i kahi script prerotate e hoʻouka i kā mākou mau kikowaena kikowaena i kahi bākeke S3 ma AWS. Eia ka script logrotate:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0644 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi
/usr/local/bin/upload_log_to_s3.sh $1
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Loaʻa i ka papa kuhikuhi nginx kahi faila ssl_access.log a me kahi faila access.log (no ka https a me http kaʻi pākahi). Makemake mākou i nā lāʻau ʻelua. Ke hoʻāʻo wau e holo i logrotate -f
me ka faila config, eia naʻe, ʻike wale wau i ka log mua, access.log, ke hana ʻia. Makemake au e hoʻouka pū ʻia ka ssl_access.log akā ʻo ka script upload_log_to_s3.sh
holo ʻekahi wale nō a loaʻa ke ala access.log wale nō. ʻIke wau i ka faila ssl_access.log e hoʻohuli ʻia nei no ka mea ke holo wau me lovotate me -v, hāʻawi mai iaʻu i kēia hopena, ʻoi aku ka pīhoihoi:
empty log files are not rotated, old logs are removed
considering log /var/log/nginx/access.log
log does not need rotating
considering log /var/log/nginx/error.log
log does not need rotating
considering log /var/log/nginx/ssl_access.log
log needs rotating
ʻO nā mea āpau aʻu e heluhelu ai e hōʻike nei i ka script prerotate holo hoʻokahi no kēlā me kēia faila i hoʻopaʻa ʻia na / var / log / nginx / *. log
akā ʻaʻole kēia ka hana aʻu e ʻike nei. Ke nalo nei paha wau i kekahi mea?
Итак, как идиот, я только что понял, что оставил в sharedscripts
в конфигурации logrotate, что почти наверняка является причиной того, что сценарий prerotate запускается только один раз. Не совсем уверен, почему access.log - это файл, который загружается (согласно справочной странице первый параметр изменяется в glob, а не первый найденный файл?), Но, по крайней мере, я знаю основную причину.
Я ухожу этот ответ здесь, чтобы другие могли извлечь выгоду из моей ошибки.