MessageLogging नीति

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

यह क्या है

एपीआई रनटाइम एनवायरमेंट में समस्याओं को ट्रैक करने का सबसे अच्छा तरीका, मैसेज लॉग करना है. किसी लोकल डिस्क (सिर्फ़ निजी क्लाउड के लिए Edge) या syslog पर कस्टम मैसेज को लॉग करने के लिए, अपने एपीआई पर MessageLogging नीति को अटैच और कॉन्फ़िगर किया जा सकता है.

सैंपल

सिस्लॉग

<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
    <DateFormat>yyyy-MM-dd'T'HH:mm:ss.SSSZ</DateFormat>
  </Syslog>
  <logLevel>ALERT</logLevel>
</MessageLogging>

MessageLogging नीति टाइप का एक सामान्य इस्तेमाल, syslog खाते में लॉग करना है. जब syslog के लिए इसे कॉन्फ़िगर किया जाता है, तो एपीआई प्रॉक्सी, Apigee Edge से रिमोट syslog सर्वर पर मैसेज फ़ॉरवर्ड करेगा. आपके पास पहले से एक syslog सर्वर उपलब्ध होना चाहिए. अगर आपके पास लॉग मैनेज करने की सेवा नहीं है, तो Splunk, Sumo Logic, और Loggly जैसी सार्वजनिक लॉग मैनेजमेंट सेवाएं उपलब्ध हैं. तीसरे पक्ष के लॉग मैनेजमेंट से जुड़ी सेवाएं कॉन्फ़िगर करना लेख पढ़ें.

उदाहरण के लिए, मान लें कि आपको उपभोक्ता ऐप्लिकेशन से आपके एपीआई को मिलने वाले हर अनुरोध के मैसेज की जानकारी लॉग करनी होगी. 3f509b58 वैल्यू, Loggly सेवा के लिए खास तौर पर एक कुंजी वैल्यू दिखाती है. अगर आपके पास लॉगली खाता है, तो उसे लॉगली पासकोड से बदलें. जनरेट किए गए लॉग मैसेज में चार वैल्यू होंगी: अनुरोध वाले मैसेज में मौजूद क्वेरी पैरामीटर की वैल्यू के साथ-साथ, लेन-देन से जुड़े संगठन, एपीआई प्रॉक्सी, और एनवायरमेंट का नाम.

अगर आपके पास Private Cloud के डिप्लॉयमेंट के लिए Edge है, तो फ़ाइल में लॉग मैसेज भी लिखे जा सकते हैं.

TLS/एसएसएल पर सिलॉग

<MessageLogging name="LogToSyslog">
  <Syslog>
    <Message>[3f509b58 tag="{organization.name}.{apiproxy.name}.{environment.name}"] Weather request for WOEID {request.queryparam.w}.</Message>
    <Host>logs-01.loggly.com</Host>
    <Port>6514</Port>
    <Protocol>TCP</Protocol>
    <FormatMessage>true</FormatMessage>
    <SSLInfo>
        <Enabled>true</Enabled>
    </SSLInfo>
    <DateFormat>yyMMdd-HH:mm:ss.SSS</DateFormat>
  </Syslog>
  <logLevel>WARN</logLevel>
</MessageLogging>

<SSLInfo> ब्लॉक जोड़कर, तीसरे पक्ष के मैसेज लॉग करने वाली कंपनियों को TLS/एसएसएल पर मैसेज भेजे जा सकते हैं.

फ़ाइल रोटेशन: साइज़

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
      <FileName>test.log</FileName>
      <FileRotationOptions rotateFileOnStartup="true">
        <FileRotationType>SIZE</FileRotationType>
        <MaxFileSizeInMB>10</MaxFileSizeInMB>
        <MaxFilesToRetain>10</MaxFilesToRetain>
      </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

फ़ाइल को उसके साइज़ के हिसाब से बदलना.

