将filebeat添加到ebextensions以及使用AWS Code Pipelines创建的war文件

时间:2018-05-18 18:09:45

标签: amazon-web-services tomcat elastic-beanstalk elastic-stack

我有一个Spring应用程序,可以使用AWS Code Pipeline和Elastic Beanstalk自动构建和部署。为了使其工作,我必须创建一个.ebextensions文件fix-path.config,如下所示

container_commands:
  fix_path:
    command: "echo Hello world"
    command: "unzip MyApp.war 2>&1 > /var/log/my_last_deploy.log"

这是必需的,因为CodeBuild的输出是war文件,但在部署之前会自动压缩。我一直在设置ELK堆栈以进行日志记录,并希望使用Filebeats将日志从Tomcat发送到我的Logstash服务器。在Elastic Beanstalk上执行此操作的推荐方法也是ebextensions配置文件。我无法弄清楚如何让fix-path配置和Filebeats配置文件和谐地生活。我已经让Filebeats使用这样的配置文件(filebeat.config):

files:
  "/etc/filebeat/filebeat.yml":
    mode: "000755"
    owner: root
    group: root
    content: |
      filebeat.prospectors:
        -
          input_type: log
          paths: ["/var/log/eb-commandprocessor.log"]
          fields_under_root: true
          ignore_older: 3h
      output.logstash:
        hosts: ["url-to-logstash"]

commands:
  1_command:
    command: "curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.1-x86_64.rpm"
    cwd: /home/ec2-user
  2_command:
    command: "rpm -ivh --replacepkgs filebeat-5.5.1-x86_64.rpm"
    cwd: /home/ec2-user
  3_command:
    command: "/etc/init.d/filebeat start"

如果我在.ebextensions文件夹中手动打包war文件,我可以手动部署它并验证Filebeat是否设置正确。但是,如果我使用CodeBuild并包含fix-path.config文件,则部署将无限期挂起。我知道问题必须与运行命令的顺序有关,并且unzip命令需要从放置工件的目录中运行,但我似乎无法弄清楚如何制作那工作。我已经尝试将filebeat东西移动到fix-path文件中,并将命令添加为container_comands,但这也不起作用。有没有人成功使用过多个ebextensions的CodeBuild + Elastic Beanstalk + Tomcat?

0 个答案:

没有答案