请记住,12 因素主要适用于您的应用程序,或者我们称其为您的“微服务”,而不适用于您的服务器,如 Nginx、Apache、Cherokee 等,它们可以像往常一样记录,但您的应用程序是您可能想要的规模,并将部署在分布式环境中,因此,需要以不同的方式处理。
关于日志记录,主要思想是避免应用程序写入磁盘而只写入STDOUT
or STDERR
,通常日志是“结构化日志记录”格式,然后由 elastiksearch 等工具收集/分析。这些简化了检查日志的过程,因此如果出现问题,您无需登录每台服务器并检查正在发生的事情。
在很多情况下,应用程序将日志写入磁盘时,如果没有正确配置日志轮转机制,可能会导致服务器磁盘已满,从而导致服务中断。
如果您正在寻找与12factor配合得很好的主管。
十二因素应用程序进程不应守护或写入 PID 文件。相反,依靠操作系统的进程管理器(如 Upstart,云平台上的分布式进程管理器,或开发中的 Foreman 等工具)来管理输出流、响应崩溃的进程以及处理用户启动的重启和关闭。
Check immortal它可以结合 STDOUT 和 STDERR 或单独记录,此外还可以在没有时间戳的情况下保持完整的日志是结构化日志,以后可以通过弹性搜索或任何其他工具使用,例如:
cmd: microservice
env:
DEBUG: 1
ENVIRONMENT: production
log:
file: /var/log/app-1.log
age: 86400 # seconds
num: 7 # int
size: 1 # MegaBytes
timestamp: true # will add timesamp to log
相同的服务,但 STDOUT 和 STDERR 日志分开:
cmd: microservice
env:
DEBUG: 1
ENVIRONMENT: production
log:
file: /var/log/app-1.log
age: 86400 # seconds
num: 7 # int
size: 1 # MegaBytes
stderr:
file: /var/log/app-error.log
age: 86400 # seconds
num: 7 # int
size: 1 # MegaBytes
timestamp: true # will add timesamp to log
更多信息run.yml
可以在这里找到:https ://immortal.run/post/run.yml/