फ़ाइल रोटेशन: समय

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
    <FileName>test.log</FileName>
    <FileRotationOptions rotateFileOnStartup="true">
      <FileRotationType>TIME</FileRotationType>
      <RotationFrequency unit="minute">10</RotationFrequency>
      <MaxFilesToRetain>10</MaxFilesToRetain>
    </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

समय के हिसाब से फ़ाइल को घुमाना.

फ़ाइल रोटेशन: समय और साइज़

<MessageLogging name="LogPolicy">
  <File>
    <Message>This is a test message. Message id : {request.header.messageid}</Message>
    <FileName>test.log</FileName>
    <FileRotationOptions rotateFileOnStartup="true">
      <FileRotationType>TIME_SIZE</FileRotationType>
      <MaxFileSizeInMB>10</MaxFileSizeInMB>
      <MaxFilesToRetain>10</MaxFilesToRetain>
      <RotationFrequency unit="minute">10</RotationFrequency>
    </FileRotationOptions>
  </File>
  <logLevel>ERROR</logLevel>
</MessageLogging>

समय और साइज़ के हिसाब से फ़ाइल को घुमाना.

स्ट्रीम की सुविधा चालू है

<MessageLogging name="LogPolicy">
  <File>
  ....
  ....
  </File>
  <BufferMessage>true</BufferMessage>
</MessageLogging>

स्ट्रीम की सुविधा वाले मैसेज को लॉग करने की सुविधा


एलिमेंट का रेफ़रंस

MessageLogging नीति टाइप को कॉन्फ़िगर करने के लिए, इन एलिमेंट का इस्तेमाल करें.

फ़ील्ड का नाम फ़ील्ड का ब्यौरा

File

लोकल फ़ाइल डेस्टिनेशन. (फ़ाइल लॉगिंग की सुविधा सिर्फ़ प्राइवेट क्लाउड डिप्लॉयमेंट के लिए, Edge में काम करती है.) फ़ाइलें कहां सेव की जाती हैं, यह जानने के लिए Edge for Private Cloud में फ़ाइल की जगह की जानकारी लॉग करें लेख पढ़ें.

Message टेक्स्ट को वैरिएबल के साथ मिलाकर, लॉग फ़ाइल में भेजने के लिए मैसेज बनाएं, ताकि आपकी ज़रूरत की जानकारी इकट्ठा की जा सके. सैंपल देखें.
FileName उस लॉग फ़ाइल का नाम जिसमें मैसेज लॉग किया गया है.
FileRotationOptions
rotateFileOnStartup

एट्रिब्यूट. मान्य वैल्यू: true/false

अगर इस नीति को 'सही है' पर सेट किया जाता है, तो मैसेजिंग इंजन के हर बार रीस्टार्ट होने पर, लॉग फ़ाइल हर बार घूमती है.

FileRotationType लॉग फ़ाइल की रोटेशन नीति (size या time) तय करती है.
MaxFileSizeInMB (size को रोटेशन टाइप के तौर पर चुनने पर) यह लॉग फ़ाइल का साइज़ तय करता है, जो लॉग मैसेज को अलग फ़ाइल में ले जाने के लिए सर्वर को ट्रिगर करता है. लॉग फ़ाइल के तय साइज़ में पहुंचने के बाद, सर्वर मौजूदा लॉग फ़ाइल का नाम बदल देता है.
RotationFrequency (time को रोटेशन टाइप के तौर पर चुनने पर) मिनट में वह समय बताता है जो लॉग मैसेज को किसी अलग फ़ाइल में ले जाने के लिए, सर्वर को ट्रिगर करता है. तय अंतराल के खत्म हो जाने के बाद, मौजूदा लॉग फ़ाइल का नाम बदल दिया जाता है.
MaxFilesToRetain

इससे तय होता है कि आपकी रोटेशन सेटिंग में ज़्यादा से ज़्यादा कितने फ़ाइलें सेव करके रखी जाएं. डिफ़ॉल्ट वैल्यू 8 है.

