MessageLogging নীতি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

কী

API রানটাইম এনভায়রনমেন্টে সমস্যা ট্র্যাক করার সবচেয়ে ভাল উপায় হল মেসেজ লগ করা। কাস্টম মেসেজ লগ করার জন্য আপনার API-তে MessageLogging নীতি অ্যাটাচ ও কনফিগার করতে পারবেন। এগুলি লোকাল ডিস্ক (শুধুমাত্র প্রাইভেট ক্লাউডের জন্য Edge) বা 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-এর জন্য কনফিগার করা হলে, API প্রক্সি Apigee Edge থেকে রিমোট syslog সার্ভারে লগ মেসেজ ফরওয়ার্ড করবে। আপনার কাছে আগে থেকেই উপলভ্য syslog সার্ভার থাকতে হবে। যদি না থাকে, তাহলে Splunk, Sumo Logic ও Loggly-এর মতো পাবলিক লগ ম্যানেজমেন্ট পরিষেবা উপলভ্য। থার্ড-পার্টি লগ ম্যানেজমেন্ট পরিষেবা কনফিগার করা দেখুন।

যেমন, ধরে নিন যে আপনার API, গ্রাহক অ্যাপ থেকে পাওয়া প্রতিটি অনুরোধ মেসেজ সম্পর্কে তথ্য লগ করতে হবে। 3f509b58 ভ্যালুটি loggly পরিষেবার জন্য নির্দিষ্ট কী ভ্যালুকে বোঝায়। আপনার Loggly অ্যাকাউন্ট থাকলে, আপনার Loggly কী দিয়ে পরিবর্তন করুন। জেনারেট করা লগ মেসেজে চারটি ভ্যালু থাকবে: ট্রানজ্যাকশনের সাথে যুক্ত সংস্থা, API প্রক্সি ও এনভায়রনমেন্টের নাম এবং অনুরোধ মেসেজে কোয়েরি প্যারামিটারের ভ্যালু।

আপনার কাছে 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>

আপনি TLS/SSL-এর মাধ্যমে থার্ড-পার্টি মেসেজ লগিং প্রদানকারীদের মেসেজ পাঠাতে পারবেন, এর জন্য <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-এ লগ ফাইলের লোকেশন দেখুন।

Message আপনি যে তথ্য ক্যাপচার করতে চান তা পেতে, ভেরিয়েবলের সাথে টেক্সট মিলিয়ে লগ ফাইলে পাঠানোর জন্য মেসেজ তৈরি করুন। নমুনা দেখুন।
FileName লগ ফাইলের বেস নাম। কোনও ফাইল পাথ উল্লেখ করবেন না। যেমন, এই FileName এলিমেন্ট একটি ফাইল পাথ নির্দিষ্ট করে এবং এটি সঠিক নয়:
<FileName>/opt/apigee/var/log/messages/mylog.log</FileName>

এই কোডটি শুধুমাত্র ফাইলের নাম নির্দিষ্ট করে এবং এটি বৈধ:

<FileName>mylog.log</FileName>

ফাইল কোথায় স্টোর করা হয় সেই সংক্রান্ত তথ্যের জন্য, প্রাইভেট ক্লাউডের জন্য Edge-এ লগ ফাইলের লোকেশন দেখুন।

FileRotationOptions
rotateFileOnStartup

অ্যাট্রিবিউট। সঠিক ভ্যালু: true/false

এটি true হিসেবে সেট করা থাকলে, মেসেজিং ইঞ্জিন রিস্টার্ট হওয়ার প্রতিবার লগ ফাইল রোটেট করা হয়।

