Сбор дампа кучи JVM из AWS ElasticBeanstalk

Я использую AWS ElasticBeanstalk с Tomcat в качестве веб-сервера. Я хотел бы отлаживать и регистрировать производительность виртуальной машины Java, отчеты о сбоях и записывать их в журналы CloudWatch.

В настоящее время AWS ElasticBeanstalk собирает журналы, созданные веб-сервером, сервером приложений, скриптами платформы Elastic Beanstalk. Вы можете использовать журналы CloudWatch в качестве централизованной системы журналов.

Как я могу собрать свои собственные журналы JVM в CloudWatch, как я упоминал в начале?

Спасибо.

Флорин


person florins    schedule 20.11.2017    source источник
comment
ты нашел способ?   -  person asgs    schedule 05.09.2018


Ответы (1)


Я поспорил со службой поддержки AWS, и они ответили:

Это можно сделать с помощью файла конфигурации .ebextensions, чтобы установить пакет awslogs и определить файл журнала, имя_группы_журнала и имя_потока_журнала для потоковой передачи в CloudWatch,

Пожалуйста, найдите ниже пример включения журналов Catalina в CloudWatch для среды Tomcat8 ---. Ebextensions / cwatch.config ---

packages:
  yum:
    awslogs: []

files:
  "/etc/awslogs/awscli.conf" :
    mode: "000600"
    owner: root
    group: root
    content: |
      [plugins]
      cwlogs = cwlogs
      [default]
      region = `{"Ref":"AWS::Region"}`

  "/etc/awslogs/awslogs.conf" :
    mode: "000600"
    owner: root
    group: root
    content: |
      [general]
      state_file = /var/lib/awslogs/agent-state

      [/var/log/tomcat8]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "catalina"]]}`
      log_stream_name = {instance_id}_messages
      file = /var/log/tomcat8/catalina.out
      datetime_format = %b %d %H:%M:%S
      initial_position = start_of_file
      buffer_duration = 5000

      [/var/log/messages]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "syslog"]]}`
      log_stream_name = {instance_id}_messages
      file = /var/log/messages
      datetime_format = %b %d %H:%M:%S
      initial_position = start_of_file
      buffer_duration = 5000

      [/var/log/eb-activity.log]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "eb"]]}`
      log_stream_name = {instance_id}_eb-activity.log
      file = /var/log/eb-activity.log
      datetime_format = [%Y-%m-%dT%H:%M:%S.%3NZ]
      initial_position = start_of_file
      buffer_duration = 5000

      [/var/log/eb-cfn-init.log]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "eb"]]}`
      log_stream_name = {instance_id}_eb-cfn-init.log
      file = /var/log/eb-cfn-init.log
      datetime_format = [%Y-%m-%dT%H:%M:%S.%3NZ]
      initial_position = start_of_file
      buffer_duration = 5000

      [/var/log/eb-commandprocessor.log]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "eb"]]}`
      log_stream_name = {instance_id}_eb-commandprocessor.log
      file = /var/log/eb-commandprocessor.log
      datetime_format = [%Y-%m-%dT%H:%M:%S.%3NZ]
      initial_position = start_of_file
      buffer_duration = 5000

      [/var/log/eb-publish-logs.log]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "eb"]]}`
      log_stream_name = {instance_id}_eb-publish-logs.log
      file = /var/log/eb-publish-logs.log
      datetime_format = %Y-%m-%d %H:%M:%S,%3N
      initial_position = start_of_file
      buffer_duration = 5000

      [/var/log/eb-tools.log]
      log_group_name = `{"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "eb"]]}`
      log_stream_name = {instance_id}_eb-tools.log
      file = /var/log/eb-tools.log
      datetime_format = %Y-%m-%d %H:%M:%S,%3N
      initial_position = start_of_file
      buffer_duration = 5000

commands:
  "01":
    command: chkconfig awslogs on
  "02":
    command: service awslogs restart
---end---

and here is a simpler version to Add log to default CloudWatch logs streaming config

Warning: does not set retention policy, won't obey retention policy (e.g "delete when env is deleted)

---.ebextensions/log.config---
files:
  /etc/awslogs/config/mylog.conf:
    owner: root
    group: root
    mode: "000644"
    content:
      Fn::Sub: |
        [/var/log/mylog.log]
        log_group_name=/aws/elasticbeanstalk/${AWSEBEnvironmentName}/var/log/mylog.log
        log_stream_name={instance_id}
        file=/var/log/mylog.log

commands:
  restart_awslogs:
    command: service awslogs restart || service awslogs start
---end---

Примечание: не используйте предоставленный образец в производстве. Цель примера - проиллюстрировать функциональность. «Я не проверял это решение, но если кто-то будет тестировать это решение, прокомментируйте его и отметьте его как действительное. Если нет, я удалю свой ответ.

person florins    schedule 05.09.2018