अगर आपने शून्य (0) सेट किया है, तो लॉग फ़ाइलें हमेशा के लिए सेव करके रखी जाती हैं. हालांकि, फ़ाइलों को उनकी रोटेशन सेटिंग के हिसाब से सेव किया जाता है. हालांकि, न तो कोई फ़ाइल मिटाई जाती है और न ही उसका नाम बदला जाता है. इसलिए, आने वाले समय में डिस्क से जुड़ी गड़बड़ियों से बचने के लिए, इसे शून्य से ज़्यादा पर सेट करें या पुरानी लॉग फ़ाइलों को पूरी तरह से मिटाने या संग्रहित करने के लिए, अपने-आप काम करने वाला कोई सामान्य सिस्टम लागू करें.

BufferMessage

अगर आपकी प्रॉक्सी के लिए एचटीटीपी स्ट्रीमिंग चालू है, तो अनुरोध/जवाब के मैसेज बफ़र नहीं होंगे. अगर आपको ऐसे कॉन्टेंट को लॉग करना है जिसे पार्स करने के लिए फ़्लो मैसेज की ज़रूरत हो, तो बफ़र मैसेज को 'सही' पर सेट करें. उदाहरण के लिए "स्ट्रीम की सुविधा वाला" सैंपल टैब देखें. डिफ़ॉल्ट: false

Syslog

एक सिलॉग डेस्टिनेशन. Splunk, Sumo Logic या Loggly को syslog की सुविधा भेजने के लिए, तीसरे पक्ष के लॉग मैनेजमेंट की सेवाएं कॉन्फ़िगर करना देखें.

Message

जो जानकारी आपको चाहिए उसे कैप्चर करने के लिए, टेक्स्ट को वैरिएबल के साथ मिलाकर syslog को भेजा जाने वाला मैसेज बनाएं. सैंपल देखें.

ध्यान दें: गड़बड़ी का फ़्लो दिखने पर, PostClientFlow में रिस्पॉन्स वैरिएबल उपलब्ध नहीं होंगे. गड़बड़ी और सफल होने की स्थितियों, दोनों के लिए रिस्पॉन्स की जानकारी लॉग करने के लिए, मैसेज वैरिएबल का इस्तेमाल करें. इस्तेमाल से जुड़ी जानकारी भी देखें.

Host सर्वर का होस्टनेम या आईपी पता जहां syslog भेजा जाना चाहिए. अगर इस एलिमेंट में यह एलिमेंट शामिल नहीं है, तो लोकल होस्ट डिफ़ॉल्ट तौर पर सेट होता है.
Port वह पोर्ट करें जहां syslog चालू है. इस एलिमेंट को शामिल न करने पर, डिफ़ॉल्ट कोड 514 होता है.
Protocol टीसीपी या यूडीपी (डिफ़ॉल्ट). यूडीपी बेहतर परफ़ॉर्म करता है, लेकिन टीसीपी प्रोटोकॉल, सिस्टम लॉग सर्वर पर मैसेज लॉग डिलीवरी की गारंटी देता है. TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी का इस्तेमाल किया जा सकता है.
FormatMessage

true या false (डिफ़ॉल्ट)

ज़रूरी नहीं है, लेकिन Loggly के साथ इस्तेमाल करने के लिए, <FormatMessage>true</FormatMessage> ज़रूरी है.

इस एलिमेंट की मदद से, मैसेज से पहले जोड़े गए Apigee से जनरेट किए गए कॉन्टेंट के फ़ॉर्मैट को कंट्रोल किया जा सकता है. अगर इस नीति को 'सही है' पर सेट किया जाता है, तो सिस्टलॉग मैसेज से पहले वर्णों की तय संख्या तय होती है. इससे उस जानकारी को मैसेज से फ़िल्टर किया जा सकता है. यहां तय फ़ॉर्मैट का एक उदाहरण दिया गया है:

<14>1 2023-03-20T09:24:39.039+0000 e49cd3a9-4cf6-48a7-abb9-7ftfe4d97d00 Apigee-Edge - - - Message starts here

