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

时间:2012-08-08 21:27:09

标签: amazon-s3 amazon-ec2 amazon-cloudfront

说明:

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

这两台机器之间的连接:

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

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

我尝试了什么:

  1. 一种方法是在A上旋转日志并写入S3然后应用程序并从S3中选择并处理它们
  2. ssh到A并grep日志文件,但这会阻止JAR收听新流量并且卡住了
  3. 我在寻找:

    实时解决方案,只要日志显示在A上我希望将它们移植到B而不会在其监听作业上停止A

2 个答案:

答案 0 :(得分:0)

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

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

希望这有帮助。

答案 1 :(得分:0)

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

http://www.splunk.com/

至于从系统向Splunk Indexer获取此数据的机制:

1)使用Splunk Universal Forwarder监控日志输出并将其转发给您的Splunk Indexer,http://www.splunk.com/download/universalforwarder

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

3)使用Splunk Java SDK http://dev.splunk.com/view/java-sdk/SP-CAAAECN,通过HTTP REST或Raw TCP将日志事件输入Splunk Indexer