การรวบรวมฮีปดัมพ์ JVM จาก AWS ElasticBeanstalk

ฉันใช้ AWS ElasticBeanstalk กับ Tomcat เป็นเว็บเซิร์ฟเวอร์ ฉันต้องการแก้ไขจุดบกพร่องและบันทึกประสิทธิภาพของ Java Virtual Machine รายงานข้อขัดข้อง และเขียนลงใน CloudWatch Logs

ปัจจุบัน 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 และกำหนดไฟล์บันทึก log_group_name และชื่อ log_stream เพื่อสตรีมบน CloudWatch

โปรดดูตัวอย่างด้านล่างสำหรับการเปิดใช้งาน Catalina Logs ใน CloudWatch สำหรับ Tomcat8 Environment ---.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