Skip to main content

استک EFK

در این مستند نحوه راه‌اندازی استک EFK را با استفاده از دارکوب به شما آموزش می‌دهیم که شامل سه ابزار Elasticsearch و Fluentd و Kibana است. Elasticsearch یک موتور برای ذخیره‌سازی، جستجو و آنالیز داده‌ها است. Kibana یک فرانت اند برای Elastic stack است که جستجو و نمایش داده‌های موجود در Elasticsearch را انجام می‌دهد. Fluentd لاگ‌ها را از جاهای مختلف جمع آوری می‌کند تا در Elasticsearch ذخیره کند.

بالا آوردن elasticsearch#

برای این که بتوانیم تنظیمات دلخواه خودمان را برای elasticsearch اعمال کنیم در یک repo در هم‌گیت یک داکرفایل به همراه فایل تنظیمات قرار می‌دهیم. 

محتوای گیتلب

در داکرفایل فقط فایل تنظیمات را به محل مورد نظر در ایمیج منتقل می‌کنیم

محتوای داکرفایل

که تنظیمات ما فقط برای heap  (توصیه می‌شود مقدار تعیین شده در این فایل را کم‌تر از memory کل بگیرید تا مقداری از آن برای اجرای JVM باقی بماند) است

تنظیمات الستیک

شما می‌توانید تنظیمات دلخواه را اعمال کنید و این تنها برای نمونه است. الان نوبت ساخت اپ در دارکوب است. در پنل دارکوب هنگام ساخت اپ جدید "منبع گیت" را انتخاب کنید و آدرس repo و محل داکرفایل آن را بدهید.

ریپو

این‌جا ما یک repo برای کل استک EFK ایجاد کردیم که یک پوشه‌ی آن مربوط به elasticsearch است و داکرفایل در آن قرار دارد. قبل از دیپلوی نام اپ را elasticsearch انتخاب کردیم و پورت‌ها و متغیرهای محیطی را به شکل زیر نوشتیم:

پورت الستیکانو الستیک

دقت کنید elasticsearch به شکل single node دیپلوی می‌شود. حال برای persist شدن اطلاعات باید یک دیسک به  /usr/share/elasticsearch/data/  (که دیتای elasticsearch در آن‌جا قرار می‌گیرد) mount کنیم. در بخش دیسک یک دیسک با حجم دلخواه اضافه کنید، یک پارتیشن جدید به آن اضافه کنید و به این شکل در مسیر گفته شده mount کنید: 

دیسک الستیکمانت الستیک

حال باید "ذخیره و دیپلوی" را بزنیم و بعد از چند لحظه اپ ما آماده است.

نکته: در این‌جا ما elasticsearch را به دنیای بیرون expose نکردیم. در صورتی که قصد چنین کاری را دارید از فعال‌سازی احراز هویت در تب آدرس هاست استفاده کنید.

بالا آوردن kibana#

در پنل دارکوب هنگام ساخت اپ جدید "داکر ایمیج" را انتخاب کنید. نام ایمیج را docker.elastic.co/kibana/kibana و تگ آن را با توجه به نسخه‌ی مورد نظر خود وارد کنید.  در این‌جا از 7.12.0 استفاده شده است.

kibana app

در صفحه‌ی تنظیمات پورت و متغیرهای محیطی را می‌دهیم.

kibana portkibana env

دقت کنید آدرس رسیدن به elasticsearch نام اپ آن است. در قسمت آدرس هاست می‌توان تنظیمات رسیدن به kibana را انجام داد. برای دسترسی امن به kibana می‌توانید در تب آدرس هاست تیک فعال سازی احراز هویت را بزنید تا با username و password به آن دسترسی داشته باشید. سپس اپ را دیپلوی می‌کنیم. حال می‌توان به آدرس هاست برویم و پنل kibana را ببینیم. 

kibana panel

 بالا آوردن fluentd#

برای fluentd لازم است یک repo در هم‌گیت بسازیم تا با تنظیمات شخصی ایمیج را بیلد کنیم. برای این کار دو فایل درست می‌کنیم. یکی داکرفایل و دیگری fluentd.conf است.

fluentd gitlab

محتوای داکرفایل به شکل زیر است:

fluentd dockerfile

در این فایل از یک ایمیج fluentd استفاده می‌کنیم تا پلاگین elasticsearch را روی آن نصب کنیم و فایل fluent.conf را به آن منتقل کنیم. فایل fluentd.conf برای تنظیمات fluentd است:

fluentd conf

تنظیمات نوشته شده بسیار ساده هستند و با توجه به نیازهای خود می‌توانید آن را تغییر دهید. در این‌جا هر اطلاعاتی که به پورت ۹۸۸۰ fluentd با پروتکل http برسد را به عنوان لاگ در نظر می‌گیرد که در بخش source گفته شده است. در بخش match تمامی ورودی‌ها را می‌گیریم. با store هم تنظیمات رسیدن به elasticsearch بیان شده است. دقت کنید که مقدار host باید برابر با نام اپ elasticsearch شما باشد. 

حال باید در دارکوب یک اپ با "منبع گیت" بسازیم و آدرس  این repo را در هم‌گیت به آن بدهیم و محل داکرفایل را هم مشخص کنیم.

fluentd docker info

در بخش تکمیل اطلاعات اپ پورت http را می‌دهیم:

fluentd port

باید در بخش آدرس هاست تنظیمات دسترسی به http آن را بدهید. با ساخت این اپ می‌توان به آن درخواست http داد و لاگ را در elasticsearch ذخیره کرد و در پنل kibana آن را می‌توانید ببینید.