FileRotationType লগ ফাইলের রোটেশন নীতি (size বা time) নির্দিষ্ট করে।
MaxFileSizeInMB (ঘূর্ণনের ধরন হিসেবে size বেছে নিলে) লগ ফাইলের সাইজ নির্দিষ্ট করে যা সার্ভারকে লগ মেসেজ একটি আলাদা ফাইলে সরানোর জন্য ট্রিগার করে। লগ ফাইল নির্দিষ্ট সাইজে পৌঁছে গেলে, সার্ভার বর্তমান লগ ফাইলের নাম পরিবর্তন করে দেয়।
RotationFrequency (ঘূর্ণনের ধরন হিসেবে time বেছে নিলে) লগ মেসেজ আলাদা ফাইলে সরানোর জন্য সার্ভারকে ট্রিগার করার সময়কে মিনিটে নির্দিষ্ট করে। নির্দিষ্ট সময়সীমা পেরিয়ে গেলে, বর্তমান লগ ফাইলের নাম পরিবর্তন করা হয়।
MaxFilesToRetain

আপনার রোটেশন সেটিংসে সর্বাধিক কতগুলি ফাইল রাখা যাবে তা নির্দিষ্ট করে। ডিফল্ট ভ্যালু হল ৮।

আপনি শূন্য (০) উল্লেখ করলে, লগ ফাইল অনির্দিষ্টকালের জন্য রেখে দেওয়া হয়, তবে আপনার ফাইল রোটেশন সেটিংসের উপর নির্ভর করে, যদিও কোনও ফাইল মুছে ফেলা বা নাম পরিবর্তন করা হয় না। তাই, ভবিষ্যতে ডিস্ক-ফুল সংক্রান্ত সমস্যা এড়াতে, এটিকে শূন্যের থেকে বড় কোনও ভ্যালুতে সেট করুন অথবা নিয়মিত, পুরনো সেভ করা লগ ফাইল মুছে ফেলা বা আর্কাইভ করার অটোমেটিক সিস্টেম প্রয়োগ করুন।

BufferMessage

আপনার প্রক্সির জন্য HTTP স্ট্রিমিং চালু করা থাকলে, অনুরোধ/উত্তর মেসেজ বাফার করা হয় না। আপনি যদি এমন কন্টেন্ট লগ করতে চান যার জন্য ফ্লো মেসেজ পার্স করতে হবে, তাহলে BufferMessage-কে true হিসেবে সেট করুন। উদাহরণ হিসেবে "স্ট্রিম-এনাবল" স্যাম্পেল ট্যাব দেখুন। ডিফল্ট: false

Syslog

একটি syslog ডেস্টিনেশন। Splunk, Sumo Logic বা Loggly-তে syslog পাঠাতে, থার্ড-পার্টি লগ ম্যানেজমেন্ট পরিষেবা কনফিগার করা দেখুন।

Message

আপনি যে তথ্য ক্যাপচার করতে চান তা পেতে, টেক্সট ও ভেরিয়েবল মিলিয়ে syslog-এ পাঠানোর জন্য মেসেজ তৈরি করুন। নমুনা দেখুন।

মনে রাখবেন: উত্তর সংক্রান্ত ভেরিয়েবল এরর ফ্লো অনুসরণ করে PostClientFlow-তে উপলভ্য হবে না। ভুল ও সঠিক, উভয় ক্ষেত্রেই উত্তর সংক্রান্ত তথ্য লগ করতে মেসেজ ভেরিয়েবল ব্যবহার করুন। এছাড়াও ব্যবহার সংক্রান্ত নোট দেখুন।

Host যে সার্ভারে syslog পাঠানো হবে সেটির হোস্টনেম বা IP অ্যাড্রেস। আপনি এই এলিমেন্ট অন্তর্ভুক্ত না করলে, ডিফল্ট হিসেবে লোকালহোস্ট ব্যবহার করা হবে।
Port যে পোর্টে syslog চলছে। আপনি এই এলিমেন্ট অন্তর্ভুক্ত না করলে, ডিফল্ট মান হল ৫১৪।
Protocol TCP বা UDP (ডিফল্ট)। UDP আরও ভাল পারফর্ম করলেও, TCP প্রোটোকল syslog সার্ভারে মেসেজ লগ ডেলিভার করার গ্যারান্টি দেয়। TLS/SSL-এর মাধ্যমে syslog মেসেজ পাঠানোর জন্য, শুধুমাত্র TCP কাজ করে।
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 প্রোটোকল দেখুন) ।
  • ১ - বর্তমান syslog ভার্সন।
  • UTC অফসেট সহ তারিখ (UTC = +০০০০)।
  • মেসেজ প্রসেসর UUID.
  • "Apigee-Edge - - - "

