خط‌مشی MessageLogging

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

چه

یکی از بهترین راه‌ها برای ردیابی مشکلات در محیط زمان اجرای API، ثبت پیام‌ها است. می‌توانید خط‌مشی MessageLogging را به API خود پیوست و پیکربندی کنید تا پیام‌های سفارشی را در دیسک محلی (فقط 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 پیکربندی شود، کارگزار نیابتی API پیام‌های گزارش را از Apigee Edge به سرور syslog راه‌دور ارسال می‌کند. باید ازقبل سرور syslog دردسترس داشته باشید. درغیراین‌صورت، خدمات مدیریت گزارش عمومی، مانند Splunk،‏ Sumo Logic، و Loggly دردسترس هستند. پیکربندی خدمات مدیریت گزارش طرف سوم را ببینید.

برای مثال، تصور کنید که باید اطلاعات مربوط به هر پیام درخواست را که میانای برنامه‌سازی کاربردی شما از برنامه‌های مصرف‌کننده دریافت می‌کند ثبت کنید. مقدار 3f509b58 نشان‌دهنده مقدار کلیدی خاص سرویس loggly است. اگر حساب loggly دارید، کلید loggly خود را جایگزین کنید. پیام گزارش تولیدشده با چهار مقدار تکمیل خواهد شد: سازمان، پراکسی API، و نام محیط مرتبط با تراکنش، به‌همراه مقدار پارامتر پُرسمان در پیام درخواست.

اگر استقرار Edge for Private Cloud دارید، می‌توانید پیام‌های گزارش را نیز در فایل بنویسید.

Syslog over 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>

گزارش‌گیری پیام جاری‌سازی‌محور


مرجع عنصر

از عناصر زیر برای پیکربندی نوع خط‌مشی MessageLogging استفاده کنید.

نام فیلد شرح فیلد

File

مقصد فایل محلی. (ثبت گزارش فایل فقط در استقرار Edge for Private Cloud پشتیبانی می‌شود.) برای اطلاعات درباره مکان ذخیره فایل‌ها، به مکان فایل گزارش در Edge برای «ابر خصوصی» مراجعه کنید.

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

حداکثر تعداد فایل‌هایی را که باید در زمینه تنظیمات چرخش شما نگهداری شود مشخص می‌کند. مقدار پیش‌فرض ۸ است.

اگر صفر (۰) را مشخص کنید، فایل‌های گزارش برای همیشه حفظ می‌شوند، اما تابع تنظیمات چرخش فایل شما هستند، اگرچه هیچ‌یک از فایل‌ها حذف یا تغییر نام داده نمی‌شوند. بنابراین، برای جلوگیری از خطاهای پر شدن دیسک در آینده، این مقدار را روی مقداری بزرگ‌تر از صفر تنظیم کنید، یا سیستم خودکار و منظمی برای پاک‌سازی یا بایگانی کردن فایل‌های گزارش قدیمی‌تر پیاده‌سازی کنید.

BufferMessage

اگر جاری‌سازی HTTP برای کارگزار وکالتی شما فعال باشد، پیام‌های درخواست/پاسخ بافر نمی‌شوند. اگر می‌خواهید محتوایی را که نیاز دارد پیام جاری تجزیه شود گزارش کنید، «پیام بافر» را روی درست تنظیم کنید. برای مثال، برگه نمونه «جاری‌سازی فعال» را ببینید. پیش‌فرض: نادرست

Syslog

مقصد syslog. برای ارسال syslog به Splunk،‏ Sumo Logic، یا Loggly، به پیکربندی سرویس‌های مدیریت گزارش طرف سوم مراجعه کنید.

Message

پیامی را که باید به syslog ارسال شود بسازید و نوشتار را با متغیرها ترکیب کنید تا اطلاعات موردنظرتان را ضبط کنید. نمونه‌ها را ببینید.

توجه: متغیرهای پاسخ در «جریان مشتری پست» پس‌از «جریان خطا» دردسترس نخواهند بود. از متغیرهای پیام برای ثبت اطلاعات پاسخ در هر دو وضعیت خطا و موفقیت استفاده کنید. همچنین یادداشت‌های استفاده را ببینید.

Host نام میزبان یا نشانی IP سروری که syslog باید به آن ارسال شود. اگر این عنصر را اضافه نکنید، پیش‌فرض localhost است.
Port درگاهی که syslog در آن اجرا می‌شود. اگر این عنصر را اضافه نکنید، مقدار پیش‌فرض ۵۱۴ است.
Protocol ‫TCP یا UDP (پیش‌فرض). اگرچه UDP عملکرد بهتری دارد، پروتکل TCP تحویل گزارش پیام به سرور syslog را تضمین می‌کند. برای ارسال پیام‌های syslog ازطریق TLS/SSL، فقط از TCP پشتیبانی می‌شود.
FormatMessage

‫true یا false (پیش‌فرض)

اختیاری است، اما <FormatMessage>true</FormatMessage> برای استفاده با Loggly الزامی است.

این عنصر به شما امکان می‌دهد قالب محتوای تولیدشده توسط Apigee را که به ابتدای پیام اضافه می‌شود کنترل کنید. اگر روی درست تنظیم شود، پیام syslog با تعداد ثابتی از نویسه‌ها پیش‌رونده می‌شود، که به شما امکان می‌دهد آن اطلاعات را از پیام‌ها فیلتر کنید. در اینجا نمونه‌ای از قالب ثابت آورده شده است:

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

اطلاعات تولیدشده توسط Apigee شامل موارد زیر است:

  • <۱۴> - امتیاز اولویت (پروتکل Syslog را ببینید) براساس سطح گزارش و سطح تسهیلات پیام.
  • ‫۱ - نسخه کنونی syslog.
  • تاریخ با انحراف از زمان هماهنگ جهانی (UTC = +0000).
  • شناسه منحصربه‌فرد جهانی پردازشگر پیام.
  • ‫«Apigee-Edge - - - »

اگر روی نادرست (پیش‌فرض) تنظیم شود، آن نویسه‌های ثابت به ابتدای پیام اضافه نمی‌شود.

PayloadOnly

‫true یا false (پیش‌فرض)

این عنصر قالب پیام‌های تولیدشده توسط Apigee را طوری تنظیم می‌کند که فقط حاوی بدنه پیام syslog باشد، بدون نویسه‌های پیش‌افزوده‌ای که توسط FormatMessage مشخص شده است.

اگر این عنصر را اضافه نکنید یا آن را خالی بگذارید، مقدار پیش‌فرض false است.

FormatMessage را ببینید.

DateFormat

اختیاری.

رشته الگوی قالب‌بندی برای استفاده در قالب‌بندی مُهر زمان برای هر پیام گزارش. به‌طور پیش‌فرض، Apigee از yyyy-MM-dd'T'HH:mm:ss.SSSZ استفاده می‌کند. عملکرد این الگو در مستندات کلاس SimpleDateFormat در Java توضیح داده شده است.

SSLInfo

به شما امکان می‌دهد پیام‌ها را ازطریق SSL/TLS ثبت کنید. با زیرعنصر <Enabled>true</Enabled> استفاده کنید.

اگر این عنصر را اضافه نکنید یا آن را خالی بگذارید، مقدار پیش‌فرض نادرست (بدون TLS/SSL) است.

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

می‌توانید برچسب <SSLInfo> را همان‌گونه که در «نقطه پایانی هدف» می‌توانید پیکربندی کنید، ازجمله فعال کردن «امنیت لایه انتقال»/ «لایه سوکت امن» دوطرفه، همان‌طور که در مرجع پیکربندی پراکسی API توضیح داده شده است. فقط از پروتکل TCP پشتیبانی می‌شود.

logLevel

اختیاری.

مقادیر معتبر: INFO (پیش‌فرض)، ALERT، WARN، ERROR

سطح خاصی از اطلاعات را برای گنجاندن در گزارش پیام تنظیم کنید.

اگر از عنصر FormatMessage استفاده می‌کنید (آن را روی درست تنظیم می‌کنید)، تنظیم logLevel شما بر امتیاز اولویت محاسبه‌شده (عدد داخل کروشه‌ها) در اطلاعات تولیدشده توسط Apigee که به پیام اضافه شده است تأثیر می‌گذارد.

طرح‌واره‌ها


یادداشت‌های استفاده

هنگام پیوست کردن خط‌مشی MessageLogging به جریان پراکسی API، آن را در پاسخ ProxyEndpoint، در جریان ویژه‌ای به نام PostClientFlow قرار دهید. ‫PostClientFlow پس‌از ارسال پاسخ به مشتری درخواست‌کننده اجرا می‌شود، که تضمین می‌کند همه سنجه‌ها برای ثبت گزارش دردسترس باشند. برای جزئیات مربوط به استفاده از PostClientFlow، به مرجع پیکربندی پراکسی API مراجعه کنید.

‫PostClientFlow از دو جهت ویژه است:

  1. فقط به‌عنوان بخشی از جریان پاسخ اجرا شد.
  2. این تنها جریانی است که پس‌از ورود پراکسی به وضعیت خطا اجرا می‌شود.

ازآنجایی‌که این خط‌مشی صرف‌نظر از موفقیت یا عدم موفقیت پراکسی اجرا می‌شود، می‌توانید خط‌مشی‌های MessageLogging را در PostClientFlow قرار دهید و مطمئن باشید که همیشه اجرا می‌شوند.

تصویر «ردیابی» زیر نشان می‌دهد که خط‌مشی MessageLogging به‌عنوان بخشی از PostClientFlow، پس‌از اجرای DefaultFaultRule، اجرا می‌شود:

در این مثال، خط‌مشی «درستی‌سنجی کلید میانای برنامه‌سازی کاربردی» به‌دلیل کلید نامعتبر باعث خطا شده است.

در زیر تعریف 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 نسخه ۴.۱۵.۰۷ و نسخه‌های قدیمی‌تر با این مشکل مواجه شدید، فایل message-logging.properties را پیدا کنید و از این راه‌حل استفاده کنید:

دارایی max.log.message.size.in.kb را (مقدار پیش‌فرض = ۱۲۸ کیلوبایت) در فایل message-logging.properties افزایش دهید.

برای Edge for Private Cloud نسخه ۴.۱۶.۰۱ و نسخه‌های جدیدتر، دارایی conf/message-logging.properties+max. log.message.size.in.kb را در فایل /opt/apigee/customer/application/message-processor.properties تنظیم کنید و «پردازشگر پیام» را بازراه‌اندازی کنید. لطفاً توجه داشته باشید که این دارایی در ابتدا به‌طور پیش‌فرض نظرگذاری شده است.

توجه: متغیرهای پیام پاسخدر Edge از «جریان خطا» دردسترس نیستند. اگر جریان قبلی «جریان خطا» بوده باشد، این متغیرها در PostClientFlow نیز دردسترس نیستند. اگر می‌خواهید اطلاعات پاسخ را از PostClientFlow ثبت کنید، از شیء message استفاده کنید. می‌توانید از این شیء برای دسترسی به سرایندها و اطلاعات دیگر از پاسخ استفاده کنید، چه خطایی رخ داده باشد چه نه. برای اطلاعات بیشتر و مثال، متغیرهای پیام را ببینید.

کنترل کردن مُهر زمان پیام گزارش در Edge for Private Cloud

به‌طور پیش‌فرض، مُهر زمان در همه پیام‌های گزارش قالب زیر را دارد:

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

این پیش‌فرض سراسری سیستم را می‌توان برای مقصد syslog بااستفاده از عنصر DateFormat ملغی کرد. عملکرد این الگو در مستندات کلاس SimpleDateFormat در Java توضیح داده شده است. طبق آن تعریف، yyyy با سال ۴ رقمی، MM با شماره ماه ۲ رقمی، و غیره جایگزین خواهد شد. قالب بالا ممکن است به رشته‌ای با این قالب منجر شود:

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

می‌توانید از دارایی conf_system_apigee.syslogger.dateFormat در «پردازشگر پیام Edge» برای کنترل آن قالب استفاده کنید. برای مثال، تغییر قالب پیام به:

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» را بازراه‌اندازی کنید:
    > /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

مکان فایل گزارش در Edge for Private Cloud

‫Edge for Private Cloud نسخه ۴.۱۶.۰۱ و بالاتر

به‌طور پیش‌فرض، گزارش‌های پیام «ابر خصوصی» در دایرکتوری زیر در گره‌های «پردازشگر پیام» قرار دارند:

/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 ارجاع دهید زیرا به‌طور پیش‌فرض نظر داده شده است. برای اطلاعات بیشتر، تنظیم یک نشانه که درحال‌حاضر نظرگذاری شده است را ببینید.

اگر می‌خواهید فایل‌های گزارش را در ساختار فایل تخت ذخیره کنید تا همه فایل‌های گزارش در یک دایرکتوری قرار بگیرند، conf/message-logging.properties+enable.flat.directory.structure را در فایل message-logging.properties روی 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 نسخه ۴.۱۵.۰۷ و نسخه‌های قدیمی‌تر

به‌طور پیش‌فرض، گزارش‌های پیام در مکان زیر در پردازنده‌های پیام قرار دارند:

/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>

با تنظیم کردن مشخصه defaultVariableValue در عنصر Message، می‌توان مقدار پیش‌فرض مشترکی برای همه متغیرهای حل‌نشده مشخص کرد:

<Message defaultVariableValue="unknown">This is a test message. id = {request.header.id}</Message>

پیکربندی سرویس‌های مدیریت گزارش طرف سوم

خط‌مشی MessageLogging به شما امکان می‌دهد پیام‌های syslog را به سرویس‌های مدیریت گزارش طرف سوم، مثل Splunk،‏ Sumo Logic، و Loggly ارسال کنید. اگر می‌خواهید syslog را به یکی از آن سرویس‌ها ارسال کنید، برای پیکربندی میزبان، درگاه، و پروتکل سرویس، اسناد آن سرویس را ببینید، سپس عنصر Syslog را در این خط‌مشی براساس آن تنظیم کنید.

برای پیکربندی مدیریت گزارش طرف سوم، مستندات زیر را ببینید:

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطایی را که Edge هنگام راه‌اندازی خطا در این خط‌مشی تنظیم می‌کند شرح می‌دهد. این اطلاعات برای دانستن اینکه آیا قوانین خطا را برای مدیریت خطاها توسعه می‌دهید یا نه مهم است. برای کسب اطلاعات بیشتر، آنچه باید درباره خطاهای خط‌مشی بدانیدو رسیدگی به اشکالات را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای خط‌مشی رخ دهند.

کد خطا وضعیت HTTP علت
steps.messagelogging.StepDefinitionExecutionFailed ۵۰۰ رشته خطا را ببینید.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پراکسی حاوی این خط‌مشی را مستقر می‌کنید.

نام خطا علت رفع اشکال
InvalidProtocol اگر پروتکل مشخص‌شده در عنصر <Protocol> معتبر نباشد، استقرار خط‌مشی MessageLogging می‌تواند با این خطا ناموفق باشد. پروتکل‌های معتبر عبارت‌اند از TCP و UDP. برای ارسال پیام‌های syslog ازطریق TLS/SSL، فقط از TCP پشتیبانی می‌شود.
InvalidPort اگر شماره درگاه در عنصر <Port> مشخص نشده باشد یا معتبر نباشد، استقرار خط‌مشی MessageLogging ممکن است با این خطا ناموفق باشد. شماره درگاه باید عدد صحیحی بزرگ‌تر از صفر باشد.

متغیرهای خطا

این متغیرها زمانی تنظیم می‌شوند که خطای زمان اجرا رخ دهد. برای اطلاعات بیشتر، آنچه باید درباره خطاهای خط‌مشی بدانیدرا ببینید.

متغیر مکان مثال
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

موضوعات مرتبط