Apigee से जनरेट की गई जानकारी में ये चीज़ें शामिल होती हैं:

  • <14> - लॉग लेवल और मैसेज की सुविधा के लेवल के हिसाब से प्राथमिकता स्कोर (Syslog प्रोटोकॉल देखें).
  • 1 - मौजूदा syslog वर्शन.
  • यूटीसी ऑफ़सेट वाली तारीख (यूटीसी = +0000).
  • मैसेज प्रोसेसर यूयूआईडी.
  • "Apigee-Edge - - - "

अगर इस नीति को 'गलत' (डिफ़ॉल्ट) पर सेट किया जाता है, तो मैसेज से पहले वे तय वर्ण नहीं जोड़े जाते.

PayloadOnly

true या false (डिफ़ॉल्ट)

यह एलिमेंट, Apigee से जनरेट किए गए मैसेज का फ़ॉर्मैट इस तरह सेट करता है कि उसमें सिर्फ़ syslog मैसेज का मुख्य हिस्सा शामिल हो. इसमें FormatMessage की मदद से तय किए गए पहले से जोड़े गए वर्ण शामिल नहीं होते हैं.

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

FormatMessage देखें.

DateFormat

ज़रूरी नहीं.

हर लॉग मैसेज का टाइमस्टैंप फ़ॉर्मैट करने के लिए, फ़ॉर्मैट वाली टेंप्लेट स्ट्रिंग. डिफ़ॉल्ट रूप से, Apigee, yyyy-MM-dd'T'HH:mm:ss.SSSZ का इस्तेमाल करता है. इस टेंप्लेट के काम करने के तरीके की जानकारी, Java की SimpleDateFormat क्लास के दस्तावेज़ में दी गई है.

SSLInfo

इस सुविधा का इस्तेमाल करके, एसएसएल/TLS के ज़रिए मैसेज लॉग किए जा सकते हैं. सब-एलिमेंट <Enabled>true</Enabled> के साथ इस्तेमाल करें.

अगर इस एलिमेंट को शामिल नहीं किया जाता या इसे खाली छोड़ दिया जाता है, तो डिफ़ॉल्ट वैल्यू 'गलत' पर सेट हो जाती है. यह TLS/एसएसएल नहीं है.

<SSLInfo>
    <Enabled>true</Enabled>
</SSLInfo>

<SSLInfo> टैग को उसी तरह कॉन्फ़िगर किया जा सकता है जिस तरह आप TargetEndpoint पर कॉन्फ़िगर करते हैं. इसमें दो-तरफ़ा TLS/एसएसएल को चालू करना भी शामिल है, जैसा कि एपीआई प्रॉक्सी कॉन्फ़िगरेशन के रेफ़रंस में बताया गया है. इसमें सिर्फ़ टीसीपी प्रोटोकॉल काम करता है.

logLevel

ज़रूरी नहीं.

मान्य वैल्यू: INFO (डिफ़ॉल्ट), ALERT, WARN, ERROR

मैसेज लॉग में शामिल करने के लिए, जानकारी का एक खास लेवल सेट करें.

अगर FormatMessage एलिमेंट (इसे सही पर सेट किया जा रहा है) का इस्तेमाल किया जा रहा है, तो आपकी logLevel सेटिंग, मैसेज से पहले दी गई Apigee से जनरेट की गई जानकारी में दिए गए आपके दिए गए प्राथमिकता स्कोर (ऐंगल ब्रैकेट में मौजूद संख्या) पर असर डालती है.

स्कीमा


ट्रैक के इस्तेमाल से जुड़ी जानकारी

किसी API प्रॉक्सी फ़्लो में MessageLogging नीति अटैच करते समय, इसे प्रॉक्सीEndpoint रिस्पॉन्स में PostClientFlow नाम के एक खास फ़्लो में रखने के बारे में सोचें. PostClientFlow, अनुरोध करने वाले क्लाइंट को जवाब भेजे जाने के बाद ही काम करता है, जिससे यह पक्का होता है कि लॉग करने के लिए सभी मेट्रिक उपलब्ध हैं. PostClientFlow का इस्तेमाल करने के बारे में जानकारी के लिए, एपीआई प्रॉक्सी कॉन्फ़िगरेशन रेफ़रंस देखें.

