MessageLogging नीति

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

क्या

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

सैंपल

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 खाते में लॉग करने के लिए किया जाता है. syslog के लिए कॉन्फ़िगर किए जाने पर, एपीआई प्रॉक्सी, Apigee Edge से लॉग मैसेज को रिमोट syslog सर्वर पर फ़ॉरवर्ड करेगी. आपके पास पहले से ही एक syslog सर्वर उपलब्ध होना चाहिए. अगर ऐसा नहीं है, तो Splunk, Sumo Logic, और Loggly जैसी सार्वजनिक लॉग मैनेजमेंट सेवाएं उपलब्ध हैं. तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं को कॉन्फ़िगर करना लेख पढ़ें.

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

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

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> ब्लॉक जोड़कर, तीसरे पक्ष की मैसेज लॉगिंग की सेवा देने वाली कंपनियों को टीएलएस/एसएसएल पर मैसेज भेजे जा सकते हैं.

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

<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 for Private Cloud डिप्लॉयमेंट में काम करती है.) फ़ाइलें कहां सेव की जाती हैं, इस बारे में जानने के लिए 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

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

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

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

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

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

BufferMessage

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

Syslog

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

Message

syslog को भेजे जाने वाले मैसेज को बनाएं. इसके लिए, टेक्स्ट और वैरिएबल को मिलाकर, अपनी ज़रूरत के हिसाब से जानकारी कैप्चर करें. नमूने देखें.

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

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

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

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

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

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

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

  • <14> - यह मैसेज के लॉग लेवल और फ़ैसिलिटी लेवल के आधार पर तय किया गया प्राथमिकता स्कोर है. इसके बारे में जानने के लिए, Syslog Protocol देखें.
  • 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

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

इस एलिमेंट को शामिल न करने या इसे खाली छोड़ने पर, डिफ़ॉल्ट वैल्यू के तौर पर फ़ॉल्स (कोई टीएलएस/एसएसएल नहीं) को चुना जाता है.

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

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

logLevel

ज़रूरी नहीं.

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

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

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

स्कीमा


इस्तेमाल की जानकारी

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

PostClientFlow दो मामलों में खास है:

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

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

यहां दी गई ट्रेस इमेज में, MessageLogging नीति को PostClientFlow के हिस्से के तौर पर लागू होते हुए दिखाया गया है. यह नीति, DefaultFaultRule के लागू होने के बाद लागू होती है:

इस उदाहरण में, Verify API Key नीति के उल्लंघन की वजह से गड़बड़ी हुई है. ऐसा इसलिए हुआ, क्योंकि कुंजी अमान्य है.

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

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

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

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

उपयोगकर्ताओं को नए syslog एंडपॉइंट पर भेजे गए लॉग मैसेज मिलने में देरी हो सकती है. ऐसा नीति में "कोल्ड स्टार्ट" के लिए तय किए गए व्यवहार की वजह से होता है. जब कोई नया लॉगिंग डेस्टिनेशन कॉन्फ़िगर किया जाता है, तो मौजूदा लॉगिंग डेस्टिनेशन के अलावा, मैसेज प्रोसेसर (एमपी) उन्हें भेजने से पहले, मेमोरी में 1,000 लॉग मैसेज को सबसे पहले कतार में लगा सकता है. कम ट्रैफ़िक वाले एनवायरमेंट में, इससे शुरुआती देरी हो सकती है. आम तौर पर, प्रोडक्शन वर्कलोड के लिए यह शुरुआती देरी नहीं दिखती, क्योंकि मैसेज तेज़ी से इकट्ठा होने चाहिए. थ्रेशोल्ड पूरा होने के बाद, लॉग मैसेज उम्मीद के मुताबिक डिलीवर किए जाएंगे. मैसेज प्रोसेसर को ग्रेसफ़ुल तरीके से रीस्टार्ट करने पर भी, मैसेज डिलीवर हो सकते हैं. ऐसा इसलिए, क्योंकि वे मैसेज की सूची से हट जाते हैं.

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

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

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

  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 Message Processor को फिर से चालू करें:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Edge for Private Cloud में लॉग फ़ाइल की जगह

Edge for Private Cloud 4.16.01 और इसके बाद के वर्शन

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

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

डिफ़ॉल्ट लॉग लोकेशन को बदला जा सकता है. इसके लिए, Message Processors पर मौजूद 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 को true पर सेट करें. मैसेज, ऊपर दी गई प्रॉपर्टी के हिसाब से तय की गई डायरेक्ट्री में सेव किए जाते हैं. साथ ही, फ़ाइल के नाम {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-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 प्रॉपर्टी को true पर सेट करें. मैसेज, ऊपर दी गई प्रॉपर्टी के हिसाब से तय की गई डायरेक्ट्री में सेव किए जाते हैं. साथ ही, फ़ाइल के नाम इस फ़ॉर्म में होते हैं: {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 नीति की मदद से, syslog मैसेज को तीसरे पक्ष की लॉग मैनेजमेंट सेवाओं पर भेजा जा सकता है. जैसे, Splunk, Sumo Logic, और Loggly. अगर आपको इनमें से किसी सेवा पर syslog भेजना है, तो सेवा के होस्ट, पोर्ट, और प्रोटोकॉल को कॉन्फ़िगर करने के लिए, उस सेवा का दस्तावेज़ देखें. इसके बाद, इस नीति पर Syslog एलिमेंट को उसी के मुताबिक सेट करें.

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

गड़बड़ी की जानकारी

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

रनटाइम की गड़बड़ियां

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

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

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

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

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

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

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

वैरिएबल कहां उदाहरण
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

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