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

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

কি

API রানটাইম পরিবেশে সমস্যাগুলি ট্র্যাক করার সেরা উপায়গুলির মধ্যে একটি হল বার্তাগুলি লগ করা। আপনি স্থানীয় ডিস্কে (শুধুমাত্র ব্যক্তিগত ক্লাউডের জন্য প্রান্ত) বা syslog-এ কাস্টম বার্তা লগ করার জন্য আপনার API-এ একটি 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-এর জন্য কনফিগার করা হলে, একটি API প্রক্সি Apigee Edge থেকে একটি দূরবর্তী syslog সার্ভারে লগ বার্তা ফরোয়ার্ড করবে। আপনার ইতিমধ্যেই একটি syslog সার্ভার উপলব্ধ থাকতে হবে৷ যদি না হয়, পাবলিক লগ ম্যানেজমেন্ট পরিষেবা, যেমন স্প্লঙ্ক, সুমো লজিক, এবং লগলি, উপলব্ধ। তৃতীয় পক্ষের লগ ম্যানেজমেন্ট পরিষেবাগুলি কনফিগার করা দেখুন।

উদাহরণস্বরূপ, কল্পনা করুন যে আপনার এপিআই গ্রাহক অ্যাপ থেকে প্রাপ্ত প্রতিটি অনুরোধ বার্তা সম্পর্কে তথ্য লগ করতে হবে। মান 3f509b58 লগলি পরিষেবার জন্য নির্দিষ্ট একটি মূল মান উপস্থাপন করে। আপনার লগলি অ্যাকাউন্ট থাকলে, আপনার লগলি কী প্রতিস্থাপন করুন। উত্পন্ন লগ বার্তাটি চারটি মান দিয়ে তৈরি করা হবে: অনুরোধ বার্তায় একটি ক্যোয়ারী প্যারামিটারের মান সহ লেনদেনের সাথে যুক্ত সংস্থা, API প্রক্সি এবং পরিবেশের নাম৷

আপনার যদি ব্যক্তিগত ক্লাউড স্থাপনার জন্য একটি এজ থাকে তবে আপনি একটি ফাইলে লগ বার্তাও লিখতে পারেন।

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

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

Message আপনি যে তথ্য চান তা ক্যাপচার করতে ভেরিয়েবলের সাথে পাঠ্য একত্রিত করে লগ ফাইলে পাঠানোর জন্য বার্তাটি তৈরি করুন। নমুনা দেখুন.
FileName লগ ফাইলের নাম যেখানে বার্তাটি লগ করা হয়েছে।
FileRotationOptions
rotateFileOnStartup

বৈশিষ্ট্য বৈধ মান: true / false

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

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

আপনার ঘূর্ণন সেটিংসের প্রেক্ষাপটে সর্বোচ্চ কতটি ফাইল রাখা হবে তা নির্দিষ্ট করে। ডিফল্ট মান হল 8

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

BufferMessage

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

Syslog

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

Message

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

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

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

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

ঐচ্ছিক, কিন্তু লগলি ব্যবহার করার জন্য <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> - একটি অগ্রাধিকার স্কোর ( সিসলগ প্রোটোকল দেখুন) লগ লেভেল এবং বার্তার সুবিধা স্তরের উপর ভিত্তি করে।
  • 1 - বর্তমান syslog সংস্করণ।
  • একটি UTC অফসেট সহ তারিখ (UTC = +0000)।
  • বার্তা প্রসেসর UUID.
  • "অ্যাপিজি-এজ - - -"

মিথ্যা (ডিফল্ট) হিসাবে সেট করা থাকলে, বার্তাটি সেই স্থির অক্ষরগুলির সাথে আগে লেখা হয় না।

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>

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

logLevel

ঐচ্ছিক।

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

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

আপনি যদি FormatMessage উপাদানটি ব্যবহার করেন (এটি সত্যে সেট করা), আপনার logLevel সেটিং বার্তার সাথে যুক্ত Apigee-উত্পন্ন তথ্যে গণনাকৃত অগ্রাধিকার স্কোরকে (কোণ বন্ধনীর ভিতরের সংখ্যা) প্রভাবিত করে।

স্কিমাস


ব্যবহারের নোট

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

পোস্টক্লায়েন্টফ্লো দুটি উপায়ে বিশেষ:

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

