CloudWatch Agent:批量大小等于“1” - 这是一个坏主意吗?

时间:2017-10-25 11:53:00

标签: amazon-web-services amazon-ec2 batch-processing amazon-cloudwatch amazon-cloudwatchlogs

如果我正确理解,CloudWatch Agent会使用批量处理方式将事件发布到CloudWatch,其大小由the two params指定:

batch_count:
  

指定批处理中的最大日志事件数,最多为10000   默认值为1000。

batch_size
  

指定批处理中的日志事件的最大大小(以字节为单位)   1048576字节。默认值为32768字节。这个尺寸是   计算为UTF-8中所有事件消息的总和加上26个字节   对于每个日志事件。

我想,为了消除在EC2实例终止的情况下丢失任何日志数据的可能性,batch_count应该等于1(因为在实例终止的情况下,所有日志都将是破坏)。我是对的,这只是实现它的一种方式,以及它如何影响性能?它会有明显的副作用吗?

1 个答案:

答案 0 :(得分:1)

是的,这是一个坏主意。这样可能会丢失数据。代理使用的PutLogEvents API每个日志流(source)每秒限制5个请求。 @Bean public FlowDefinitionRegistry flowRegistry() { return getFlowDefinitionRegistryBuilder() // .setBasePath("classpath:flows") // .addFlowLocationPattern("/**/*-flow.xml") // // .addFlowLocation("/organiser-register-flow.xml", "organiser/register") .setFlowBuilderServices(this.flowBuilderServices()) // .build(); } @Bean public FlowExecutor flowExecutor() { return getFlowExecutorBuilder(this.flowRegistry()) // .build(); } @Bean public FlowBuilderServices flowBuilderServices() { return getFlowBuilderServicesBuilder() // .setViewFactoryCreator(this.mvcViewFactoryCreator()) .setValidator(this.localValidatorFacotryBean).build(); } // ---------------------------------------------------------- @Bean public FlowHandlerMapping flowHandlerMapping() { FlowHandlerMapping handlerMapping = new FlowHandlerMapping(); handlerMapping.setOrder(-1); handlerMapping.setFlowRegistry(this.flowRegistry()); return handlerMapping; } @Bean public FlowHandlerAdapter flowHandlerAdapter() { FlowHandlerAdapter handlerAdapter = new FlowHandlerAdapter(); handlerAdapter.setFlowExecutor(this.flowExecutor()); handlerAdapter.setSaveOutputToFlashScopeOnRedirect(true); return handlerAdapter; } @Bean public ViewFactoryCreator mvcViewFactoryCreator() { MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator(); factoryCreator.setViewResolvers(Collections.singletonList(this.viewResolver)); factoryCreator.setUseSpringBeanBinding(true); return factoryCreator; } } 为1时,您每秒只能发布5个日志事件。如果应用程序要持续产生更多的数据,则代理将无法跟上。

如果您绝对负担不起丢失任何日志数据,则也许应该将这些数据写入数据库。即使batch_count为1,也始终存在丢失日志数据的风险。在代理程序轮询日志文件之前,主机总是会崩溃...默认情况下,BTW是每5秒一次({{3 }}。