این مستند به تشریح نحوه استفاده از ماژول مدیریت لاگ سامانه جامع مدیریت داده و یکپارچه سازی خدمات پلتکو با استفاده از پشته نرم افزاری ELK می پردازد. در ادامه این مطلب با شرکت دانش بنیان پلتکو همراه ما باشید.
1 – مقدمه
این مستند به عنوان راهنمای سریع راهبری ماژول مدیریت لاگ در پلتفرم پلتکو تهیه شده است و جزییات مربوط به آن را شرح می دهد.
از این ماژول جهت تجمیع، تحلیل و نمایش لاگهای مربوط به درخواست/پاسخ های پلتفرم استفاده می شود. همچنین این امکان وجود دارد که در بین تمام لاگها جستجو و درخواست/پاسخ های مورد نظر را بررسی و پیگیری نمود.
تمامی قابلیت های پیش گفته با نصب پشته نرمافزاری ELK Stack نسخه ۸.۵.۳ محقق میگردد. پشته نرمافزاری مذکور شامل چندین محصول متنباز با لایسنس Apache و به شرح ذیل میباشد:
- Elasticsearch : یک دیتابیسNoSQL مبتنی بر موتور جستجوی Lucene که وظیفه نگهداری و پردازش لاگها و ارائهی قابلیت جستجو در لاگها را بر عهده دارد.
- Logstash: ابزار Log Pipeline که دادهها را به مقصد Elasticsearch ارسال میکند.
- Kibana : ابزاری که از طریق برقراری ارتباط با Elasticsearch عملیات تصویرسازی داده ها را انجام می دهد.
- Filebeat : ابزاری است برای جمع آوری لاگها و ارسال آنها به Logstash یا دیگر ابزارها.
2 – صفحه ورود
با وارد کردن آدرس سرویس ELK صفحه لاگین یا ورود را مشاهده خواهید نمود:
در این صفحه با وارد کردن اطلاعات کاربری خود (نام کاربری/ رمز عبور) میتوانید وارد سامانه شوید. سپس با ورود به سامانه به داشبورد اصلی (APIM) منتقل میشوید.
3 – بخشهای اصلی آنالیز لاگ
تصویر بالا بخشهای اصلی ماژول مدیریت لاگ را در سه قسمت به شرح ذیل نمایش میدهد:
- Discover (پیکان نارنجی): این قسمت تمامی لاگهای ثبت شده در ماژول مدیریت لاگ را نمایش میدهد. این امکان وجود دارد که محتوای خاصی را در یک یا چند لاگ جستجو نمود و فیلترهای مختلفی را نیز بر روی نتایج اعمال کرد.
- Visualize Library (پیکان آبی): در این قسمت میتوان به ساخت نمودار و جداول جهت ایجاد گزارشات تصویری پرداخت. هر نمودار با یک هدف و مجموعه ای از امکانات مشخص به دریافت نتیجه مورد نظر کمک میکند.
- Dashboard (پیکان سبز): در این قسمت لیست داشبوردهایی که از مجموع یک یا چند Visual ساخته شده را میتوان مشاهده نمود.
محیط جستجو Discover
بخش مربوط به جستجو یا Discover مطابق با تصویر زیر است. در این بخش برای یافتن لاگ درخواست/پاسخ مورد نظر از نوار ابزار Search میتوان استفاده نمود.
در کادر جستجو که با پیکان قرمز نشان داده شده است میتوان فیلترها و جستجوهای مورد نظر را اعمال کرد.
• Discover CheatSheet
مثال 2 |
مثال 1 |
نوع جستجو |
توضیحات |
||
A |
request rejected |
لغت |
عبارت بالا نتایجی را برمیگرداند که شامل دو لغت بالا باشند که به این صورت استخراج میکند:
‘rejected’ AND/OR ‘request’ |
||
“A” |
“request rejected” |
عبارت |
عبارت بالا نتایجی را برمیگرداند که دقیقا عبارت “request rejected” در آن وجود داشته باشد | ||
A OR B |
httpStatus: (200 OR 202) |
لغت “یا” (OR) |
عبارت بالا تمام لاگهایی را برمیگرداند که http status آنها یا مقدار 200 دارند یا مقدار 202 | ||
A AND B |
method: GET AND “/api/v1.0/test” |
لغت “و” (AND) |
عبارت بالا تمام لاگ هایی را برمیگرداند که متد آنها get میباشد و عبارت “/api/v1.0/test” در آن موجود باشد | ||
A AND NOT B |
method: GET AND NOT “/api/v1.0/test” |
NOT |
عبارت بالا تمام لاگ هایی را برمیگرداند که متد آنها get میباشد و عبارت “/api/v1.0/test” در آن موجود نباشد | ||
A AND +v1.0 |
method: GET AND +v1.0 |
+ |
عبارت بالا شامل تمام لاگهایی میشود که متد آنها get میباشد و حتما v1.0 در آن ها موجود میباشد | ||
A AND -v1.0 |
method: GET AND +v1.0 |
– |
عبارت بالا شامل تمام لاگهایی میشود که متد آنها get میباشد و حتما v1.0 در آن ها موجود نباشد | ||
x: (A OR B) |
http AND (GET OR POST) |
() |
با جستجوی عبارت بالا تمام لاگهایی که در آن لغت http موجود باشد و متد آن get یا postباشد برگردانده میشود | ||
[1 TO 5] |
responseTime : [1 TO 5] |
[] |
عبارت بالا شامل لاگهای می شود که responseTime آنها اعدادی از ۱ تا ۵ می باشند | ||
{1 TO 5} |
responseTime : [1 TO 5] |
{} |
عبارت بالا شامل لاگهای می شود که responseTime آنها اعدادی از ۱ تا ۵ می باشند ولی شامل خود ۱ و ۵ نمیشوند |
||
responseTime < 3 |
< |
|
عبارت بالا شامل لاگهای می شود که responseTime آنها عددی بیشتر از ۳ می باشند ولی شامل خود عدد ۳ نمیشوند. |
||
<= 3 |
<= |
|
عبارت بالا شامل لاگهای می شود که responseTime آنها عددی بیشتر از ۳ می باشند و شامل خود عدد ۳ میشوند | ||
httpStatus : 20? |
? |
|
با جستجوی عبارت بالا تمام httpStatus هایی که با ۲۰ شروع می شوند برگردانده میشود مانند : ۲۰۰، ۲۰۲، ۲۰۴ | ||
url : *.txt |
* |
|
با جستجوی عبارت بالا تمام URL هایی که در انتهای آن ها .txt میباشد برگردانده میشود. | ||
sarah~ |
~ |
|
زمانی که دقیقا املای لغتی را مشخص نیست میتوان از جستجوی فازی استفاده نمود.عبارت بالا لاگهایی را برمیگرداند که شامل لغتهایی مانند sara, sahra, sarah باشد. | ||
/h?[tm]ml?/ |
regex |
|
میتوان در نوار جستجو regex های مدنظر را جستجو نمود. فقط باید توجه نمود که در بین دو “/” قرار داشته باشند. |
نمونه دستورات جستجو:
• httpStatus : 403 and not context.keyword : “/api/test/v1.0/test”
جستجوی بالا تمام لاگهایی که httpStatus آنها 403 و آدرس خدمت آن ها /api/test/v1.0/test نیست را نمایش میدهد.
• responseTime > 5
جستجوی بالا لاگهایی که مدت پاسخگویی آن بیش از ۵ ثانیه زمان برده است را نمایش میدهد.
• context.keyword : “/api/test/v1.0/test”
جستجوی بالا تمام لاگهای مربوط به خدمت /api/test/v1.0/test را برمیگرداند. در صورتی که در جستجوی بالا از لغت keyword استفاده نشود حتی خدماتی که آدرس آن ها به طور مثال به صورت /api/test/v1.0/test/inquiry میباشد نیز برگردانده میشود.
• جستجو و رهگیری درخواست ها بر اساس شناسه تراکنش:
“XXXX”
با مقداردهی رشته بالا در نوار جستجو ، عبارت XXXX در تمام لاگها جستوجو میشود و در هر لاگی که مشاهده شد(در هر بخشی از لاگ)، آن لاگ را نمایش میدهد. خروجی نمایش داده شده را میتوان بر اساس Time با استفاده از و موجود درکنار هر پارامتر مرتب نمود.
جهت جستوجو آسانتر، با استفاده از transactionId میتوان به راحتی به لاگهای مربوط به یک درخواست رسید:
requestId.keyword : “123 ”
با مقداردهی نوار Search با رشته بالا، لاگهای یک درخواست با شناسه ۱۲۳ نمایش داده خواهد شد.
• تعیین بازه زمانی مقدار مورد جستجو:
همانطور که در تصویر بالا مشخص است میتوان از این بخش، بازهی زمانی جستجو را مشخص نمود.
– انتخاب بازههای مشخص از یک تاریخ تاکنون:
می توان بازههای مختلف زمانی مدنظر را میتوان انتخاب نمود.
– انتخاب بازهی دلخواه:
با انتخاب تاریخ کادری به جهت مشخص نمودن نقاط ابتدا و انتهای بازه تاریخی، مشاهده خواهد شد.
– خطای Expand your time range:
در برخی موارد لاگ مورد نظر یافت نمیشود، احتمال این وجود دارد که جستجو در بازه زمانی کمی انجام شده باشد. با افزایش بازه زمانی این خطا نمایش داده نخواهد شد.
– نحوهexport گرفتن از نتایج جستجو:
برای این منظور در هنگامی که جستجویی انجام میشود، ابتدا آن را با انتخاب گزینه Save از منوهای بالا، ذخیره کرده و سپس از بخش Share گزینه CSV Reposts و Generate CSV را انتخاب می نماییم. در نهایت با رجوع به قسمت Stack Management (شکل۱) و سپس قسمت Report میتوان نتایج جستجو را دانلود نمود.
5 – انواع لاگها
ماژول مدیریت لاگ می تواند به ازای هر درخواست/پاسخ 7 نوع لاگ را ثبت نماید که در هنگامی فراخوانی یک خدمت حداقل شش لاگ از این 7 نوع لاگ ثبت میشود.
تعداد لاگی که به ازای هر فراخوانی سرویس ثبت میشود در صورتیکه خدمت فرایند ساده تک مرحلهای داشته باشد(یک خدمت از ارائه دهنده فراخوانی میشود) از هر کدام از انواع لاگ ها یکبار ثبت میشود اما در صورتیکه فرایند چند مرحلهای باشد، از هر کدام از لاگهای نوع Incoming و Respond یکبار و به ازای تعداد مراحل که فراخوانی صورت میگیرد نیز لاگهای نوع Responseو Outgoing ثبت میشود.
(شکل۴)
- Incoming: اطلاعات مربوط به درخواست ارسالی به WSO2 API Gateway
- Incoming_PI: اطلاعات مربوط به درخواست ارسالی از WSO2 API Gateway به ماژول PI
- Outgoing: اطلاعات ارسالی از PI به Provider در این نوع لاگ ثبت میشود
- Response: پاسخ برگشتی از Provider به سمت PI است که در واقع پاسخ درخواستی است که اطلاعات آن در Outgoing است
- Response_PI: پاسخ برگشتی از PI به سمت WSO2 API Gateway است
- Respond/Fault: پاسخ ارسالی به مصرف کننده از سمت WSO2 API Gateway که در واقع پاسخ نهایی مربوط به درخواستی است که اطلاعات آن در لاگ Incoming مشخص شده است.
6 – تشریح پارامترهای لاگ
مطابق شکل زیر، در ستون سمت چپ میتوان برای نمایش سفارشی لاگها، ویژگی/پارامترهای مورد نظر، را به لیست اضافه نمود. بدین وسیله در لیست لاگها میتوان پارامترهای انتخابی را در کنار time مشاهده نمود.
از مهمترین پارامترهای موجود در هر لاگ، میتوان به موارد زیر اشاره نمود:
- لاگ Incoming:
payload: بدنه درخواست کاربر
- لاگ Outgoing:
payload: بدنه درخواست تغییر داده شده به بدنهی مدنظر بکاند
endpointName: نام اندپوینت
outgoingMethod: نام متد بکاند
- لاگ Response:
payload: بدنهی پاسخ ارسالی از سمت بکاند
httpStatus: کد وضعیت پاسخدهی بکاند
- لاگ Respond:
payload: بدنهی پاسخ ارسالی به سمت کاربر
httpStatus: کد وضعیت پاسخدهی سرویس
- ویژگیهای مشترک تمام لاگها:
logName: نام لاگ
version: API نسخه
context: آدرس درخواست مصرفکننده
headers: تمامی هدرهای درخواست
remoteIP: آی پی مصرفکننده
username: نام کاربر
direction: جهت لاگ مربوطه
resource: بخش انتهایی آدرس درخواستی
request/response
7- محیط ساخت گزارشات تصویری (Visualize)
در این بخش میتوان به بصریسازی لاگها پرداخت. امکان ایجاد انواع نمودارها در این بخش وجود دارد.
8 – داشبوردها (Dashboards)
در این بخش می توان با استفاده از یک یا چند گزارش تصویری یک داشبورد سفارشی جدید ساخت.
برای اینکه داشبورد ساخته شود و مانند شکل بالا ذخیره شود ابتدا باید از محیط داشبورد گزینه Create dashboard را انتخاب و سپس مانند شکل زیر در قسمت Create visiualization یک visual را ساخت.
(شکل۹)
در صورتی که از قبل از visual مورد نیازساخته شده باشد، در قسمت Add from library میتوان آن را انتخاب و سپس ذخیره کرد تا داشبورد مدنظر ساخته شود.
9 – داشبورد APIM
بعد از ورود به سامانه مدیریت لاگ به داشبورد APIM منتقل میشوید. همچنین میتوانید مانند تصویر زیر از منوی سمت چپ، به داشبورد دسترسی داشته باشید:
با ورود به داشبورد در بالای صفحه فیلترهایی مشاهده میکنید که میتوانید دادههای در حال مشاهده در سامانه را با استفاده از آنها محدود کنید.
به عنوان مثال در بالای سمت راست داشبورد میتوانید از فیلتر بازه زمانی استفاده کنید و لاگهای مربوط به روز جاری یا ۱۵ دقیقه اخیر را مشاهده کنید:
یا مطابق تصویر زیر با استفاده از فیلتر Log Name، دادهها را بر اساس نوع لاگ فیلتر کنید:
همانطور که در تصاویر بالا گویاست، فیلترهای زیر در این داشبورد وجود دارند:
- فیلتر Status Code: فیلتر بر اساس کد وضعیت (۲۰۰، ۲۰۱، ۴۰۰، ۵۰۰ و …)
- فیلتر Method: فیلتر بر اساس متد درخواست (Get, Post, Option , …)
- فیلتر Log Name: فیلتر بر اساس نام لاگ (Incoming, Respond, …)
- فیلتر API Base: فیلتر بر اساس آدرس پایه API
- فیلتر Endpoint: فیلتر بر اساس آدرس Endpoint
- فیلتر Message ID: فیلتر بر اساس uid پیام
- فیلتر Api Context: فیلتر بر اساس آدرس کامل سرویس
همچنین در تصاویر زیر هر کدام از نمودارها معرفی شده است:
10. مدیریت ایندکسها
برای مدیریت ایندکسهای موجود در Elastic Search میتوان از طریق منوی سمت چپ و از منوی Stack Management و سپس Index Management به بخش مدیریت ایندکسها دسترسی پیدا کرد.
در این بخش در صورت نیاز میتوان عملیاتهای جستجو، انتخاب، حذف و … را بر ایندکسها انجام داد. در تصویر میتوانید جزییات این بخش را مشاهده نمایید.
بیشتر بخوانید: مستند «راهنمای راهاندازی سریع WSO2 API Manager»
شرکت دانش بنیان پلتکو، ارائه دهنده خدمات تخصصی یکپارچه سازی و مدیریت وبسرویسها می باشد که خدماتی نظیر گذرگاه سرویسهای سازمانی (ESB) و مدیریت وبسرویسها (API Manager)، مانیتورینگ، مدیریت لاگها، وب پرتال و دهها سرویس تخصصی دیگر به سازمانها ارائه میدهد.
در این مطلب به طور کامل مستند کاربری ماژول مدیریت لاگ پلتفرم پلتکو ارائه شد و تمامی مراحل مدیریت لاگ پلتفرم پلتکو همراه با تصاویر و بیان جزئیات شرح داده شد. امیدواریم اطلاعات کافی را درباره این مبحث بدست آورده باشید. سوالات، پیشنهادات و نظرات خود را با ما به اشتراک بگذارید.
بدون دیدگاه