PostClientFlow दो तरह से खास है:

  1. इसे सिर्फ़ रिस्पॉन्स फ़्लो के हिस्से के तौर पर चलाया जाता है.
  2. प्रॉक्सी के गड़बड़ी की स्थिति में आने के बाद, सिर्फ़ यही फ़्लो चलाया जाता है.

प्रॉक्सी की प्रोसेस पूरी हो गई है या नहीं हो पाई, लेकिन इसे एक्ज़ीक्यूट किया जाता है. इसलिए, MessageLogging नीतियों को PostClientFlow में शामिल किया जा सकता है. इनकी मदद से यह भी पक्का किया जा सकता है कि ये नीतियां हमेशा लागू होंगी.

नीचे दी गई ट्रेस इमेज, डिफ़ॉल्टFaultTerms के लागू होने के बाद, PostClientFlow के हिस्से के तौर पर, MessageLogging नीति को लागू करने की जानकारी दिखाती है:

इस उदाहरण में, 'एपीआई पासकोड की पुष्टि करें' नीति की वजह से, गलत कुंजी की वजह से गड़बड़ी हुई.

नीचे प्रॉक्सीEndpoint की परिभाषा दिखाई गई है, जिसमें PostClientFlow शामिल है:

<ProxyEndpoint name="default">
  ...
  <PostClientFlow>
    <Response>
      <Step>
        <Name>Message-Logging-1</Name>
      </Step>
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

Edge, मैसेज को आसान टेक्स्ट के तौर पर लॉग करता है. साथ ही, वैरिएबल को शामिल करने के लिए लॉगिंग को कॉन्फ़िगर किया जा सकता है. जैसे, अनुरोध या जवाब मिलने की तारीख और समय, अनुरोध पर उपयोगकर्ता की पहचान, सोर्स का वह आईपी पता जिससे अनुरोध भेजा गया था वगैरह. एसिंक्रोनस तरीके से एज लॉग मैसेज, इसका मतलब है कि आपके एपीआई में कॉल आउट को ब्लॉक करने की वजह से इंतज़ार के समय की कोई जानकारी नहीं दी जाती है.

MessageLogging नीति, मेमोरी में लॉग किए गए मैसेज को बफ़र में लिखती है. मैसेज लॉग करने वाला टूल, बफ़र के मैसेज पढ़ता है और उस डेस्टिनेशन पर लिखता है जिसे आपने कॉन्फ़िगर किया है. हर डेस्टिनेशन का अपना बफ़र होता है.

अगर बफ़र में लिखने की दर, रीड रेट से ज़्यादा हो जाती है, तो बफ़र ओवरफ़्लो होने और लॉग इन नहीं किया जा सकेगा. अगर ऐसा होता है, तो आपको लॉग फ़ाइल में यह मैसेज दिख सकता है:

Log message size exceeded. Increase the max message size setting

अगर आपको Private Cloud के 4.15.07 और इससे पहले के वर्शन में यह समस्या आती है, तो message-logging.properties फ़ाइल ढूंढें और इसका इस्तेमाल करें:

message-logging.properties फ़ाइल में, max.log.message.size.in.kb प्रॉपर्टी (डिफ़ॉल्ट वैल्यू = 128 केबी) को बढ़ाएं.

Edge for Private Cloud 4.16.01 और उसके बाद के वर्शन के लिए, conf_message-logging_max.log.message.size.in.kb प्रॉपर्टी को /opt/apigee/customer/application/message-processor.properties फ़ाइल में सेट करें. इसके बाद, Message प्रोसेसर को रीस्टार्ट करें.

