سلام، نام من یوجین است، من یک رهبر تیم B2B در Citymobil هستم. یکی از وظایف تیم ما پشتیبانی از ادغام برای سفارش تاکسی از شرکا است و برای اطمینان از یک سرویس پایدار، ما همیشه باید آنچه را که در میکروسرویس های خود اتفاق می افتد درک کنیم. و برای این شما باید به طور مداوم سیاهههای مربوط را نظارت کنید.
در Citymobil، ما از پشته ELK (ElasticSearch، Logstash، Kibana) برای کار با گزارشها استفاده میکنیم، و حجم دادههایی که به آنجا میآیند بسیار زیاد است. یافتن مشکلاتی در این انبوه از درخواست ها که ممکن است پس از استقرار کد جدید ظاهر شوند بسیار دشوار است. و برای شناسایی بصری آنها، کیبانا دارای بخش داشبورد است.
مقالات زیادی در Habré با نمونه هایی از نحوه راه اندازی یک پشته ELK برای دریافت و ذخیره داده ها وجود دارد، اما هیچ مطلب مرتبطی در مورد ایجاد داشبورد وجود ندارد. بنابراین، من می خواهم نشان دهم که چگونه می توان یک نمایش تصویری از داده ها بر اساس گزارش های ورودی در کیبانا ایجاد کرد.
تنظیم
برای واضح تر شدن، من یک تصویر Docker با ELK و Filebeat ایجاد کردم. و در یک ظرف کوچک قرار داده شده است
مخزن پیکربندی را کلون کنید docker-compose
و تنظیمات ELK را با دستور اجرا کنید docker-compose up
. عمداً کلید اضافه نمی کند -d
برای مشاهده پیشرفت پشته ELK.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
اگر همه چیز به درستی پیکربندی شده باشد، یک ورودی در سیاههها خواهیم دید (شاید نه بلافاصله، فرآیند راهاندازی یک ظرف با کل پشته ممکن است چند دقیقه طول بکشد):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
با آدرس localhost:5061
کیبانا باید باز شود.
تنها چیزی که باید پیکربندی کنیم این است که یک Index Pattern برای Kibana با اطلاعاتی در مورد اینکه چه داده هایی را نمایش دهیم ایجاد کنیم. برای انجام این کار، یک درخواست curl را اجرا می کنیم یا یک سری اقدامات را در رابط گرافیکی انجام می دهیم.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
ایجاد یک الگوی شاخص از طریق رابط کاربری گرافیکی
برای پیکربندی، بخش Discover را در منوی سمت چپ انتخاب کنید و به صفحه ایجاد الگوی فهرست بروید.
با کلیک بر روی دکمه "ایجاد الگوی شاخص" به صفحه ایجاد فهرست می رسیم. در قسمت «نام الگوی فهرست»، «logstash-*» را وارد کنید. اگر همه چیز به درستی پیکربندی شده باشد، در زیر کیبانا ایندکس هایی که تحت قانون قرار می گیرند نشان می دهد.
در صفحه بعد، فیلد کلید را با مهر زمانی انتخاب کنید، در مورد ما چنین است @timestamp
.
با این کار صفحه تنظیمات ایندکس ظاهر می شود، اما در حال حاضر نیازی به اقدام بیشتری از سوی ما نیست.
اکنون میتوانیم دوباره به بخش Discover برویم، جایی که ورودیهای گزارش را مشاهده خواهیم کرد.
داشبورد
در منوی سمت چپ، روی قسمت Dashboard create کلیک کنید و به صفحه مربوطه بروید.
روی "ایجاد داشبورد جدید" کلیک کنید و به صفحه اضافه کردن اشیا به داشبورد بروید.
بر روی دکمه "ایجاد جدید" کلیک کنید، سیستم از شما می خواهد که نوع نمایش داده را انتخاب کنید. Kibana تعداد زیادی از آنها را دارد، اما ما به ایجاد یک نمایش گرافیکی از "نوار عمودی" و یک "جدول داده" جدولی خواهیم پرداخت. انواع دیگر ارائه نیز به روشی مشابه پیکربندی شده اند.
برخی از اشیاء موجود دارای برچسب B و E هستند، به این معنی که قالب آزمایشی یا در آزمایش بتا است. با گذشت زمان، قالب ممکن است تغییر کند یا کاملاً از کیبانا ناپدید شود.
نوار عمودی
برای مثال "نوار عمودی"، بیایید یک هیستوگرام از نسبت وضعیت های پاسخ موفق و ناموفق سرویس خود ایجاد کنیم. در پایان تنظیمات، نمودار زیر را دریافت می کنیم:
ما تمام درخواستهایی را با وضعیت پاسخ < 400 به عنوان موفق و >= 400 به عنوان مشکل طبقهبندی میکنیم.
برای ایجاد نمودار "نوار عمودی" باید یک منبع داده را انتخاب کنیم. الگوی Index را که قبلا ایجاد کردیم انتخاب کنید.
به طور پیش فرض، پس از انتخاب منبع داده، یک نمودار جامد ظاهر می شود. بیایید آن را تنظیم کنیم.
در بلوک "Buckets"، دکمه "Add" را فشار دهید، "X-asis" را انتخاب کنید و محور X را تنظیم کنید. در فیلد "Aggregation"، "Date Histogram" و در "Field" "@timestamp" را انتخاب کنید، که فیلد زمان را نشان می دهد. بیایید "حداقل فاصله" را در حالت "خودکار" بگذاریم و به طور خودکار با صفحه نمایش ما تنظیم می شود.
با کلیک بر روی دکمه "به روز رسانی" نموداری با تعداد درخواست ها در هر 30 ثانیه مشاهده می کنیم.
حالا بیایید ستون ها را در امتداد محور Y تنظیم کنیم.اکنون تعداد کل درخواست ها را در بازه زمانی انتخاب شده نمایش می دهیم.
بیایید مقدار "Aggregation" را به "Sum Bucket" تغییر دهیم، که به ما امکان می دهد داده ها را برای درخواست های موفق و ناموفق ترکیب کنیم. در بلوک Bucket -> Aggregation، تجمیع را با "Filters" انتخاب کنید و فیلتر را با "statusCode >= 400" تنظیم کنید. و در قسمت "برچسب سفارشی"، نام نشانگر خود را برای نمایش قابل درک تر در افسانه روی نمودار و در لیست کلی نشان می دهیم.
با کلیک بر روی دکمه "به روز رسانی" در زیر بلوک تنظیمات، نموداری با درخواست های مشکل دریافت می کنیم.
اگر روی دایره کنار افسانه کلیک کنید، پنجره ای ظاهر می شود که در آن می توانید رنگ ستون ها را تغییر دهید.
حالا بیایید داده های مربوط به درخواست های موفق را به نمودار اضافه کنیم. در بخش «متریک»، روی دکمه «افزودن» کلیک کنید و «محور Y» را انتخاب کنید.
در متریک ایجاد شده، تنظیمات مشابه درخواست های اشتباه را انجام می دهیم. فقط در فیلتر "statusCode < 400" را مشخص می کنیم.
با تغییر رنگ ستون جدید، نمایشی از نسبت درخواست های مشکل دار و موفق دریافت می کنیم.
با کلیک بر روی دکمه "ذخیره" در بالای صفحه و تعیین نام، اولین نمودار را در داشبورد مشاهده خواهیم کرد.
جدول داده
حال نمای جدولی «جدول داده» را در نظر بگیرید. بیایید یک جدول با لیستی از تمام URL های درخواست شده و تعداد آن درخواست ها ایجاد کنیم. مانند مثال نوار عمودی، ابتدا یک منبع داده را انتخاب می کنیم.
پس از آن، جدولی با یک ستون روی صفحه نمایش داده می شود که تعداد کل درخواست ها را برای بازه زمانی انتخاب شده نشان می دهد.
ما فقط بلوک "Buckets" را تغییر خواهیم داد. روی دکمه "افزودن" کلیک کنید و "Split rows" را انتخاب کنید.
در قسمت "Aggregation"، "Terms" را انتخاب کنید. و در قسمت ظاهر شده "Field" "url.keyword" را انتخاب کنید.
با مشخص کردن مقدار "Url" در قسمت "Custom label" و کلیک بر روی "Update"، جدول مورد نظر را با تعداد درخواست های هر یک از URL ها در بازه زمانی انتخاب شده دریافت می کنیم.
در بالای صفحه، دوباره روی دکمه "ذخیره" کلیک کنید و نام جدول را مشخص کنید، به عنوان مثال Urls. بیایید به داشبورد برگردیم و هر دو نمای ایجاد شده را ببینیم.
کار با داشبورد
هنگام ایجاد داشبورد، ما فقط پارامترهای نمای اولیه را در تنظیمات شیء نمایش تنظیم می کنیم. معنی ندارد که داده ها را برای فیلترها در اشیا مشخص کنید، به عنوان مثال، "محدوده تاریخ"، "فیلتر کردن توسط کاربر عامل"، "فیلتر کردن بر اساس کشور درخواست" و غیره. تعیین دوره زمانی مورد نظر یا تنظیم فیلتر لازم در پانل پرس و جو که در بالای اشیاء قرار دارد بسیار راحت تر است.
فیلترهای اضافه شده در این پنل روی کل داشبورد اعمال خواهند شد و تمام اشیاء نمایشی مطابق با داده های فیلتر شده واقعی بازسازی خواهند شد.
نتیجه
Kibana ابزار قدرتمندی است که به شما امکان می دهد هر داده را به روشی راحت تجسم کنید. من سعی کردم تنظیمات دو نوع نمایشگر اصلی را نشان دهم. اما انواع دیگر به روشی مشابه پیکربندی شده اند. و فراوانی تنظیماتی که من "پشت صحنه" گذاشتم به شما این امکان را می دهد که نمودارها را به شکل بسیار انعطاف پذیری مطابق با نیازهای خود سفارشی کنید.
منبع: www.habr.com