Mengumpulkan heap dump JVM dari AWS ElasticBeanstalk

Saya menggunakan AWS ElasticBeanstalk dengan Tomcat sebagai server web. Saya ingin men-debug dan mencatat kinerja Java Virtual Machine, laporan kerusakan, dan menuliskannya di CloudWatch Logs.

Saat ini AWS ElasticBeanstalk mengumpulkan log yang dibuat oleh server web, server aplikasi, skrip platform Elastic Beanstalk. Anda dapat menggunakan log CloudWatch sebagai sistem log terpusat.

Bagaimana cara mengumpulkan log JVM khusus saya di CloudWatch seperti yang saya sebutkan di awal?

Terima kasih.

Florin


person florins    schedule 20.11.2017    source sumber
comment
apakah kamu menemukan jalan?   -  person asgs    schedule 05.09.2018


Jawaban (1)


Saya telah menghubungi tim dukungan AWS dan jawaban mereka adalah:

Ini dapat dilakukan dengan menggunakan file konfigurasi .ebextensions untuk menginstal paket awslogs dan menentukan file log, nama_grup_log, dan nama log_stream untuk streaming di CloudWatch,

Silakan temukan contoh di bawah ini untuk Mengaktifkan Catalina Logs di CloudWatch untuk Lingkungan 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---

Catatan: Jangan gunakan sampel yang disediakan dalam produksi. Tujuan dari sampel ini adalah untuk mengilustrasikan fungsionalitasnya." Saya tidak memeriksanya, tetapi jika seseorang akan menguji solusi ini, silakan beri komentar dan tandai sebagai valid. Jika tidak, saya akan menghapus jawaban saya.

person florins    schedule 05.09.2018