ध्यान दें: Edge में, रिस्पॉन्स मैसेज के वैरिएबल एरर फ़्लो में उपलब्ध नहीं होते. अगर पिछला फ़्लो, 'गड़बड़ी का फ़्लो' था, तब भी ये वैरिएबल PostClientFlow में उपलब्ध नहीं हैं. अगर आपको PostClientFlow से रिस्पॉन्स की जानकारी लॉग करनी है, तो message ऑब्जेक्ट का इस्तेमाल करें. हेडर और दूसरी जानकारी पाने के लिए, इस ऑब्जेक्ट का इस्तेमाल किया जा सकता है. इससे कोई फ़र्क़ नहीं पड़ता कि कोई गड़बड़ी हुई है या नहीं. ज़्यादा जानकारी और उदाहरण के लिए, मैसेज वैरिएबल देखें.

Private Cloud के लिए, Edge में लॉग मैसेज के टाइमस्टैंप को कंट्रोल करना

डिफ़ॉल्ट रूप से, सभी लॉग मैसेज में टाइमस्टैंप का फ़ॉर्मैट यह होता है:

yyyy-MM-dd'T'HH:mm:ss.SSSZ

पूरे सिस्टम के इस डिफ़ॉल्ट डिफ़ॉल्ट फ़ंक्शन को DateFormat एलिमेंट का इस्तेमाल करके, syslog डेस्टिनेशन के लिए बदला जा सकता है. इस टेंप्लेट के काम करने के तरीके की जानकारी, Java की SimpleDateFormat क्लास के दस्तावेज़ में दी गई है. उस परिभाषा के मुताबिक, yyyy को चार अंकों वाले साल से बदल दिया जाएगा और MM को महीने के दो अंकों से बदल दिया जाएगा. इसी तरह आगे भी ऐसे ही होते रहेंगे. ऊपर दिए गए फ़ॉर्मैट की वजह से इस फ़ॉर्म में स्ट्रिंग दिख सकती है:

2022-09-28T22:38:11.721+0000

इस फ़ॉर्मैट को कंट्रोल करने के लिए, Edge Message प्रोसेसर में conf_system_apigee.syslogger.dateFormat प्रॉपर्टी का इस्तेमाल किया जा सकता है. उदाहरण के लिए, मैसेज के फ़ॉर्मैट को इसमें बदलना:

yy/MM/dd'T'HH:mm:ss.SSSZ

..डैश को स्लैश के साथ बदलकर और साल को दो अंकों में छोटा करने पर, यह फ़ॉर्म में टाइमस्टैंप रिकॉर्ड करता है:

22/09/28T22:38:11.721+0000

फ़ॉर्मैट बदलने के लिए:

  1. किसी एडिटर में message-processor.properties फ़ाइल खोलें. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    > vi /opt/apigee/customer/application/message-processor.properties
  2. प्रॉपर्टी को अपने हिसाब से सेट करें:
    conf_system_apigee.syslogger.dateFormat=yy/MM/dd'T'HH:mm:ss.SSSZ
  3. बदलावों को सेव करें.
  4. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' उपयोगकर्ता के पास हो:
    > chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Edge मैसेज प्रोसेसर को रीस्टार्ट करें:
    > /opt/apigee/apigee-service/bin/apigee-serviceedge-message-processor रीस्टार्ट

Private Cloud के लिए, Edge में फ़ाइल की जगह की जानकारी लॉग करें

Private Cloud 4.16.01 और उसके बाद के वर्शन के लिए Edge

डिफ़ॉल्ट रूप से, प्राइवेट क्लाउड मैसेज लॉग, मैसेज प्रोसेसर नोड पर इस डायरेक्ट्री में मौजूद होते हैं:

/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/

