মেসেজলগিং নীতি

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

কী

এপিআই রানটাইম এনভায়রনমেন্টের সমস্যা খুঁজে বের করার অন্যতম সেরা উপায় হলো মেসেজ লগ করা। আপনি আপনার এপিআই-তে একটি MessageLogging পলিসি সংযুক্ত ও কনফিগার করতে পারেন, যা কাস্টম মেসেজগুলোকে লোকাল ডিস্কে (শুধুমাত্র Edge for Private Cloud-এর জন্য) অথবা 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-এর মতো পাবলিক লগ ম্যানেজমেন্ট সার্ভিসগুলো উপলব্ধ আছে। তৃতীয় পক্ষের লগ ম্যানেজমেন্ট সার্ভিস কনফিগার করা দেখুন।

উদাহরণস্বরূপ, ধরুন আপনার এপিআই কনজিউমার অ্যাপগুলো থেকে যে প্রতিটি রিকোয়েস্ট মেসেজ পায়, সেগুলোর তথ্য লগ করার প্রয়োজন। 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> ব্লকটি যোগ করে আপনি 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 পলিসি টাইপ কনফিগার করতে নিম্নলিখিত উপাদানগুলো ব্যবহার করুন।

ক্ষেত্রের নাম ক্ষেত্রের বিবরণ

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

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

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

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

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

BufferMessage

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

Syslog

একটি সিসলগ গন্তব্য। সিসলগ Splunk, Sumo Logic, বা Loggly-তে পাঠাতে, ‘তৃতীয় পক্ষের লগ ম্যানেজমেন্ট পরিষেবা কনফিগার করা’ দেখুন।

Message

আপনার কাঙ্ক্ষিত তথ্য সংগ্রহ করতে টেক্সটের সাথে ভ্যারিয়েবল যুক্ত করে সিস্টেম লগে পাঠানোর জন্য মেসেজটি তৈরি করুন। নমুনাগুলো দেখুন।

দ্রষ্টব্য: একটি এরর ফ্লো (Error Flow)-এর পরে পোস্টক্লায়েন্টফ্লো (PostClientFlow)-তে রেসপন্স ভ্যারিয়েবল (Response variables) উপলব্ধ থাকবে না। ত্রুটি এবং সাফল্য উভয় ক্ষেত্রেই প্রতিক্রিয়ার তথ্য লগ করতে মেসেজ ভ্যারিয়েবল (message variables) ব্যবহার করুন। আরও ব্যবহারবিধি (Usage notes) দেখুন।

Host যে সার্ভারে সিস্টেম লগ পাঠানো হবে, তার হোস্টনেম বা আইপি অ্যাড্রেস। আপনি যদি এই এলিমেন্টটি অন্তর্ভুক্ত না করেন, তাহলে ডিফল্ট হিসেবে লোকালহোস্ট ব্যবহৃত হয়।
Port যে পোর্টে সিস্টেম লগ চলছে। আপনি যদি এই উপাদানটি অন্তর্ভুক্ত না করেন, তাহলে ডিফল্ট পোর্ট হবে ৫১৪।
Protocol TCP বা UDP (ডিফল্ট)। যদিও UDP অধিক কর্মক্ষম, TCP প্রোটোকল syslog সার্ভারে মেসেজ লগ ডেলিভারি নিশ্চিত করে। TLS/SSL-এর মাধ্যমে syslog মেসেজ পাঠানোর জন্য শুধুমাত্র TCP সমর্থিত।
FormatMessage

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

ঐচ্ছিক, কিন্তু Loggly-এর সাথে ব্যবহারের জন্য <FormatMessage>true</FormatMessage> আবশ্যক।

এই এলিমেন্টটি আপনাকে মেসেজের শুরুতে যুক্ত হওয়া Apigee-দ্বারা তৈরি কন্টেন্টের ফরম্যাট নিয়ন্ত্রণ করতে দেয়। যদি এটি 'true' সেট করা হয়, তাহলে syslog মেসেজের শুরুতে একটি নির্দিষ্ট সংখ্যক ক্যারেক্টার যুক্ত হয়, যা আপনাকে মেসেজ থেকে সেই তথ্য ফিল্টার করে বাদ দেওয়ার সুযোগ দেয়। নির্দিষ্ট ফরম্যাটের একটি উদাহরণ নিচে দেওয়া হলো:

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

