9

के साथ लोचदार बीनस्टॉक डॉकर मेरे पास एक डॉकर कंटेनर के साथ तैनात एक लोचदार बीनस्टॉक एप्लिकेशन है। एप्लिकेशन स्वयं जावा एप्लिकेशन है।अमेज़ॅन क्लाउडवॉच

मेरा लक्ष्य क्लाउडवॉच पर लॉग प्राप्त करना है। विशेष रूप से मैं stdouterr.log फ़ाइल को क्लाउडवॉच पर प्राप्त करना चाहता हूं। फ़ाइल /var/log/eb-docker/containers/eb-current-app/*

के तहत पाई जा सकती है I आधिकारिक एडब्लूएस दस्तावेज़ here का पालन किया। उदाहरण कॉन्फ़िगरेशन फ़ाइलों के आधार पर मैंने क्लाउडवॉच पर nginx Webrequest प्राप्त करने में कामयाब रहे।

Mappings: 
    CWLogs: 
    ApplicationLogGroup: 
     LogFile: "/var/log/eb-docker/containers/eb-current-app/*" 
     TimestampFormat: "%d/%b/%Y:%H:%M:%S %z" 

Outputs: 
    ApplicationLogGroup: 
    Description: "The name of the Cloudwatch Logs Log Group created for this environments web server access logs. You can specify this by setting the value for the environment variable: WebRequestCWLogGroup. Please note: if you update this value, then you will need to go and clear out the old cloudwatch logs group and delete it through Cloudwatch Logs." 
    Value: { "Ref" : "AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0WebRequestLogGroup"} 


Resources : 
    AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0WebRequestLogGroup: ## Must have prefix: AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0 
    Type: "AWS::Logs::LogGroup" 
    DependsOn: AWSEBBeanstalkMetadata 
    DeletionPolicy: Retain  ## this is required 
    Properties: 
     LogGroupName: 
     "Fn::GetOptionSetting": 
      Namespace: "aws:elasticbeanstalk:application:environment" 
      OptionName: ApplicationLogGroup 
      DefaultValue: {"Fn::Join":["-", [{ "Ref":"AWSEBEnvironmentName" }, "webrequests"]]} 
     RetentionInDays: 14 

cloudwatch लॉग समूह बनाया है, लेकिन है नहीं लॉग पहुंचें:

ईबी डोकर stdouterr मैं लॉग इन करने के लिए निम्न के CWL-लॉग-setup.config फ़ाइल अनुकूलित। मुझे कौन सा कदम याद आ रहा है या मेरी कॉन्फ़िगरेशन फ़ाइल में क्या गलत है?

उत्तर

4

मैं सिर्फ एक ही मुद्दा का सामना करना पड़ा है - मैं यह केवल काम करता है के लिए

Mappings: 
    CWLogs: 
    WebRequestLogGroup: 
     LogFile: "/var/log/eb-docker/containers/eb-current-app/*.log" 
     TimestampFormat: "%d/%b/%Y:%H:%M:%S %z" 

नोट LogFile विन्यास बदलने अगर वहाँ एक भी लॉग फ़ाइल है, यदि आप द्वारा लॉग फाइल पाने में कामयाब रहे फिर से तैनाती एक कंटेनर या कॉन्फ़िगरेशन परिवर्तन लागू करता है जिसके परिणामस्वरूप इस निर्देशिका में एकाधिक लॉग होते हैं, तो केवल वर्तमान फ़ाइल के साथ लॉग फ़ाइल की घटनाओं को केवल awslogs एजेंट

द्वारा संसाधित किया जाएगा डिफ़ॉल्ट रूप से एजेंट पहली पंक्ति की तुलना करेगा यह निर्धारित करने के लिए लॉग फ़ाइल का है कि यह एक अलग फ़ाइल है, यदि पहली पंक्ति समान है तो यह अनदेखा कर देगी यह।

AWSEBAutoScalingGroup: 
    Metadata: 
     "AWS::CloudFormation::Init": 
     CWLogsAgentConfigSetup: 
      files: 
      ## any .conf file put into /tmp/cwlogs/conf.d will be added to the cwlogs config (see cwl-agent.config) 
      "/tmp/cwlogs/conf.d/apache-access.conf": 
       content : | 
      [ apache-access_log] 
       file = `{"Fn::FindInMap":["CWLogs", "WebRequestLogGroup", "LogFile"]}` 
       log_group_name = `{ "Ref" : "AWSEBCloudWatchLogs8832c8d3f1a54c238a40e36f31ef55a0WebRequestLogGroup" }` 
       file_fingerprint_lines = 1-20 
       log_stream_name = {instance_id} 
       datetime_format = `{"Fn::FindInMap":["CWLogs", "WebRequestLogGroup", "TimestampFormat"]}` 
       mode : "000400" 
       owner : root 
       group : root 
+0

आप एक समाधान है या नहीं पता होता है: 20 फ़ाइल की पहचान करने के लिए - आप उदाहरण लाइनों 1 उपयोग करने के लिए, file_fingerprint_lines विन्यास जोड़कर लाइनों एजेंट फ़ाइल फिंगरप्रिंट के लिए उपयोग करता है निर्दिष्ट कर सकते हैं

इसके लिए? – Ian

+0

मुझे तब से पता चला है कि यह गलत है, awslogs एजेंट जो क्लाउडवॉच पर लॉग फ़ाइल इवेंट को धक्का देता है, फाइल को सबसे वर्तमान अंतिम संशोधित समय के साथ उपयोग करेगा, मैं जवाब – Bacon

+0

संपादित करूँगा क्या आपका मतलब है कि लॉगिंग अब जारी रहेगी एक तैनाती? – Ian

संबंधित मुद्दे