Messages प्रोसेसर पर मौजूद message-logging.property फ़ाइल में प्रॉपर्टी में बदलाव करके, लॉग की डिफ़ॉल्ट जगह को बदला जा सकता है:

  • bin_setenv_data_dir - लॉग फ़ाइल स्टोरेज के लिए रूट पाथ सेट करता है. उदाहरण के लिए, bin_setenv_data_dir=/opt/apigee/var/log
  • conf_message-logging_log.root.dir - अगर आपने इसे किसी मिलते-जुलते पाथ पर सेट किया है, जैसे कि conf/message-logging.properties+log.root.dir=custom/folder/, the path is appended to the bin_setenv_data_dir location.

    अगर इसे conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages जैसे किसी ऐब्सलूट पाथ पर सेट किया जाता है, तो मैसेज लॉग /opt/apigee/var/log/messages/messagelog/ में सेव हो जाएंगे. ऐब्सलूट पाथ को bin_setenv_data_dir से ज़्यादा प्राथमिकता दी जाती है.

    ध्यान दें कि आपको इस प्रॉपर्टी को conf/message-logging.properties+log.root.dir के तौर पर रेफ़रंस देना होगा, क्योंकि इस पर डिफ़ॉल्ट रूप से टिप्पणी की गई है. ज़्यादा जानकारी के लिए, उस टोकन को सेट करना जिस पर अभी टिप्पणी की गई है देखें.

अगर आपको अपनी लॉग फ़ाइलों को किसी फ़्लैट फ़ाइल स्ट्रक्चर में सेव करना है, ताकि सभी लॉग फ़ाइलें एक ही डायरेक्ट्री में रखी जा सकें, तो message-logging.property फ़ाइल में conf/message-logging.properties+enable.flat.directory.structure को 'सही' पर सेट करें. मैसेज को ऊपर दी गई प्रॉपर्टी में बताई गई डायरेक्ट्री में सेव किया जाता है और फ़ाइल के नाम {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename} के रूप में होते हैं.

इन प्रॉपर्टी को सेट करने के लिए:

  1. किसी एडिटर में message-processor.properties फ़ाइल खोलें. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
    > vi /opt/apigee/customer/application/message-processor.properties
  2. प्रॉपर्टी को अपने हिसाब से सेट करें:
    conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages
  3. बदलावों को सेव करें.
  4. पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' उपयोगकर्ता के पास हो:
    > chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  5. Edge कॉम्पोनेंट को रीस्टार्ट करें:
    > /opt/apigee/apigee-service/bin/apigee-serviceedge-message-प्रोसेसर रीस्टार्ट

Private Cloud 4.15.07 और इससे पहले के वर्शन के लिए एज

डिफ़ॉल्ट रूप से, मैसेज लॉग मैसेज प्रोसेसर पर नीचे दी गई जगह पर मौजूद होते हैं:

/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/

मैसेज प्रोसेसर पर, message-logging.property फ़ाइल में नीचे दी गई प्रॉपर्टी में बदलाव करके, लॉग की डिफ़ॉल्ट जगह को बदला जा सकता है:

  • data.dir - लॉग फ़ाइल स्टोरेज का रूट पाथ सेट करता है. उदाहरण के लिए, data.direct=/opt/apigee4/var/log
  • log.root.dir - अगर इसे किसी मिलते-जुलते पाथ पर सेट किया जाता है, जैसे कि Log.root.dr=custom/folder/, तो पाथ को data.direct की जगह पर जोड़ दिया जाता है.

उदाहरण के लिए, दो प्रॉपर्टी का कॉम्बिनेशन, लॉग इन डायरेक्ट्री को /opt/apigee4/var/log/custom/folder/messagelog/ पर सेट करेगा (ध्यान दें कि /messagelog अपने-आप जुड़ जाता है).

अगर इसे एक ऐब्सलूट पाथ पर सेट किया जाता है, जैसे कि log.root.dir=/opt/apigee4/var/log/messages, तो मैसेज लॉग /opt/apigee4/var/log/messages/messagelog/ में स्टोर किए जाएंगे. Log.root.der में, ऐब्सलूट पाथ को data.dir से ज़्यादा अहमियत दी जाती है.

अगर आपको लॉग फ़ाइलों को किसी फ़्लैट फ़ाइल स्ट्रक्चर में सेव करना है, ताकि सभी लॉग फ़ाइलें एक ही डायरेक्ट्री में रखी जा सकें, तो Message प्रोसेसर पर message-logging.properties फ़ाइल में जाकर, enable.flat.directory.structure प्रॉपर्टी को 'सही' पर सेट करें. मैसेज को ऊपर दी गई प्रॉपर्टी के ज़रिए बताई गई डायरेक्ट्री में सेव किया जाता है और फ़ाइल के नाम {org}_{environment}_{api_proxy_name}_{revision}_{logging_policy_name}_{filename} के तौर पर होते हैं.