এটি false (ডিফল্ট) হিসেবে সেট করা থাকলে, মেসেজের আগে সেইসব নির্দিষ্ট ক্যারেক্টার যোগ করা হয় না।

PayloadOnly

true বা false (ডিফল্ট)

এই এলিমেন্ট, Apigee-এর তৈরি করা মেসেজের ফর্ম্যাট সেট করে, যাতে FormatMessage-এর মাধ্যমে নির্দিষ্ট করা প্রিপেন্ড করা অক্ষর ছাড়াই শুধুমাত্র syslog মেসেজের বডি থাকে।

আপনি এই এলিমেন্ট যোগ না করলে বা এটি খালি রাখলে, ডিফল্ট মান false হবে।

FormatMessage দেখুন।

DateFormat

ঐচ্ছিক।

প্রতিটি লগ মেসেজের টাইমস্ট্যাম্প ফর্ম্যাট করার জন্য ব্যবহার করার জন্য একটি ফর্ম্যাটিং টেমপ্লেট স্ট্রিং। ডিফল্ট হিসেবে, Apigee yyyy-MM-dd'T'HH:mm:ss.SSSZ ব্যবহার করে। এই টেমপ্লেটের ব্যবহার Java-এর SimpleDateFormat ক্লাস সম্পর্কিত ডকুমেন্টেশনে বর্ণনা করা আছে।

SSLInfo

SSL/TLS-এর মাধ্যমে মেসেজ লগ করতে দেয়। সাব-এলিমেন্ট <Enabled>true</Enabled>-এর সাথে ব্যবহার করুন।

আপনি এই এলিমেন্ট অন্তর্ভুক্ত না করলে বা এটি খালি রাখলে, ডিফল্ট ভ্যালু হল false (TLS/SSL নেই)।

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

আপনি <SSLInfo> ট্যাগটি ঠিক সেইভাবে কনফিগার করতে পারবেন যেভাবে আপনি TargetEndpoint-এ করতে পারেন, এর মধ্যে রয়েছে টু-ওয়ে TLS/SSL চালু করা, যা API প্রক্সি কনফিগারেশন রেফারেন্স-এ বর্ণনা করা হয়েছে। শুধুমাত্র TCP প্রোটোকল কাজ করে।

logLevel

ঐচ্ছিক।

সঠিক ভ্যালু: INFO (ডিফল্ট), ALERT, WARN, ERROR

মেসেজ লগে অন্তর্ভুক্ত করার জন্য তথ্যের একটি নির্দিষ্ট লেভেল সেট করুন।

আপনি যদি FormatMessage এলিমেন্ট (সেটিকে true হিসেবে সেট করা) ব্যবহার করেন, তাহলে আপনার logLevel সেটিং, মেসেজের আগে Apigee-এর তৈরি করা তথ্যে অ্যাঙ্গেল ব্র্যাকেটের মধ্যে থাকা গণনা করা অগ্রাধিকার স্কোরকে প্রভাবিত করে।

স্কিমা


ব্যবহার সংক্রান্ত নোট

API প্রক্সি ফ্লোতে MessageLogging নীতি অ্যাটাচ করার সময়, এটিকে ProxyEndpoint রেসপন্সে, PostClientFlow নামের বিশেষ ফ্লোতে রাখার কথা বিবেচনা করুন। অনুরোধকারী ক্লায়েন্টকে উত্তর পাঠানোর পরে PostClientFlow এক্সিকিউট হয়, যা নিশ্চিত করে যে লগিংয়ের জন্য সব মেট্রিক উপলভ্য আছে। PostClientFlow ব্যবহার করা সংক্রান্ত বিবরণের জন্য, API প্রক্সি কনফিগারেশন রেফারেন্স দেখুন।

