为什么 ELB Health 守护进程不使用本地时区

问题描述 投票:0回答:1

每 5 秒 /var/log/healthd/daemon.log 写入文件不存在的日志。 文件存在,但 nginx 使用本地时区命名它,守护进程尝试使用 UTC 时区。 所有时区文件更改为 LA 区域。

为什么守护进程尝试使用 UTC 时区搜索文件?

W,[2020-02-16T10:29:53.494828 #3644]警告--:日志文件“/var/log/nginx/healthd/application.log.2020-02-16-18”不存在

nginx amazon-elastic-beanstalk
1个回答
0
投票

我知道这是一个老问题,但我遇到了同样的问题,这很痛苦,网上没有太多文档或解决方案。

背景

我在将 ElasticBeanstalk 环境从 Amazon Linux 2 迁移到使用 Apache/PHP 运行的 Amanzon Linux 2023 后遇到了此问题。

服务器托管在 eu-west-3(巴黎)上,在这种情况下,AWS 服务器似乎使用“欧洲/巴黎”时区而不是 UTC。 您可以使用

timedatectl
命令查看。 使用 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/change-time-zone-of-instance.html 更改时区不起作用。

为什么?

问题来自于如何创建 Apache 日志文件以供 healthd.service(报告 ElasticBeanstalk 增强运行状况监控的服务)使用。 Apache 正常在

/var/log/httpd/access_log
/var/log/httpd/error_log
中生成访问日志,但格式与运行状况要求不兼容,因此 AWS 需要创建一个
CustomLog
Apache 指令 (https://httpd.apache.org/docs/2.4) /fr/mod/mod_log_config.html#customlog)以正确的格式创建日志(有关更多信息,请参阅:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-serverlogs。 html)。

这就是

/etc/httpd/conf.d/elasticbeanstalk/healthd.conf
文件的作用,其中应该包含:

LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600" healthd

要生成日志并每小时轮换日志文件,请使用

rotatelogs
,请参阅文档 https://httpd.apache.org/docs/2.4/en/programs/rotatelogs.html.

问题是

rotatelogs
始终 使用
UTC
时区,无论如何。

因此,AWS healthd.service 搜索日志文件的时间为“欧洲/巴黎”时区的小时,我们有一个使用 UTC 时区的小时生成的日志文件。

回答

rotatelogs
有一个偏移选项,旨在为 UTC 时间添加偏移,这正是我们想要的。

只需在文件夹

z_healthd.conf
中添加文件
.platform/httpd/conf.d/elasticbeanstalk/
即可添加 httpd 配置(请参阅 https://docs.aws.amazon.com/fr_fr/elasticbeanstalk/latest/dg/platforms-linux-extend.proxy。 html):

LogFormat "%{%s}t\"%U\"%s\"%D\"%D\"%{X-Forwarded-For}i" healthd
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/healthd/application.log.%Y-%m-%d-%H 3600 +120" healthd

请注意,偏移量

+120
与时区
Europe/Paris
一起使用,因为它是
UTC+2
时区,请根据您的需要进行调整。

创建

z_heathd.conf
文件是我发现覆盖
health.conf
中的Apache配置的唯一方法,无法直接通过
files
更改文件,也许可以使用脚本,但这意味着需要重新加载Apache,这如果流量已重新转发到它以执行运行状况检查,则可能会在部署后造成停机。

希望它会对您的奋斗有所帮助,祝 AWS EB 一切顺利!

© www.soinside.com 2019 - 2024. All rights reserved.