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 नीति टाइप को कॉन्फ़िगर करने के लिए, इन एलिमेंट का इस्तेमाल करें.
फ़ील्ड का नाम | फ़ील्ड का ब्यौरा | |
---|---|---|
लोकल फ़ाइल डेस्टिनेशन. (फ़ाइल लॉगिंग की सुविधा सिर्फ़ प्राइवेट क्लाउड डिप्लॉयमेंट के लिए, Edge में काम करती है.) फ़ाइलें कहां सेव की जाती हैं, यह जानने के लिए Edge for Private Cloud में फ़ाइल की जगह की जानकारी लॉग करें लेख पढ़ें. |
Message |
टेक्स्ट को वैरिएबल के साथ मिलाकर, लॉग फ़ाइल में भेजने के लिए मैसेज बनाएं, ताकि आपकी ज़रूरत की जानकारी इकट्ठा की जा सके. सैंपल देखें. |
FileName |
उस लॉग फ़ाइल का नाम जिसमें मैसेज लॉग किया गया है. | |
FileRotationOptions |
||
rotateFileOnStartup |
एट्रिब्यूट. मान्य वैल्यू: अगर इस नीति को 'सही है' पर सेट किया जाता है, तो मैसेजिंग इंजन के हर बार रीस्टार्ट होने पर, लॉग फ़ाइल हर बार घूमती है. |
|
FileRotationType |
लॉग फ़ाइल की रोटेशन नीति (size या
time ) तय करती है. |
|
MaxFileSizeInMB |
(size को रोटेशन टाइप के तौर पर चुनने पर)
यह लॉग फ़ाइल का साइज़ तय करता है, जो लॉग मैसेज को
अलग फ़ाइल में ले जाने के लिए सर्वर को ट्रिगर करता है. लॉग फ़ाइल के तय साइज़ में पहुंचने के बाद, सर्वर
मौजूदा लॉग फ़ाइल का नाम बदल देता है. |
|
RotationFrequency |
(time को रोटेशन टाइप के तौर पर चुनने पर)
मिनट में वह समय बताता है जो लॉग मैसेज को किसी अलग फ़ाइल में ले जाने के लिए, सर्वर को
ट्रिगर करता है. तय अंतराल के खत्म हो जाने के बाद, मौजूदा लॉग फ़ाइल का नाम बदल दिया जाता है. |
|
MaxFilesToRetain |
इससे तय होता है कि आपकी रोटेशन सेटिंग में ज़्यादा से ज़्यादा कितने फ़ाइलें सेव करके रखी जाएं. डिफ़ॉल्ट वैल्यू 8 है. अगर आपने शून्य (0) सेट किया है, तो लॉग फ़ाइलें हमेशा के लिए सेव करके रखी जाती हैं. हालांकि, फ़ाइलों को उनकी रोटेशन सेटिंग के हिसाब से सेव किया जाता है. हालांकि, न तो कोई फ़ाइल मिटाई जाती है और न ही उसका नाम बदला जाता है. इसलिए, आने वाले समय में डिस्क से जुड़ी गड़बड़ियों से बचने के लिए, इसे शून्य से ज़्यादा पर सेट करें या पुरानी लॉग फ़ाइलों को पूरी तरह से मिटाने या संग्रहित करने के लिए, अपने-आप काम करने वाला कोई सामान्य सिस्टम लागू करें. |
|
BufferMessage |
अगर आपकी प्रॉक्सी के लिए एचटीटीपी स्ट्रीमिंग चालू है, तो अनुरोध/जवाब के मैसेज बफ़र नहीं होंगे. अगर आपको ऐसे कॉन्टेंट को लॉग करना है जिसे पार्स करने के लिए फ़्लो मैसेज की ज़रूरत हो, तो बफ़र मैसेज को 'सही' पर सेट करें. उदाहरण के लिए "स्ट्रीम की सुविधा वाला" सैंपल टैब देखें. डिफ़ॉल्ट: false |
|
एक सिलॉग डेस्टिनेशन. Splunk, Sumo Logic या Loggly को syslog की सुविधा भेजने के लिए, तीसरे पक्ष के लॉग मैनेजमेंट की सेवाएं कॉन्फ़िगर करना देखें. |
Message |
जो जानकारी आपको चाहिए उसे कैप्चर करने के लिए, टेक्स्ट को वैरिएबल के साथ मिलाकर syslog को भेजा जाने वाला मैसेज बनाएं. सैंपल देखें. ध्यान दें: गड़बड़ी का फ़्लो दिखने पर, PostClientFlow में रिस्पॉन्स वैरिएबल उपलब्ध नहीं होंगे. गड़बड़ी और सफल होने की स्थितियों, दोनों के लिए रिस्पॉन्स की जानकारी लॉग करने के लिए, मैसेज वैरिएबल का इस्तेमाल करें. इस्तेमाल से जुड़ी जानकारी भी देखें. |
Host |
सर्वर का होस्टनेम या आईपी पता जहां syslog भेजा जाना चाहिए. अगर इस एलिमेंट में यह एलिमेंट शामिल नहीं है, तो लोकल होस्ट डिफ़ॉल्ट तौर पर सेट होता है. | |
Port |
वह पोर्ट करें जहां syslog चालू है. इस एलिमेंट को शामिल न करने पर, डिफ़ॉल्ट कोड 514 होता है. | |
Protocol |
टीसीपी या यूडीपी (डिफ़ॉल्ट). यूडीपी बेहतर परफ़ॉर्म करता है, लेकिन टीसीपी प्रोटोकॉल, सिस्टम लॉग सर्वर पर मैसेज लॉग डिलीवरी की गारंटी देता है. TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी का इस्तेमाल किया जा सकता है. | |
FormatMessage |
ज़रूरी नहीं है, लेकिन Loggly के साथ इस्तेमाल करने के लिए,
इस एलिमेंट की मदद से, मैसेज से पहले जोड़े गए Apigee से जनरेट किए गए कॉन्टेंट के फ़ॉर्मैट को कंट्रोल किया जा सकता है. अगर इस नीति को 'सही है' पर सेट किया जाता है, तो सिस्टलॉग मैसेज से पहले वर्णों की तय संख्या तय होती है. इससे उस जानकारी को मैसेज से फ़िल्टर किया जा सकता है. यहां तय फ़ॉर्मैट का एक उदाहरण दिया गया है:
Apigee से जनरेट की गई जानकारी में ये चीज़ें शामिल होती हैं:
अगर इस नीति को 'गलत' (डिफ़ॉल्ट) पर सेट किया जाता है, तो मैसेज से पहले वे तय वर्ण नहीं जोड़े जाते. |
|
PayloadOnly |
यह एलिमेंट, Apigee से जनरेट किए गए मैसेज का फ़ॉर्मैट इस तरह सेट करता है कि उसमें सिर्फ़ syslog मैसेज का मुख्य हिस्सा शामिल हो. इसमें FormatMessage की मदद से तय किए गए पहले से जोड़े गए वर्ण शामिल नहीं होते हैं. अगर इस एलिमेंट को शामिल नहीं किया जाता या इसे खाली छोड़ दिया जाता है, तो डिफ़ॉल्ट वैल्यू FormatMessage देखें. |
|
DateFormat |
ज़रूरी नहीं. हर लॉग मैसेज का टाइमस्टैंप फ़ॉर्मैट करने के लिए, फ़ॉर्मैट वाली टेंप्लेट स्ट्रिंग.
डिफ़ॉल्ट रूप से, Apigee, |
|
SSLInfo |
इस सुविधा का इस्तेमाल करके, एसएसएल/TLS के ज़रिए मैसेज लॉग किए जा सकते हैं. सब-एलिमेंट अगर इस एलिमेंट को शामिल नहीं किया जाता या इसे खाली छोड़ दिया जाता है, तो डिफ़ॉल्ट वैल्यू 'गलत' पर सेट हो जाती है. यह TLS/एसएसएल नहीं है. <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <SSLInfo> टैग को उसी तरह कॉन्फ़िगर किया जा सकता है जिस तरह आप TargetEndpoint पर कॉन्फ़िगर करते हैं. इसमें दो-तरफ़ा TLS/एसएसएल को चालू करना भी शामिल है, जैसा कि एपीआई प्रॉक्सी कॉन्फ़िगरेशन के रेफ़रंस में बताया गया है. इसमें सिर्फ़ टीसीपी प्रोटोकॉल काम करता है. |
|
logLevel |
ज़रूरी नहीं. मान्य वैल्यू: मैसेज लॉग में शामिल करने के लिए, जानकारी का एक खास लेवल सेट करें. अगर |
स्कीमा
ट्रैक के इस्तेमाल से जुड़ी जानकारी
किसी API प्रॉक्सी फ़्लो में MessageLogging नीति अटैच करते समय, इसे प्रॉक्सीEndpoint रिस्पॉन्स में PostClientFlow नाम के एक खास फ़्लो में रखने के बारे में सोचें. PostClientFlow, अनुरोध करने वाले क्लाइंट को जवाब भेजे जाने के बाद ही काम करता है, जिससे यह पक्का होता है कि लॉग करने के लिए सभी मेट्रिक उपलब्ध हैं. PostClientFlow का इस्तेमाल करने के बारे में जानकारी के लिए, एपीआई प्रॉक्सी कॉन्फ़िगरेशन रेफ़रंस देखें.
PostClientFlow दो तरह से खास है:
- इसे सिर्फ़ रिस्पॉन्स फ़्लो के हिस्से के तौर पर चलाया जाता है.
- प्रॉक्सी के गड़बड़ी की स्थिति में आने के बाद, सिर्फ़ यही फ़्लो चलाया जाता है.
प्रॉक्सी की प्रोसेस पूरी हो गई है या नहीं हो पाई, लेकिन इसे एक्ज़ीक्यूट किया जाता है. इसलिए, 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
फ़ॉर्मैट बदलने के लिए:
- किसी एडिटर में message-processor.properties फ़ाइल खोलें. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
> vi /opt/apigee/customer/application/message-processor.properties - प्रॉपर्टी को अपने हिसाब से सेट करें:
conf_system_apigee.syslogger.dateFormat=yy/MM/dd'T'HH:mm:ss.SSSZ - बदलावों को सेव करें.
- पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' उपयोगकर्ता के पास हो:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - 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}
के रूप में होते हैं.
इन प्रॉपर्टी को सेट करने के लिए:
- किसी एडिटर में message-processor.properties फ़ाइल खोलें. अगर फ़ाइल मौजूद नहीं है, तो इसे बनाएं:
> vi /opt/apigee/customer/application/message-processor.properties - प्रॉपर्टी को अपने हिसाब से सेट करें:
conf/message-logging.properties+log.root.dir=/opt/apigee/var/log/messages - बदलावों को सेव करें.
- पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक 'apigee' उपयोगकर्ता के पास हो:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - 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 एलिमेंट को उसके मुताबिक सेट करें.
तीसरे पक्ष के लॉग मैनेजमेंट के कॉन्फ़िगरेशन के लिए, नीचे दिए गए दस्तावेज़ देखें:
- Splunk (प्रॉडक्ट वर्शन चुनें)
यह Apigee कम्यूनिटी पोस्ट भी देखें: https://community.apigee.com/content/kbentry/13298/log-messages-into-splunk.html -
Sumo
लॉजिक
- यह Apigee कम्यूनिटी पोस्ट भी देखें: https://community.apigee.com/questions/5226/setting-up-logging-with-sumo-logic-using-host-shou.html
- डेटा को लॉग करने वाली सेवा के तौर पर, Sumo Logic का इस्तेमाल करने के कुछ उदाहरण के लिए, Apigee की कम्यूनिटी पोस्ट देखें. यह समाधान, Sumo Logic एचटीटीपी सोर्स कलेक्टर को एचटीटीपी पोस्ट अनुरोध करने के लिए, एक JavaScript नीति का इस्तेमाल करता है: https://community.apigee.com/articles/32286/logging-to-sumo-logic-using-javascript-and-http.html
- Loggly
Loggly का इस्तेमाल करते समय, नीति में<FormatMessage>true</FormatMessage>
की ज़रूरत<Syslog>
एलिमेंट के चाइल्ड के तौर पर होती है.
Loggly में मैसेज लॉग करने के बारे में ज़्यादा जानकारी के लिए, यह Apigee कम्यूनिटी पोस्ट भी देखें: https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
गड़बड़ी का रेफ़रंस
यह सेक्शन गड़बड़ी के कोड और दिखाए गए गड़बड़ी के मैसेज के बारे में बताता है. साथ ही, इस नीति के ट्रिगर होने पर Edge की मदद से सेट की गई गड़बड़ी के वैरिएबल के बारे में बताता है. यह जानकारी जानना ज़रूरी है कि क्या गड़बड़ियों को ठीक करने के लिए, गड़बड़ी से जुड़े नियम बनाए जा रहे हैं. ज़्यादा जानने के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी और गड़बड़ियों को ठीक करने के तरीके देखें.
रनटाइम से जुड़ी गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी का कोड | एचटीटीपी कोड स्थिति | वजह |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 | गड़बड़ी वाली स्ट्रिंग देखें. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाले किसी प्रॉक्सी को डिप्लॉय किया जाता है.
गड़बड़ी का नाम | वजह | समाधान |
---|---|---|
InvalidProtocol |
अगर <Protocol> एलिमेंट में बताया गया प्रोटोकॉल मान्य नहीं है, तो MessageLogging नीति को डिप्लॉय करने पर, यह गड़बड़ी दिख सकती है. सही प्रोटोकॉल टीसीपी और यूडीपी हैं.
TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी का इस्तेमाल किया जा सकता है. |
build |
InvalidPort |
अगर <Port> एलिमेंट में पोर्ट नंबर
नहीं बताया गया है या मान्य नहीं है, तो MessageLogging नीति के डिप्लॉयमेंट को इस गड़बड़ी के साथ लागू नहीं किया जा सकता. पोर्ट नंबर,
शून्य से बड़ा पूर्णांक होना चाहिए. |
build |
गड़बड़ी वाले वैरिएबल
रनटाइम में कोई गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, नीति से जुड़ी गड़बड़ियों के बारे में आपके लिए ज़रूरी जानकारी देखें.
वैरिएबल | जगह | उदाहरण |
---|---|---|
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
मिलते-जुलते विषय
- एज के ज़रिए दिखाए गए वैरिएबल: वैरिएबल संदर्भ