Apigee দ্বারা উৎপাদিত তথ্যের মধ্যে অন্তর্ভুক্ত রয়েছে:

  • <14> - বার্তার লগ স্তর এবং সুবিধা স্তরের উপর ভিত্তি করে একটি অগ্রাধিকার স্কোর ( সিস্টেম লগ প্রোটোকল দেখুন)।
  • ১ - বর্তমান syslog সংস্করণ।
  • UTC অফসেট সহ তারিখ (UTC = +0000)।
  • মেসেজ প্রসেসর UUID।
  • "অ্যাপিজি-এজ - - - "

যদি এটি false (ডিফল্ট) সেট করা থাকে, তাহলে বার্তার শুরুতে ঐ নির্দিষ্ট অক্ষরগুলো যুক্ত করা হয় না।

PayloadOnly

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

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

আপনি যদি এই উপাদানটি অন্তর্ভুক্ত না করেন বা খালি রাখেন, তাহলে এর ডিফল্ট মান হবে false

FormatMessage দেখুন।

DateFormat

ঐচ্ছিক।

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

SSLInfo

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

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

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

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

logLevel

ঐচ্ছিক।

বৈধ মানসমূহ: INFO (ডিফল্ট), ALERT , WARN , ERROR

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

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

স্কিমা


ব্যবহারের নির্দেশাবলী

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

PostClientFlow দুটি দিক থেকে বিশেষ:

  1. এটি শুধুমাত্র প্রতিক্রিয়া প্রবাহের অংশ হিসেবেই কার্যকর হয়েছিল।
  2. প্রক্সিটি ত্রুটিপূর্ণ অবস্থায় প্রবেশ করার পর শুধুমাত্র এই প্রবাহটিই সম্পাদিত হয়।

যেহেতু প্রক্সি সফল বা ব্যর্থ নির্বিশেষে এটি কার্যকর হয়, তাই আপনি 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 পলিসি লগ করা মেসেজগুলোকে মেমরির একটি বাফারে লিখে রাখে। মেসেজ লগার বাফার থেকে মেসেজগুলো পড়ে এবং তারপর আপনার কনফিগার করা গন্তব্যে লিখে রাখে। প্রতিটি গন্তব্যের নিজস্ব বাফার থাকে।

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

প্রাইভেট ক্লাউডের জন্য এজ-এ লগ বার্তার টাইমস্ট্যাম্প নিয়ন্ত্রণ করা

ডিফল্টরূপে, সমস্ত লগ বার্তার টাইমস্ট্যাম্পের বিন্যাসটি হলো:

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

DateFormat এলিমেন্ট ব্যবহার করে syslog ডেস্টিনেশনগুলির জন্য এই সিস্টেম-ব্যাপী ডিফল্টটি ওভাররাইড করা যেতে পারে। এই টেমপ্লেটের আচরণ জাভার SimpleDateFormat ক্লাসের ডকুমেন্টেশনে বর্ণনা করা হয়েছে। সেই সংজ্ঞা অনুসারে, yyyy একটি ৪-অঙ্কের বছর দ্বারা, MM একটি ২-অঙ্কের মাস সংখ্যা দ্বারা প্রতিস্থাপন করা হবে, ইত্যাদি। উপরের ফরম্যাটটির ফলে এই ধরনের একটি স্ট্রিং তৈরি হতে পারে:

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

আপনি এজ মেসেজ প্রসেসরে 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 এবং পরবর্তী সংস্করণ

ডিফল্টরূপে, প্রাইভেট ক্লাউড মেসেজ লগগুলি মেসেজ প্রসেসর নোডগুলিতে নিম্নলিখিত ডিরেক্টরিতে অবস্থিত থাকে:

/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 এলিমেন্টটি সেট করুন।

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

ত্রুটির রেফারেন্স

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

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

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

স্থাপনার ত্রুটি

আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷

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

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