প্রক্সি সফল হোক বা ব্যর্থ হোক না কেন এটি কার্যকর করা হয়েছে, আপনি PostClientFlow-এ MessageLogging নীতিগুলি রাখতে পারেন এবং নিশ্চিত হতে পারেন যে তারা সর্বদা কার্যকর করবে৷

নিম্নোক্ত ট্রেস চিত্রটি ডিফল্টফল্ট রুল কার্যকর হওয়ার পরে পোস্টক্লায়েন্টফ্লো-এর অংশ হিসাবে একটি মেসেজলগিং নীতি কার্যকর করা দেখায়:

এই উদাহরণে, ভেরিফাই এপিআই কী নীতি একটি অবৈধ কী-এর কারণে ত্রুটি সৃষ্টি করেছে।

নীচে প্রক্সিএন্ডপয়েন্ট সংজ্ঞা দেখানো হয়েছে যা পোস্টক্লায়েন্টফ্লো অন্তর্ভুক্ত করে:

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

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

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

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

Log message size exceeded. Increase the max message size setting

আপনি যদি প্রাইভেট ক্লাউড 4.15.07 এবং তার আগের এজ-এ এই সমস্যার সম্মুখীন হন, তাহলে message-logging.properties ফাইলটি সনাক্ত করুন এবং এই সমাধানটি ব্যবহার করুন:

message-logging.properties ফাইলে max.log.message.size.in.kb প্রপার্টি (ডিফল্ট মান = 128 KB) বাড়ান।

এজ ফর প্রাইভেট ক্লাউড 4.16.01 এবং পরবর্তীতে, conf/message-logging.properties+max. log.message.size.in.kb /opt/apigee/customer/application/message-processor.properties ফাইলে conf/message-logging.properties+max. log.message.size.in.kb প্রপার্টি এবং মেসেজ প্রসেসর রিস্টার্ট করুন। দয়া করে মনে রাখবেন যে এই সম্পত্তিটি প্রাথমিকভাবে ডিফল্টরূপে মন্তব্য করা হয়।

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

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

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

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

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

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

আপনি যে বিন্যাস নিয়ন্ত্রণ করতে এজ মেসেজ প্রসেসরে conf_system_apigee.syslogger.dateFormat বৈশিষ্ট্য ব্যবহার করতে পারেন। উদাহরণস্বরূপ, বার্তা বিন্যাস এতে পরিবর্তন করুন:

yy/MM/dd'T'HH:mm:ss.SSSZ

..ড্যাশগুলিকে স্ল্যাশ দিয়ে প্রতিস্থাপন করা, এবং একটি 2-সংখ্যার বছরে সংক্ষিপ্ত করা, ফর্মটিতে একটি টাইমস্ট্যাম্প রেকর্ড করে:

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. এজ মেসেজ প্রসেসর রিস্টার্ট করুন:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor পুনরায় চালু করুন

ব্যক্তিগত ক্লাউডের জন্য এজে ফাইলের অবস্থান লগ করুন

প্রাইভেট ক্লাউড 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/ এ সংরক্ষণ করা হবে /opt/apigee/var/log/messages/messagelog/ । একটি পরম পথ bin_setenv_data_dir এর চেয়ে অগ্রাধিকার নেয়।

    মনে রাখবেন যে আপনাকে সম্পত্তিটিকে conf/message-logging.properties+log.root.dir হিসাবে উল্লেখ করতে হবে কারণ এটি ডিফল্টরূপে মন্তব্য করা হয়। একটি টোকেন সেট করা দেখুন যা বর্তমানে আরো জন্য মন্তব্য করা হয়েছে

আপনি যদি লগ ফাইলগুলিকে একটি ফ্ল্যাট ফাইল কাঠামোতে সংরক্ষণ করতে চান যাতে সমস্ত লগ ফাইল একই ডিরেক্টরিতে রাখা হয়, তাহলে বার্তা-logging.properties-এ conf/message-logging.properties+enable.flat.directory.structure কে সত্য হিসাবে সেট করুন। ফাইল বার্তাগুলি উপরের বৈশিষ্ট্যগুলির দ্বারা নির্দিষ্ট করা ডিরেক্টরিতে সংরক্ষণ করা হয় এবং ফাইলের নামগুলি {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. এজ উপাদান পুনরায় চালু করুন:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor পুনরায় চালু করুন

প্রাইভেট ক্লাউড 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 এর চেয়ে অগ্রাধিকার নেয়।

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

তৃতীয় পক্ষের লগ ম্যানেজমেন্ট পরিষেবাগুলি কনফিগার করা হচ্ছে

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

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