PostClientFlow দুটি উপায়ে বিশেষ:

  1. এটি শুধুমাত্র উত্তরের ফ্লোর অংশ হিসেবেই এক্সিকিউট করা হয়।
  2. প্রক্সি সমস্যার অবস্থায় চলে যাওয়ার পরে এটিই একমাত্র ফ্লো যা এক্সিকিউট করা হয়।

প্রক্সি সফল হোক বা না হোক, এটি এক্সিকিউট করা হয়। তাই, আপনি PostClientFlow-তে MessageLogging নীতি প্রয়োগ করতে পারেন এবং নিশ্চিত থাকতে পারেন যে এটি সবসময় এক্সিকিউট হবে।

নিচের Trace ছবিতে দেখা যাচ্ছে যে DefaultFaultRule এক্সিকিউট হওয়ার পরে PostClientFlow-এর অংশ হিসেবে MessageLogging নীতি এক্সিকিউট হচ্ছে:

এই উদাহরণে, Verify API Key নীতিটি একটি ভুল কী থাকার কারণে সমস্যার কারণ হয়েছে।

নিচে ProxyEndpoint-এর সংজ্ঞা দেখানো হল, এতে PostClientFlow অন্তর্ভুক্ত থাকে:

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

Edge লগ মেসেজকে সাধারণ টেক্সট হিসেবে দেখায় এবং আপনি লগিং কনফিগার করে ভেরিয়েবল অন্তর্ভুক্ত করতে পারেন, যেমন অনুরোধ বা উত্তর পাওয়ার তারিখ ও সময়, অনুরোধে ব্যবহারকারীর পরিচয়, যে সোর্স IP অ্যাড্রেস থেকে অনুরোধ পাঠানো হয়েছে ইত্যাদি। Edge লগ মেসেজ অ্যাসিঙ্ক্রোনাসভাবে, অর্থাৎ কলআউট ব্লক করার কারণে হতে পারে এমন কোনও লেটেন্সি আপনার API-তে প্রবেশ করানো হয় না।

MessageLogging নীতি, লগ করা মেসেজকে মেমরিতে একটি বাফারে লেখে। মেসেজ লগার বাফার থেকে মেসেজ পড়ে এবং তারপরে আপনার কনফিগার করা ডেস্টিনেশনে লেখে। প্রতিটি ডেস্টিনেশনের নিজস্ব বাফার আছে।

নতুন syslog এন্ডপয়েন্টে পাঠানো লগ মেসেজ পেতে ব্যবহারকারীদের দেরি হতে পারে। এটি নীতিতে উদ্দেশ্যপ্রণোদিত "কোল্ড স্টার্ট" আচরণের কারণে হয়। নতুন লগিং ডেস্টিনেশন কনফিগার করা হলে, আগে থেকে থাকা লগিং ডেস্টিনেশন ছাড়াও, মেসেজ প্রসেসর (MP) প্রথমে ১০০০টি লগ মেসেজ ইন-মেমরি কোয়েরিতে রাখতে পারে, তারপরে সেগুলি পাঠাতে পারে। এর ফলে কম ট্রাফিক থাকা পরিবেশে প্রাথমিক দেরি হতে পারে। এই প্রাথমিক বিলম্বটি সাধারণ প্রোডাকশন ওয়ার্কলোডের জন্য অ-পর্যবেক্ষণযোগ্য, কারণ মেসেজ দ্রুত জমা হয়ে যায়। থ্রেশহোল্ডে পৌঁছে গেলে, লগ মেসেজ প্রত্যাশিতভাবে ডেলিভার করা হবে। মেসেজ প্রসেসর গ্রেসফুল রিস্টার্ট করলে, সারিতে থাকা মেসেজ ডেলিভার করার প্রসেসও ট্রিগার হতে পারে, কারণ সেগুলি সারি থেকে বেরিয়ে আসে।

