আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
কি
API রানটাইম পরিবেশে সমস্যাগুলি ট্র্যাক করার সেরা উপায়গুলির মধ্যে একটি হল বার্তা লগ করা। আপনি আপনার API-তে একটি 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 অ্যাকাউন্টে লগ ইন করা। syslog এর জন্য কনফিগার করা হলে, একটি API প্রক্সি Apigee Edge থেকে একটি দূরবর্তী syslog সার্ভারে লগ বার্তা ফরোয়ার্ড করবে। আপনার কাছে ইতিমধ্যেই একটি syslog সার্ভার উপলব্ধ থাকতে হবে। যদি না থাকে, তাহলে পাবলিক লগ ম্যানেজমেন্ট পরিষেবা, যেমন Splunk, Sumo Logic এবং Loggly, উপলব্ধ। তৃতীয় পক্ষের লগ ম্যানেজমেন্ট পরিষেবা কনফিগার করা দেখুন।
উদাহরণস্বরূপ, কল্পনা করুন যে আপনার API গ্রাহক অ্যাপ থেকে প্রাপ্ত প্রতিটি অনুরোধ বার্তা সম্পর্কে তথ্য লগ করতে হবে। 3f509b58 মানটি লগলি পরিষেবার জন্য নির্দিষ্ট একটি মূল মান উপস্থাপন করে। যদি আপনার একটি লগলি অ্যাকাউন্ট থাকে, তাহলে আপনার লগলি কীটি প্রতিস্থাপন করুন। যে লগ বার্তাটি তৈরি হবে তা চারটি মান দিয়ে পূর্ণ হবে: লেনদেনের সাথে সম্পর্কিত সংস্থা, API প্রক্সি এবং পরিবেশের নাম, অনুরোধ বার্তায় একটি কোয়েরি প্যারামিটারের মান সহ।
যদি আপনার কাছে এজ ফর প্রাইভেট ক্লাউড ডিপ্লয়মেন্ট থাকে, তাহলে আপনি একটি ফাইলে লগ বার্তাও লিখতে পারেন।
TLS/SSL এর উপর সিসলগ
<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>
স্ট্রিম-সক্ষম বার্তা লগিং
উপাদানের রেফারেন্স
মেসেজলগিং নীতির ধরণ কনফিগার করতে নিম্নলিখিত উপাদানগুলি ব্যবহার করুন।
| ক্ষেত্রের নাম | ক্ষেত্রের বর্ণনা | |
|---|---|---|
স্থানীয় ফাইল গন্তব্য। (ফাইল লগিং শুধুমাত্র প্রাইভেট ক্লাউড স্থাপনার জন্য এজে সমর্থিত।) ফাইলগুলি কোথায় সংরক্ষণ করা হয় সে সম্পর্কে তথ্যের জন্য, প্রাইভেট ক্লাউডের জন্য এজে লগ ফাইলের অবস্থান দেখুন। | Message | লগ ফাইলে পাঠানোর জন্য বার্তাটি তৈরি করুন, আপনার প্রয়োজনীয় তথ্য ক্যাপচার করার জন্য ভেরিয়েবলের সাথে টেক্সট একত্রিত করুন। নমুনা দেখুন। |
FileName | লগ ফাইলের বেস নাম। ফাইলের পাথ নির্দিষ্ট করবেন না। উদাহরণস্বরূপ, এই FileName উপাদানটি একটি ফাইলের পাথ নির্দিষ্ট করে এবং অবৈধ:<FileName>/opt/apigee/var/log/messages/mylog.log</FileName> এই কোডটি শুধুমাত্র একটি ফাইলের নাম নির্দিষ্ট করে এবং বৈধ: <FileName>mylog.log</FileName> ফাইলটি কোথায় সংরক্ষণ করা হয়েছে সে সম্পর্কে তথ্যের জন্য, প্রাইভেট ক্লাউডের জন্য এজ-এ লগ ফাইলের অবস্থান দেখুন। | |
FileRotationOptions | ||
rotateFileOnStartup | বৈশিষ্ট্য। বৈধ মান: যদি সত্য হিসেবে সেট করা থাকে, তাহলে মেসেজিং ইঞ্জিন পুনরায় চালু হওয়ার সাথে সাথে লগ ফাইলটি ঘোরানো হবে। | |
FileRotationType | একটি লগ ফাইলের ঘূর্ণন নীতি ( size বা time ) নির্দিষ্ট করে। | |
MaxFileSizeInMB | ( size ঘূর্ণন প্রকার হিসেবে নির্বাচন করার সময়) লগ ফাইলের আকার নির্দিষ্ট করে যা সার্ভারকে লগ বার্তাগুলিকে একটি পৃথক ফাইলে স্থানান্তর করতে ট্রিগার করে। লগ ফাইলটি নির্দিষ্ট আকারে পৌঁছানোর পরে, সার্ভার বর্তমান লগ ফাইলটির নাম পরিবর্তন করে। | |
RotationFrequency | (ঘূর্ণনের ধরণ হিসেবে time নির্বাচন করার সময়) লগ বার্তাগুলিকে একটি পৃথক ফাইলে সরানোর জন্য সার্ভারকে ট্রিগার করে এমন সময় মিনিটে নির্দিষ্ট করে। নির্দিষ্ট ব্যবধান শেষ হওয়ার পরে, বর্তমান লগ ফাইলটির নাম পরিবর্তন করা হয়। | |
MaxFilesToRetain | আপনার ঘূর্ণন সেটিংসের প্রেক্ষাপটে সর্বাধিক কতগুলি ফাইল ধরে রাখা হবে তা নির্দিষ্ট করে। ডিফল্ট মান হল 8 । যদি আপনি শূন্য (0) নির্দিষ্ট করেন, তাহলে লগ ফাইলগুলি অনির্দিষ্টকালের জন্য ধরে রাখা হবে, তবে আপনার ফাইল ঘূর্ণন সেটিংসের উপর নির্ভর করবে, যদিও কোনও ফাইল মুছে ফেলা বা পুনঃনামকরণ করা হবে না। অতএব, ভবিষ্যতে ডিস্ক-পূর্ণ ত্রুটি এড়াতে, এটিকে শূন্যের চেয়ে বড় মান সেট করুন, অথবা পুরানো সংরক্ষিত লগ ফাইলগুলি পরিষ্কার বা সংরক্ষণাগারভুক্ত করার জন্য একটি নিয়মিত, স্বয়ংক্রিয় সিস্টেম বাস্তবায়ন করুন। | |
BufferMessage | যদি আপনার প্রক্সির জন্য HTTP স্ট্রিমিং সক্ষম করা থাকে , তাহলে অনুরোধ/প্রতিক্রিয়া বার্তাগুলি বাফার করা হয় না। যদি আপনি এমন সামগ্রী লগ করতে চান যার জন্য প্রবাহ বার্তাটি পার্স করা প্রয়োজন, তাহলে BufferMessage কে সত্যে সেট করুন। উদাহরণের জন্য "স্ট্রিম-সক্ষম" নমুনা ট্যাবটি দেখুন। ডিফল্ট: মিথ্যা | |
একটি syslog গন্তব্য। Splunk, Sumo Logic, অথবা Loggly-তে syslog পাঠাতে, তৃতীয় পক্ষের লগ ব্যবস্থাপনা পরিষেবা কনফিগার করা দেখুন। | Message | সিসলগে পাঠানোর জন্য বার্তাটি তৈরি করুন, আপনার প্রয়োজনীয় তথ্য ক্যাপচার করার জন্য ভেরিয়েবলের সাথে টেক্সট একত্রিত করুন। নমুনা দেখুন। দ্রষ্টব্য: কোনও ত্রুটি প্রবাহের পরে পোস্টক্লায়েন্টফ্লোতে প্রতিক্রিয়া ভেরিয়েবলগুলি উপলব্ধ থাকবে না। ত্রুটি এবং সাফল্য উভয় পরিস্থিতির জন্য প্রতিক্রিয়া তথ্য লগ করতে বার্তা ভেরিয়েবলগুলি ব্যবহার করুন। ব্যবহারের নোটগুলিও দেখুন। |
Host | যে সার্ভারে syslog পাঠানো উচিত তার হোস্টনেম বা IP ঠিকানা। যদি আপনি এই উপাদানটি অন্তর্ভুক্ত না করেন, তাহলে ডিফল্ট হল localhost। | |
Port | পোর্ট যেখানে syslog চলছে। যদি আপনি এই উপাদানটি অন্তর্ভুক্ত না করেন, তাহলে ডিফল্ট 514 হবে। | |
Protocol | TCP অথবা UDP (ডিফল্ট)। UDP বেশি কার্যকরী হলেও, TCP প্রোটোকল syslog সার্ভারে বার্তা লগ সরবরাহের নিশ্চয়তা দেয়। TLS/SSL এর মাধ্যমে syslog বার্তা পাঠানোর জন্য, শুধুমাত্র TCP সমর্থিত। | |
FormatMessage | ঐচ্ছিক, কিন্তু Loggly-এর সাথে ব্যবহারের জন্য এই উপাদানটি আপনাকে বার্তায় প্রিপেইড করা Apigee-জেনারেটেড কন্টেন্টের ফর্ম্যাট নিয়ন্ত্রণ করতে দেয়। যদি true তে সেট করা থাকে, তাহলে syslog বার্তাটি একটি নির্দিষ্ট সংখ্যক অক্ষর দ্বারা প্রিপেইড করা হয়, যা আপনাকে বার্তাগুলি থেকে সেই তথ্য ফিল্টার করতে দেয়। এখানে স্থির ফর্ম্যাটের একটি উদাহরণ দেওয়া হল: Apigee-উত্পাদিত তথ্যের মধ্যে রয়েছে:
যদি মিথ্যা (ডিফল্ট) তে সেট করা থাকে, তাহলে বার্তাটি সেই নির্দিষ্ট অক্ষরগুলির সাথে প্রাক-প্রবেশিত হবে না। | |
PayloadOnly | এই উপাদানটি Apigee-জেনারেটেড বার্তাগুলির ফর্ম্যাট সেট করে যাতে FormatMessage দ্বারা নির্দিষ্ট করা প্রিপেন্ডেড অক্ষরগুলি ছাড়াই শুধুমাত্র syslog বার্তার মূল অংশ ধারণ করে। যদি আপনি এই উপাদানটি অন্তর্ভুক্ত না করেন বা খালি রাখেন, তাহলে ডিফল্ট মান হল FormatMessage দেখুন। | |
DateFormat | ঐচ্ছিক। প্রতিটি লগ বার্তার টাইমস্ট্যাম্প ফর্ম্যাট করার জন্য একটি ফর্ম্যাটিং টেমপ্লেট স্ট্রিং ব্যবহার করা হয়। ডিফল্টরূপে, Apigee | |
SSLInfo | আপনাকে SSL/TLS এর মাধ্যমে বার্তা লগ করতে দেয়। সাব-এলিমেন্ট যদি আপনি এই উপাদানটি অন্তর্ভুক্ত না করেন বা খালি রাখেন, তাহলে ডিফল্ট মানটি মিথ্যা (কোনও TLS/SSL নেই)। <SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>আপনি TargetEndpoint-এ <SSLInfo> ট্যাগটি ঠিক একইভাবে কনফিগার করতে পারেন, যার মধ্যে API প্রক্সি কনফিগারেশন রেফারেন্সে বর্ণিত দ্বি-মুখী TLS/SSL সক্ষম করা অন্তর্ভুক্ত। শুধুমাত্র TCP প্রোটোকল সমর্থিত। | |
logLevel | ঐচ্ছিক। বৈধ মান: বার্তা লগে অন্তর্ভুক্ত করার জন্য একটি নির্দিষ্ট স্তরের তথ্য নির্ধারণ করুন। যদি আপনি | |
স্কিমা
ব্যবহারবিধি
একটি API প্রক্সি ফ্লোতে MessageLogging নীতি সংযুক্ত করার সময়, এটিকে ProxyEndpoint প্রতিক্রিয়াতে, PostClientFlow নামক একটি বিশেষ প্রবাহে রাখার কথা বিবেচনা করুন। অনুরোধকারী ক্লায়েন্টের কাছে প্রতিক্রিয়া পাঠানোর পরে PostClientFlow কার্যকর হয়, যা নিশ্চিত করে যে লগিংয়ের জন্য সমস্ত মেট্রিক্স উপলব্ধ। PostClientFlow ব্যবহার সম্পর্কে বিস্তারিত জানার জন্য, API প্রক্সি কনফিগারেশন রেফারেন্স দেখুন।
পোস্টক্লায়েন্টফ্লো দুটি দিক থেকে বিশেষ:
- এটি শুধুমাত্র প্রতিক্রিয়া প্রবাহের অংশ হিসেবে কার্যকর করা হয়েছে।
- প্রক্সি ত্রুটি অবস্থায় প্রবেশ করার পরে এটিই একমাত্র প্রবাহ যা কার্যকর করা হয়।
যেহেতু প্রক্সি সফল হোক বা ব্যর্থ হোক না কেন, এটি কার্যকর করা হয়, তাই আপনি PostClientFlow-এ MessageLogging নীতিগুলি রাখতে পারেন এবং নিশ্চিত থাকতে পারেন যে সেগুলি সর্বদা কার্যকর হবে।
নিচের ট্রেস ছবিতে DefaultFaultRule কার্যকর হওয়ার পর PostClientFlow-এর অংশ হিসেবে একটি MessageLogging নীতি কার্যকর করা হচ্ছে:

