我有一个应用程序,它只是将日志记录到文件中。我计划将此应用程序部署在云端。如果我将其部署在 AmazonEC2 实例(多个)上,我希望监控每个实例的日志。以结构化方式显示日志并在记录任何严重问题时发出警报。
有任何想法吗 ?
附言:如果这是一个重复的问题,请随意在这里链接该问题
答案1
我正在使用 syslog-ng 来实现这一点,您可以在本地机器上配置 syslog-ng 来从目标文件读取(或者您可以让您的应用程序记录到 syslog),然后将其发送到目标机器,其中所有日志要么合并为一个,要么分成不同的文件,甚至是目录结构。
在客户端
source yourservice {
file("/var/log/xxx.log" follow_freq(1) flags(no-parse));
};
destination yourcollector {
tcp("xx.xx.xx.xx" port(65140));
};
log { source(yourservice); destination(yourcollector); };
然后在收集服务器上
source yourservice {
tcp(port(65140) keep-alive(yes));
};
destination yourservice_dir { file("/var/log/yourservice/$YEAR/$MONTH/yourlog-$YEAR-$MONTH-$DAY" create_dirs(yes) template("$MESSAGE\n") template_escape(no));};
log { source(yourservice); destination(yourservice_dir); };
您可以更改目标上的参数以添加或删除变量,以将其划分为一个或多个日志