বাফারে লেখার রেট, পড়ার রেটের চেয়ে বেশি হয়ে গেলে, বাফার ওভারফ্লো হয়ে যায় এবং লগিং কাজ করে না। এটি ঘটলে, আপনি লগ ফাইলে নিম্নলিখিত বিষয়গুলি সহ একটি মেসেজ দেখতে পেতে পারেন:

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 প্রপার্টি (ডিফল্ট ভ্যালু = ১২৮ কেবি) বাড়ান।

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-এ উত্তর মেসেজ ভেরিয়েবল ত্রুটি ফ্লো থেকে উপলভ্য নয়। এছাড়াও, পূর্ববর্তী ফ্লোটি যদি Error Flow হয়, তাহলে PostClientFlow-তে এইসব ভেরিয়েবল উপলভ্য থাকে না। আপনি যদি PostClientFlow থেকে উত্তর সংক্রান্ত তথ্য লগ করতে চান, তাহলে message অবজেক্ট ব্যবহার করুন। কোনও সমস্যা হোক বা না হোক, আপনি এই অবজেক্ট ব্যবহার করে উত্তর থেকে হেডার ও অন্যান্য তথ্য পেতে পারেন। আরও তথ্য ও উদাহরণের জন্য মেসেজ ভেরিয়েবল দেখুন।

প্রাইভেট ক্লাউডের জন্য Edge-এ লগ মেসেজ টাইমস্ট্যাম্প কন্ট্রোল করা

ডিফল্ট হিসেবে, সব লগ মেসেজের টাইমস্ট্যাম্পের ফর্ম্যাট হল:

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

এই সিস্টেম-ব্যাপী ডিফল্টকে syslog ডেস্টিনেশনের জন্য DateFormat এলিমেন্ট ব্যবহার করে ওভাররাইড করা যেতে পারে। Java-এর SimpleDateFormat class-এর জন্য ডকুমেন্টেশনে এই টেমপ্লেটের আচরণ বর্ণনা করা আছে। ওই সংজ্ঞা অনুযায়ী, 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-এ লগ ফাইলের লোকেশন

প্রাইভেট ক্লাউডের জন্য Edge 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-কে 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 নীতি আপনাকে Splunk, Sumo Logic এবং Loggly-এর মতো থার্ড-পার্টি লগ ম্যানেজমেন্ট পরিষেবাতে syslog মেসেজ পাঠাতে দেয়। আপনি যদি সেইসব পরিষেবার কোনও একটিতে syslog পাঠাতে চান, তাহলে পরিষেবার হোস্ট, পোর্ট ও প্রোটোকল কনফিগার করতে সেই পরিষেবার ডকুমেন্টেশন দেখুন, তারপর এই নীতিতে সেই অনুযায়ী Syslog এলিমেন্ট সেট করুন।

থার্ড-পার্টি লগ ম্যানেজমেন্ট কনফিগারেশনের জন্য নিম্নলিখিত ডকুমেন্টেশন দেখুন:

সমস্যার রেফারেন্স

এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, Edge-এর মাধ্যমে ফেরত আসা ফল্ট কোড ও সমস্যার মেসেজ এবং সেট করা ফল্ট ভেরিয়েবল সম্পর্কে এই বিভাগে বর্ণনা করা হয়েছে। সমস্যা সমাধানের জন্য আপনি যদি ফল্ট রুল ডেভেলপ করেন, তাহলে এই তথ্য জানা আপনার জন্য গুরুত্বপূর্ণ। আরও জানতে, নীতি সংক্রান্ত সমস্যা সম্পর্কে আপনার যা জানা প্রয়োজন এবং ত্রুটি মোকাবেলা করা দেখুন।

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস কারণ
steps.messagelogging.StepDefinitionExecutionFailed 500 ফল্ট স্ট্রিং দেখুন।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম কারণ এর সমাধান করুন
InvalidProtocol <Protocol> এলিমেন্টের মধ্যে নির্দিষ্ট করা প্রোটোকল সঠিক না হলে, MessageLogging নীতি প্রয়োগ করা এই সমস্যার কারণে ব্যর্থ হতে পারে। সঠিক প্রোটোকল হল TCP ও UDP। TLS/SSL-এর মাধ্যমে syslog মেসেজ পাঠানোর জন্য, শুধুমাত্র TCP কাজ করে।
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

সম্পর্কিত বিষয়