এই উদাহরণে, যাচাই API কী নীতি একটি অবৈধ কী-এর কারণে ত্রুটির কারণ হয়েছে।
নিচে ProxyEndpoint সংজ্ঞা দেখানো হল যাতে PostClientFlow অন্তর্ভুক্ত রয়েছে:
<ProxyEndpoint name="default">
...
<PostClientFlow>
<Response>
<Step>
<Name>Message-Logging-1</Name>
</Step>
</Response>
</PostClientFlow>
...
</ProxyEndpoint>এজ বার্তাগুলিকে সহজ টেক্সট হিসেবে লগ করে, এবং আপনি লগিং কনফিগার করতে পারেন যাতে ভেরিয়েবল অন্তর্ভুক্ত থাকে, যেমন অনুরোধ বা প্রতিক্রিয়া প্রাপ্তির তারিখ এবং সময়, অনুরোধে থাকা ব্যবহারকারীর পরিচয়, যে উৎস আইপি ঠিকানা থেকে অনুরোধটি পাঠানো হয়েছিল, ইত্যাদি। এজ বার্তাটিকে অ্যাসিঙ্ক্রোনাসভাবে লগ করে, যার অর্থ হল কলআউট ব্লক করার কারণে যে কোনও বিলম্ব আপনার API-তে প্রবর্তিত হয় না।
মেসেজলগিং নীতি মেমোরিতে লগ করা বার্তাগুলিকে একটি বাফারে লেখে। মেসেজ লগার বাফার থেকে বার্তাগুলি পড়ে এবং তারপর আপনার কনফিগার করা গন্তব্যে লেখে। প্রতিটি গন্তব্যের নিজস্ব বাফার থাকে।
ব্যবহারকারীরা নতুন সিসলগ এন্ডপয়েন্টে প্রেরিত লগ বার্তা গ্রহণে বিলম্বের সম্মুখীন হতে পারেন। এটি নীতিমালায় একটি "কোল্ড স্টার্ট" আচরণের কারণে। যখন একটি নতুন লগিং গন্তব্য কনফিগার করা হয়, তখন বিদ্যমান লগিং গন্তব্য(গুলি) ছাড়াও, বার্তা প্রসেসর (এমপি) প্রথমে ১০০০ লগ বার্তা পাঠানোর আগে মেমরিতে সারিবদ্ধ করতে পারে। এর ফলে কম ট্র্যাফিক পরিবেশে প্রাথমিক বিলম্ব হতে পারে। এই প্রাথমিক বিলম্বটি সাধারণ উৎপাদন কাজের চাপের জন্য পর্যবেক্ষণযোগ্য নয়, কারণ বার্তাগুলি দ্রুত জমা হওয়া উচিত। একবার থ্রেশহোল্ড পূরণ হয়ে গেলে, লগ বার্তাগুলি প্রত্যাশা অনুযায়ী বিতরণ করা হবে। বার্তা প্রসেসরের একটি সুন্দর পুনঃসূচনা সম্পাদন করলে সারিবদ্ধ বার্তাগুলি সারি থেকে বেরিয়ে যাওয়ার সাথে সাথে সরবরাহ শুরু হতে পারে।
যদি বাফারে লেখার হার পঠনের হারের চেয়ে বেশি হয়, তাহলে বাফার ওভারফ্লো হয়ে যাবে এবং লগিং ব্যর্থ হবে। যদি এটি ঘটে, তাহলে আপনি লগ ফাইলে নিম্নলিখিত বার্তাটি দেখতে পাবেন:
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 প্রপার্টি সেট করুন এবং Message Processor পুনরায় চালু করুন। অনুগ্রহ করে মনে রাখবেন যে এই প্রপার্টিটি প্রাথমিকভাবে ডিফল্টভাবে মন্তব্য করা হয়।
দ্রষ্টব্য: Edge-এর রেসপন্স মেসেজ ভেরিয়েবলগুলি Error Flow থেকে পাওয়া যায় না। পূর্ববর্তী ফ্লোটি Error Flow হলে এই ভেরিয়েবলগুলি PostClientFlow-তেও পাওয়া যায় না। আপনি যদি PostClientFlow থেকে রেসপন্স তথ্য লগ করতে চান, তাহলে মেসেজ অবজেক্টটি ব্যবহার করুন। কোনও ত্রুটি ছিল কিনা তা প্রতিক্রিয়া থেকে হেডার এবং অন্যান্য তথ্য পেতে আপনি এই অবজেক্টটি ব্যবহার করতে পারেন। আরও তথ্য এবং একটি উদাহরণের জন্য Message ভেরিয়েবলগুলি দেখুন।
প্রাইভেট ক্লাউডের জন্য এজে লগ বার্তা টাইমস্ট্যাম্প নিয়ন্ত্রণ করা
ডিফল্টরূপে, সমস্ত লগ বার্তার টাইমস্ট্যাম্পের ফর্ম্যাটটি এই রকম:
yyyy-MM-dd'T'HH:mm:ss.SSSZ
এই সিস্টেম-ব্যাপী ডিফল্টটি DateFormat উপাদান ব্যবহার করে syslog গন্তব্যস্থলের জন্য ওভাররাইড করা যেতে পারে। এই টেমপ্লেটের আচরণ জাভার SimpleDateFormat ক্লাসের ডকুমেন্টেশনে বর্ণনা করা হয়েছে। সেই সংজ্ঞা অনুসারে, yyyy 4-অঙ্কের বছর দিয়ে প্রতিস্থাপন করা হবে, MM 2-অঙ্কের মাস সংখ্যা দিয়ে প্রতিস্থাপন করা হবে, ইত্যাদি। উপরের ফর্ম্যাটের ফলে এই ফর্মের একটি স্ট্রিং তৈরি হতে পারে:
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.dateফরম্যাট=yy/MM/dd'T'HH:mm:ss.SSSZ - আপনার পরিবর্তনগুলি সংরক্ষণ করুন।
- নিশ্চিত করুন যে প্রোপার্টি ফাইলটি 'apigee' ব্যবহারকারীর মালিকানাধীন:
> chown apigee:apigee /opt/apigee/customer/application/message-processor.properties - এজ মেসেজ প্রসেসর পুনরায় চালু করুন:
> /opt/apigee/apigee-service/bin/apigee-service edge-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} রূপ নেয়।
এই বৈশিষ্ট্যগুলি সেট করতে:
- একটি এডিটরে 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 - এজ কম্পোনেন্টটি পুনরায় চালু করুন:
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor পুনরায় চালু করুন
প্রাইভেট ক্লাউড ৪.১৫.০৭ এবং তার আগের সংস্করণের জন্য এজ
ডিফল্টরূপে, বার্তা প্রসেসরে বার্তা লগগুলি নিম্নলিখিত স্থানে অবস্থিত থাকে:
/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 Processors-এর 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>তৃতীয় পক্ষের লগ ব্যবস্থাপনা পরিষেবা কনফিগার করা
মেসেজলগিং নীতি আপনাকে তৃতীয় পক্ষের লগ ব্যবস্থাপনা পরিষেবাগুলিতে সিসলগ বার্তা পাঠাতে দেয়, যেমন স্প্লঙ্ক, সুমো লজিক এবং লগলি। আপনি যদি এই পরিষেবাগুলির মধ্যে একটিতে সিসলগ পাঠাতে চান, তাহলে পরিষেবার হোস্ট, পোর্ট এবং প্রোটোকল কনফিগার করার জন্য সেই পরিষেবার ডকুমেন্টেশন দেখুন, তারপর সেই অনুযায়ী এই নীতিতে সিসলগ উপাদান সেট করুন।
তৃতীয় পক্ষের লগ পরিচালনা কনফিগারেশনের জন্য নিম্নলিখিত ডকুমেন্টেশন দেখুন:
- স্প্লাঙ্ক (পণ্যের সংস্করণ নির্বাচন করুন)
এই Apigee কমিউনিটি পোস্টটিও দেখুন: Splunk-এ বার্তা লগ করুন - সুমো লজিক
- এপিজি কমিউনিটির এই পোস্টটিও দেখুন: সুমো লজিক দিয়ে লগিং সেট আপ করা, আমার কোন হোস্ট ব্যবহার করা উচিত?
- লগিং পরিষেবা হিসেবে সুমো লজিক ব্যবহারের সম্পূর্ণ উদাহরণের জন্য, নিম্নলিখিত Apigee কমিউনিটি পোস্টটি দেখুন। সমাধানটি সুমো লজিক HTTP সোর্স কালেক্টরের কাছে HTTP POST অনুরোধ করার জন্য একটি একক জাভাস্ক্রিপ্ট নীতি ব্যবহার করে: জাভাস্ক্রিপ্ট এবং HTTP ব্যবহার করে সুমো লজিকে লগিং করা
- লগলি
Loggly ব্যবহার করার সময়,<Syslog>এলিমেন্টের চাইল্ড হিসেবে নীতিতে<FormatMessage>true</FormatMessage>প্রয়োজন।
লগলিতে বার্তা লগিং সম্পর্কে আরও তথ্যের জন্য এই অ্যাপিগি কমিউনিটি পোস্টটিও দেখুন: লগলিতে বার্তা লগ করুন
ত্রুটির উল্লেখ
এই বিভাগটি ফল্ট কোড এবং ত্রুটি বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ফল্ট কোড | HTTP স্থিতি | কারণ |
|---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed | 500 | ফল্ট স্ট্রিং দেখুন। |
স্থাপনার ত্রুটি
আপনি যখন এই নীতি সম্বলিত একটি প্রক্সি স্থাপন করেন তখন এই ত্রুটিগুলি ঘটতে পারে৷
| ত্রুটির নাম | কারণ | ঠিক করুন |
|---|---|---|
InvalidProtocol | মেসেজলগিং নীতির স্থাপনা এই ত্রুটির সাথে ব্যর্থ হতে পারে যদি <Protocol> উপাদানের মধ্যে নির্দিষ্ট করা প্রোটোকল বৈধ না হয়। বৈধ প্রোটোকল হল TCP এবং UDP। TLS/SSL এর মাধ্যমে syslog বার্তা পাঠানোর জন্য, শুধুমাত্র TCP সমর্থিত। | build |
InvalidPort | মেসেজলগিং নীতির স্থাপনা এই ত্রুটির সাথে ব্যর্থ হতে পারে যদি <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
সম্পর্কিত বিষয়
- এজ দ্বারা প্রকাশিত ভেরিয়েবল: ভেরিয়েবল রেফারেন্স