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

क्या
मैसेज को लॉग करना, एपीआई रनटाइम एनवायरमेंट में समस्याओं को ट्रैक करने का सबसे अच्छा तरीका है. अपने एपीआई पर MessageLogging नीति को अटैच और कॉन्फ़िगर किया जा सकता है, ताकि कस्टम मैसेज को किसी लोकल डिस्क (सिर्फ़ निजी क्लाउड के लिए Edge) या सिग्नल प्रोसेसिंग सिस्टम (एसआईएसएल) में लॉग किया जा सके.
सैंपल
Syslog
<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 के लिए कॉन्फ़िगर किया जाता है, तो वह Apigee Edge से रिमोट syslog सर्वर पर लॉग मैसेज फ़ॉरवर्ड करेगा. आपके पास पहले से ही एक सिस्टम लॉग सर्वर होना चाहिए. अगर ऐसा नहीं है, तो Splunk, Sumo Logic, और Loggly जैसी सार्वजनिक लॉग मैनेजमेंट सेवाएं उपलब्ध हैं. तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को कॉन्फ़िगर करना लेख पढ़ें.
उदाहरण के लिए, मान लें कि आपको हर उस अनुरोध मैसेज की जानकारी को लॉग करना है जो आपके एपीआई को उपभोक्ता ऐप्लिकेशन से मिलता है. वैल्यू 3f509b58
, loggly सेवा के लिए खास तौर पर बनाई गई एक मुख्य वैल्यू के बारे में बताती है. अगर आपके पास loggly खाता है, तो अपनी loggly कुंजी डालें. जनरेट किए गए
लॉग मैसेज में चार वैल्यू अपने-आप भर जाएंगी: लेन-देन से जुड़े संगठन, एपीआई प्रोक्सी, और एनवायरमेंट का नाम. साथ ही, अनुरोध मैसेज में क्वेरी पैरामीटर की वैल्यू भी अपने-आप भर जाएगी.
अगर आपके पास निजी क्लाउड डिप्लॉयमेंट के लिए Edge है, तो आपके पास किसी फ़ाइल में लॉग मैसेज लिखने का भी विकल्प है.
TLS/SSL पर Syslog
<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/SSL के ज़रिए मैसेज भेजे जा सकते हैं.
फ़ाइल का रोटेशन: साइज़
<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 for Private Cloud में लॉग फ़ाइल की जगह लेख पढ़ें. |
Message |
लॉग फ़ाइल में भेजे जाने वाले मैसेज को बनाएं. इसके लिए, अपनी पसंद की जानकारी कैप्चर करने के लिए, टेक्स्ट को वैरिएबल के साथ जोड़ें. सैंपल देखें. |
FileName |
लॉग फ़ाइल का बेस नाम.
फ़ाइल का पाथ न दें. उदाहरण के लिए, यह FileName एलिमेंट, फ़ाइल पाथ की जानकारी देता है और यह अमान्य है:
<FileName>/opt/apigee/var/log/messages/mylog.log</FileName> यह कोड सिर्फ़ फ़ाइल का नाम बताता है और यह मान्य है: <FileName>mylog.log</FileName> फ़ाइल को सेव करने की जगह के बारे में जानने के लिए, Edge for Private Cloud में लॉग फ़ाइल की जगह लेख पढ़ें. |
|
FileRotationOptions |
||
rotateFileOnStartup |
एट्रिब्यूट. मान्य वैल्यू: अगर इसे 'सही है' पर सेट किया जाता है, तो मैसेजिंग इंजन के रीस्टार्ट होने पर, लॉग फ़ाइल को रोटेट किया जाता है. |
|
FileRotationType |
लॉग फ़ाइल के रोटेशन की नीति (size या
time ) तय करता है. |
|
MaxFileSizeInMB |
(रोटेशन टाइप के तौर पर size चुनने पर)
यह लॉग फ़ाइल का साइज़ तय करता है. इससे सर्वर, लॉग मैसेज को एक अलग फ़ाइल में ले जाता है. लॉग फ़ाइल तय किए गए साइज़ तक पहुंचने के बाद, सर्वर मौजूदा लॉग फ़ाइल का नाम बदल देता है. |
|
RotationFrequency |
(रोटेशन टाइप के तौर पर time चुनने पर)
यह मिनट में वह समय तय करता है जिस पर सर्वर, लॉग मैसेज को अलग फ़ाइल में ले जाता है. तय समयसीमा खत्म होने के बाद, मौजूदा लॉग फ़ाइल का नाम बदल दिया जाता है. |
|
MaxFilesToRetain |
यह आपकी रोटेशन सेटिंग के हिसाब से, सेव की जाने वाली फ़ाइलों की ज़्यादा से ज़्यादा संख्या तय करता है. डिफ़ॉल्ट वैल्यू 8 है. अगर आपने शून्य (0) चुना है, तो लॉग फ़ाइलें हमेशा के लिए सेव रहती हैं. हालांकि, ये फ़ाइलें, फ़ाइल रोटेशन की आपकी सेटिंग के हिसाब से सेव रहती हैं. हालांकि, इनमें से किसी भी फ़ाइल को मिटाया या उसका नाम नहीं बदला जाता. इसलिए, आने वाले समय में डिस्क भर जाने से जुड़ी गड़बड़ियों से बचने के लिए, इसे शून्य से ज़्यादा की वैल्यू पर सेट करें. इसके अलावा, पुरानी लॉग फ़ाइलों को अपने-आप मिटाने या संग्रहित करने के लिए, नियमित तौर पर काम करने वाला सिस्टम लागू करें. |
|
BufferMessage |
अगर आपकी प्रॉक्सी के लिए एचटीटीपी स्ट्रीमिंग की सुविधा चालू है, तो अनुरोध/जवाब वाले मैसेज बफ़र नहीं किए जाते. अगर आपको ऐसा कॉन्टेंट लॉग करना है जिसके लिए फ़्लो मैसेज को पार्स करना ज़रूरी है, तो BufferMessage को 'सही' पर सेट करें. उदाहरण के लिए, "स्ट्रीम करने की सुविधा चालू है" सैंपल टैब देखें. डिफ़ॉल्ट: गलत |
|
कोई सिग्नललॉग डेस्टिनेशन. Splunk, Sumo Logic या Loggly को सिस्लॉग भेजने के लिए, तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को कॉन्फ़िगर करना लेख पढ़ें. |
Message |
syslog को भेजे जाने वाले मैसेज को बनाएं. इसके लिए, अपनी पसंद की जानकारी कैप्चर करने के लिए, टेक्स्ट को वैरिएबल के साथ जोड़ें. सैंपल देखें. ध्यान दें: गड़बड़ी वाले फ़्लो के बाद, PostClientFlow में रिस्पॉन्स वैरिएबल उपलब्ध नहीं होंगे. गड़बड़ी और सफलता, दोनों स्थितियों के लिए रिस्पॉन्स की जानकारी को लॉग करने के लिए, मैसेज वैरिएबल का इस्तेमाल करें. इस्तेमाल से जुड़ी जानकारी भी देखें. |
Host |
उस सर्वर का होस्टनेम या आईपी पता जहां syslog भेजा जाना चाहिए. अगर इस एलिमेंट को शामिल नहीं किया जाता है, तो डिफ़ॉल्ट तौर पर localhost का इस्तेमाल किया जाता है. | |
Port |
वह पोर्ट जहां syslog चल रहा है. अगर इस एलिमेंट को शामिल नहीं किया जाता है, तो डिफ़ॉल्ट वैल्यू 514 होगी. | |
Protocol |
टीसीपी या यूडीपी (डिफ़ॉल्ट). यूडीपी की परफ़ॉर्मेंस बेहतर होती है, लेकिन टीसीपी प्रोटोकॉल, syslog सर्वर पर मैसेज लॉग डिलीवरी की गारंटी देता है. TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी काम करता है. | |
FormatMessage |
ज़रूरी नहीं है, लेकिन Loggly के साथ इस्तेमाल करने के लिए इस एलिमेंट की मदद से, मैसेज के शुरू में जोड़े गए Apigee से जनरेट किए गए कॉन्टेंट के फ़ॉर्मैट को कंट्रोल किया जा सकता है. अगर इस विकल्प को 'सही है' पर सेट किया जाता है, तो syslog मैसेज के शुरू में एक तय संख्या में वर्ण जोड़ दिए जाते हैं. इससे, मैसेज से उस जानकारी को फ़िल्टर किया जा सकता है. यहां फ़िक्स किए गए फ़ॉर्मैट का उदाहरण दिया गया है:
Apigee से जनरेट की गई जानकारी में ये चीज़ें शामिल हैं:
अगर इसे 'गलत है' (डिफ़ॉल्ट) पर सेट किया जाता है, तो मैसेज के शुरू में उन तय किए गए वर्णों को नहीं जोड़ा जाता. |
|
PayloadOnly |
यह एलिमेंट, Apigee से जनरेट किए गए मैसेज का फ़ॉर्मैट सेट करता है, ताकि उसमें सिर्फ़ syslog मैसेज का मुख्य हिस्सा शामिल हो. इसमें FormatMessage से तय किए गए पहले के वर्ण शामिल नहीं होते. इस एलिमेंट को शामिल न करने या इसे खाली छोड़ने पर, डिफ़ॉल्ट वैल्यू FormatMessage देखें. |
|
DateFormat |
ज़रूरी नहीं. फ़ॉर्मैटिंग टेंप्लेट स्ट्रिंग, जिसका इस्तेमाल हर लॉग मैसेज के टाइमस्टैंप को फ़ॉर्मैट करने के लिए किया जाता है.
डिफ़ॉल्ट रूप से, Apigee |
|
SSLInfo |
एसएसएल/टीएलएस के ज़रिए मैसेज को लॉग करने की सुविधा देता है. सब-एलिमेंट इस एलिमेंट को शामिल न करने या इसे खाली छोड़ने पर, डिफ़ॉल्ट वैल्यू के तौर पर 'गलत' (कोई TLS/SSL नहीं) दिखेगी. <SSLInfo> <Enabled>true</Enabled> </SSLInfo> <SSLInfo> टैग को उसी तरह कॉन्फ़िगर किया जा सकता है जिस तरह TargetEndpoint को कॉन्फ़िगर किया जाता है. इसमें, एपीआई प्रॉक्सी कॉन्फ़िगरेशन रेफ़रंस में बताए गए तरीके के मुताबिक, दोतरफ़ा TLS/एसएसएल को चालू करना भी शामिल है. सिर्फ़ TCP प्रोटोकॉल का इस्तेमाल किया जा सकता है. |
|
logLevel |
ज़रूरी नहीं. मान्य वैल्यू: मैसेज लॉग में शामिल करने के लिए, जानकारी का कोई लेवल सेट करें. अगर |
स्कीमा
इस्तेमाल से जुड़ी जानकारी
किसी एपीआई प्रॉक्सी फ़्लो में MessageLogging नीति अटैच करते समय, इसे ProxyEndpoint रिस्पॉन्स में, PostClientFlow नाम के खास फ़्लो में डालें. अनुरोध करने वाले क्लाइंट को जवाब भेजने के बाद, PostClientFlow ट्रिगर होता है. इससे यह पक्का होता है कि सभी मेट्रिक, लॉग करने के लिए उपलब्ध हों. PostClientFlow का इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, एपीआई प्रॉक्सी कॉन्फ़िगरेशन का रेफ़रंस देखें.
PostClientFlow दो तरीकों से खास है:
- यह सिर्फ़ रिस्पॉन्स फ़्लो के हिस्से के तौर पर लागू होता है.
- यह प्रोक्सी के गड़बड़ी की स्थिति में आने के बाद, चलाया जाने वाला एकमात्र फ़्लो है.
यह प्रोसेस, प्रॉक्सी के काम करने या न करने के बावजूद लागू होती है. इसलिए, PostClientFlow में MessageLogging की नीतियां डाली जा सकती हैं. इससे यह पक्का किया जा सकता है कि ये नीतियां हमेशा लागू हों.
नीचे दी गई ट्रैक इमेज में, DefaultFaultRule लागू होने के बाद, PostClientFlow के हिस्से के तौर पर MessageLogging नीति लागू होने की जानकारी दी गई है:
इस उदाहरण में, एपीआई पासकोड की पुष्टि करने की नीति की वजह से गड़बड़ी हुई, क्योंकि पासकोड अमान्य था.
यहां ProxyEndpoint की परिभाषा दी गई है, जिसमें PostClientFlow शामिल है:
<ProxyEndpoint name="default"> ... <PostClientFlow> <Response> <Step> <Name>Message-Logging-1</Name> </Step> </Response> </PostClientFlow> ... </ProxyEndpoint>
Edge, मैसेज को सामान्य टेक्स्ट के तौर पर लॉग करता है. साथ ही, लॉगिंग को कॉन्फ़िगर करके वैरिएबल शामिल किए जा सकते हैं. जैसे, अनुरोध या जवाब मिलने की तारीख और समय, अनुरोध पर उपयोगकर्ता की पहचान, वह सोर्स आईपी पता जिससे अनुरोध भेजा गया था वगैरह. Edge, मैसेज को एक साथ रिकॉर्ड नहीं करता. इसका मतलब है कि आपके एपीआई में कॉलआउट को ब्लॉक करने की वजह से कोई लैटेंसी नहीं आती.
MessageLogging नीति, मेमोरी में लॉग किए गए मैसेज को बफ़र में लिखती है. मैसेज लॉगर, बफ़र से मैसेज पढ़ता है और फिर कॉन्फ़िगर किए गए डेस्टिनेशन पर लिखता है. हर डेस्टिनेशन का अपना बफ़र होता है.
अगर बफ़र में डेटा लिखने की दर, डेटा पढ़ने की दर से ज़्यादा हो जाती है, तो बफ़र ओवरफ़्लो हो जाता है और डेटा लॉग नहीं हो पाता. ऐसा होने पर, आपको लॉग फ़ाइल में यह मैसेज दिख सकता है:
Log message size exceeded. Increase the max message size setting
अगर आपको Edge for 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 और उसके बाद के वर्शन के लिए, /opt/apigee/customer/application/message-processor.properties फ़ाइल में conf/message-logging.properties+max.
log.message.size.in.kb
प्रॉपर्टी सेट करें और मैसेज प्रोसेसर को फिर से शुरू करें. कृपया ध्यान दें कि इस प्रॉपर्टी को शुरुआत में डिफ़ॉल्ट रूप से हटा दिया जाता है.
ध्यान दें: Edge में जवाब वाले मैसेज के वैरिएबल, गड़बड़ी के फ़्लो से उपलब्ध नहीं हैं. अगर पिछला फ़्लो गड़बड़ी वाला फ़्लो था, तो ये वैरिएबल PostClientFlow में भी उपलब्ध नहीं होते. अगर आपको PostClientFlow से मिले जवाब की जानकारी को लॉग करना है, तो message ऑब्जेक्ट का इस्तेमाल करें. इस ऑब्जेक्ट का इस्तेमाल करके, रिस्पॉन्स में मौजूद हेडर और अन्य जानकारी हासिल की जा सकती है. भले ही, कोई गड़बड़ी हुई हो या नहीं. ज़्यादा जानकारी और उदाहरण के लिए, मैसेज के वैरिएबल देखें.
Edge for Private Cloud में, लॉग मैसेज के टाइमस्टैंप को कंट्रोल करना
डिफ़ॉल्ट रूप से, सभी लॉग मैसेज में टाइमस्टैंप का यह फ़ॉर्मैट होता है:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
सिस्टम के लिए डिफ़ॉल्ट तौर पर लागू होने वाली इस सेटिंग को, syslog डेस्टिनेशन के लिए बदला जा सकता है. इसके लिए,
DateFormat
एलिमेंट का इस्तेमाल करें. इस टेंप्लेट के काम करने के तरीके के बारे में, Java की SimpleDateFormat क्लास के दस्तावेज़ में बताया गया है. इस परिभाषा के मुताबिक, yyyy
की जगह
साल के चार अंक, MM
की जगह महीने के दो अंक वगैरह डाल दिए जाएंगे.
ऊपर दिए गए फ़ॉर्मैट से, इस तरह की स्ट्रिंग मिल सकती है:
2022-09-28T22:38:11.721+0000
उस फ़ॉर्मैट को कंट्रोल करने के लिए, Edge Message Processor पर 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 Message Processor को रीस्टार्ट करें:
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Edge for Private Cloud में फ़ाइल की जगह को लॉग करना
Edge for Private Cloud 4.16.01 और इसके बाद के वर्शन
डिफ़ॉल्ट रूप से, निजी क्लाउड के मैसेज लॉग, मैसेज प्रोसेसर नोड पर इस डायरेक्ट्री में मौजूद होते हैं:
/opt/apigee/var/log/edge-message-processor/messagelogging/org_name/environment/api_proxy_name/revision/logging_policy_name/
मैसेज प्रोसेसर पर मौजूद, message-logging.properties फ़ाइल में प्रॉपर्टी में बदलाव करके, लॉग की डिफ़ॉल्ट जगह बदली जा सकती है:
- 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.properties फ़ाइल में 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-service edge-message-processor restart
Edge for Private Cloud 4.15.07 और उससे पहले के वर्शन
डिफ़ॉल्ट रूप से, मैसेज प्रोसेसर पर मैसेज लॉग यहां मौजूद होते हैं:
/opt/apigee4/var/log/apigee/message-processor/messagelog/{org}/{environment}/{api_proxy_name}/{revision}/{logging_policy_name}/
मैसेज प्रोसेसर पर मौजूद, message-logging.properties फ़ाइल में इन प्रॉपर्टी में बदलाव करके, लॉग की डिफ़ॉल्ट जगह बदली जा सकती है:
- data.dir - लॉग फ़ाइल के स्टोरेज के लिए रूट पाथ सेट करता है. उदाहरण के लिए, data.dir=/opt/apigee4/var/log
- log.root.dir - अगर इसे किसी रिलेटिव पाथ पर सेट किया जाता है, जैसे कि log.root.dir=custom/folder/, तो पाथ को data.dir की जगह पर जोड़ दिया जाता है.
उदाहरण के लिए, इन दोनों प्रॉपर्टी के कॉम्बिनेशन से, लॉगिंग डायरेक्ट्री को /opt/apigee4/var/log/custom/folder/messagelog/ पर सेट किया जाएगा. ध्यान दें कि /messagelog अपने-आप जुड़ जाता है.
अगर इसे किसी खास पाथ पर सेट किया जाता है, जैसे कि log.root.dir=/opt/apigee4/var/log/messages, तो मैसेज लॉग /opt/apigee4/var/log/messages/messagelog/ में सेव हो जाएंगे. log.root.dir में मौजूद पूर्ण पाथ को data.dir पर प्राथमिकता दी जाती है.
अगर आपको लॉग फ़ाइलों को फ़्लैट फ़ाइल स्ट्रक्चर में सेव करना है, ताकि सभी लॉग फ़ाइलें एक ही डायरेक्ट्री में सेव की जा सकें, तो मैसेज प्रोसेसर पर message-logging.properties फ़ाइल में enable.flat.directory.structure property को 'सही' पर सेट करें. मैसेज, ऊपर दी गई प्रॉपर्टी से तय की गई डायरेक्ट्री में सेव किए जाते हैं. साथ ही, फ़ाइल के नाम {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-which-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 का इस्तेमाल करते समय,<Syslog>
एलिमेंट के चाइल्ड के तौर पर,<FormatMessage>true</FormatMessage>
को नीति में शामिल करना ज़रूरी है.
Loggly में मैसेज लॉग करने के बारे में ज़्यादा जानने के लिए, Apigee कम्यूनिटी की यह पोस्ट भी देखें: https://community.apigee.com/content/kbentry/14798/log-messages-into-loggly.html
गड़बड़ी का रेफ़रंस
इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इन गड़बड़ियों के वैरिएबल के बारे में भी बताया गया है, जो Edge की मदद से सेट किए जाते हैं. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.
रनटाइम की गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 | गड़बड़ी वाली स्ट्रिंग देखें. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाली प्रॉक्सी को डिप्लॉय किया जाता है.
गड़बड़ी का नाम | वजह | ठीक करें |
---|---|---|
InvalidProtocol |
इस गड़बड़ी की वजह से, MessageLogging नीति को लागू नहीं किया जा सकता, अगर प्रोटोकॉल
<Protocol> एलिमेंट में बताया गया, मान्य नहीं है. मान्य प्रोटोकॉल, टीसीपी और यूडीपी हैं.
TLS/एसएसएल पर syslog मैसेज भेजने के लिए, सिर्फ़ टीसीपी का इस्तेमाल किया जा सकता है. |
build |
InvalidPort |
इस गड़बड़ी की वजह से हो सकता है कि MessageLogging नीति को लागू न करें: पोर्ट नंबर
को <Port> एलिमेंट में नहीं बताया गया है या वह मान्य नहीं है. पोर्ट नंबर
शून्य से बड़ा पूर्णांक. |
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
मिलते-जुलते विषय
- Edge से एक्सपोज़ किए गए वैरिएबल: वैरिएबल का रेफ़रंस