मैसेज टेंप्लेट में वैरिएबल के लिए डिफ़ॉल्ट वैल्यू

मैसेज टेंप्लेट में हर वैरिएबल के लिए, डिफ़ॉल्ट वैल्यू अलग-अलग तय की जा सकती है. उदाहरण के लिए, अगर वैरिएबल request.header.id को हल नहीं किया जा सकता, तो इसकी वैल्यू को unknown से बदल दिया जाता है.

<Message>This is a test message. id = {request.header.id:unknown}</Message>

Message एलिमेंट पर defaultVariableValue एट्रिब्यूट सेट करके, ऐसे सभी वैरिएबल के लिए एक सामान्य डिफ़ॉल्ट वैल्यू तय की जा सकती है जिन्हें ठीक नहीं किया गया है:

<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>

तीसरे पक्ष के लॉग मैनेजमेंट की सेवाएं कॉन्फ़िगर करना

MessageLogging नीति की मदद से, आपको Splunk, Sumo Logic, और Loggly जैसी तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को सिस्लॉग मैसेज भेजने की सुविधा मिलती है. अगर आपको इनमें से किसी भी सेवा को syslog की सुविधा भेजनी है, तो उस सेवा के दस्तावेज़ को देखें, ताकि उस सेवा के होस्ट, पोर्ट, और प्रोटोकॉल को कॉन्फ़िगर किया जा सके. इसके बाद, इस नीति पर Syslog एलिमेंट को उसके मुताबिक सेट करें.

तीसरे पक्ष के लॉग मैनेजमेंट के कॉन्फ़िगरेशन के लिए, नीचे दिए गए दस्तावेज़ देखें:

गड़बड़ी का रेफ़रंस

यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.

रनटाइम से जुड़ी गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी का कोड एचटीटीपी कोड स्थिति वजह
steps.messagelogging.StepDefinitionExecutionFailed 500 गड़बड़ी वाली स्ट्रिंग देखें.

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह समाधान
InvalidProtocol अगर <Protocol> एलिमेंट में बताया गया प्रोटोकॉल मान्य नहीं है, तो MessageLogging नीति को डिप्लॉय करने पर, यह गड़बड़ी दिख सकती है. सही प्रोटोकॉल टीसीपी और यूडीपी हैं. TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी का इस्तेमाल किया जा सकता है.
InvalidPort अगर <Port> एलिमेंट में पोर्ट नंबर नहीं बताया गया है या मान्य नहीं है, तो MessageLogging नीति के डिप्लॉयमेंट को इस गड़बड़ी के साथ लागू नहीं किया जा सकता. पोर्ट नंबर, शून्य से बड़ा पूर्णांक होना चाहिए.

गड़बड़ी वाले वैरिएबल

रनटाइम में कोई गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी देखें.

वैरिएबल जगह उदाहरण
fault.name="fault_name" fault_name, गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम की गड़बड़ियां टेबल में दिया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "StepDefinitionExecutionFailed"
messagelogging.policy_name.failed policy_name, उस नीति का उपयोगकर्ता तय किया गया नाम है जिसकी वजह से गड़बड़ी हुई है. messagelogging.ML-LogMessages.failed = true

गड़बड़ी के जवाब का उदाहरण

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed"
      },
      "faultstring":"Execution failed"
   }
}

गड़बड़ी के नियम का उदाहरण

<FaultRule name="MessageLogging">
    <Step>
        <Name>ML-LogMessages</Name>
        <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition>
    </Step>
    <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition>
</FaultRule>


फ़्लो वैरिएबल

नीति का पालन न होने पर, इन वैरिएबल की जानकारी अपने-आप भर जाती है.

  • messagelogging.failed
  • messagelogging.{stepdefinition-name}.failed

मिलते-जुलते विषय