将实时网络日志从一个 Ec2 实例传输到另一个 Ec2 实例



说明:

  • 我在一个 EC2 实例上部署了一个可执行 Jar,可以手动运行以侦听端口 80 上的代理流量
  • 我在另一个 EC2 实例上有一个 Spring 应用程序,该应用程序访问了第三方服务器上的网站

这两台机器之间的连接:

Spring 应用程序设置,即 B 告诉第三方服务器打开一个网站并使用 A 作为代理,这导致在 A 上生成网络调用日志。

我想做的是:对于我从 B 发送到第三方服务器的每个请求,我希望将 A 上生成的网络日志传输到 B

我尝试过:

  1. 一种方法是轮换 A 上的日志并写入 S3,然后应用程序并从 S3 中选取日志并处理它们
  2. ssh 到 A 中并 grep 日志文件,但这会阻止 JAR 侦听新流量并卡住

我在寻找什么:

一个实时解决方案,一旦日志出现在 A 上,我希望将它们移植到 B 而不停止 A 的侦听作业

我不确定您运行的是什么操作系统,但是如果您运行的是nix变体,则可以安装syslog-ng而不是syslog或rsyslog,后者能够记录本地和外部事件。在这种情况下,我将设置一个中央日志记录服务器,用于侦听来自服务器 a 和服务器 b 的日志。

另一种选择是 syslog-ng 不是您想要的,您可以在服务器上安装 splunk,并让它从您想要集中记录的每台服务器上的 splunk 报告器中获取日志。

希望这有帮助。

正如 Kevin 所提到的,您可以在 EC2 实例上设置一个 Splunk 索引器,并使用它来聚合来自 A 和 B 以及任何其他来源的日志集合,然后使用 Splunk 搜索语言"近乎实时"地搜索此日志数据,将各个系统中的事件关联在一起,创建自定义仪表板, 设置主动警报等...

http://www.splunk.com/

至于将此数据从系统获取到 Splunk 索引器的机制:

1) 使用 Splunk 通用转发器

监控日志输出并将其转发到 Splunk 索引器 http://www.splunk.com/download/universalforwarder

2)由于您的系统是基于Java的,SplunkJavaLogging具有log4j/logback/jdk附加器,您可以无缝连接到日志记录配置,以将日志事件转发到Splunk索引器 https://github.com/damiendallimore/SplunkJavaLogging:

3) 使用 Splunk

Java SDK http://dev.splunk.com/view/java-sdk/SP-CAAAECN ,通过 HTTP REST 或 Raw TCP 将日志事件输入到 Splunk 索引器中

最新更新