من این جا قصد ندارم چیزی رو تایید یا رد کنم. فقط جهت رضای خودم و داکیومنت کردن نوشتمش. پس خواهشا به چشم یه مقاله علمی بهش نگاه نکنید.
استک EFK
واقعا ریسورس خور هستن. مخصوصا اگه به این stack بیای logstash رو هم اضافه کنی. طبیعی هم هست دیگه (این stack با جاوا نوشته شدن و elasticsearch یه دیتابیس NoSQL ای هست)
برای ingest ،visualize و query زدن روی لاگ هامون استفاده میکنیم
دیتا تو Elasticsearch روی دیسک به صورت ابجکت های unstructured ذخیره میشه
هم key هم value ایندکس میشه (فکر کنم ذات Elasticsearch اینه، full text search منظورمه)
توی اینجا data collector مون filebeat هست که اگه stack مون FELK بود data collector مون Logstash میشد و دستمون خیلی بازتر بود. یعنی شما میتونی از چند تا source ورودی بگیری.
از اونجایی که ما اینجا یه دیتابیس (Elasticsearch) داریم، Kibana ابزار های قدرتمندی برای انالیز دیتا، machine learning، گراف برای نمایش دادن ارتباط داده ها به هم، location map ها
توی Kibana میتونیم alert ست کنیم تا تحت یه شرایط خاص بهمون نوتیفیکیشن ارسال کنه.
توی این استک ما برای Kibana به یه دیتابیس نیاز نداریم تا دیتا هاشو توش بریزیم. دیتاهاش توی Elasticsearch ذخیره میشن.
استک PGL
ریسورس کمتری میخواد. (با گو لنگ نوشته شدن)
لوکی single-binary mode هست و دیتا ها رو روی دیسک ذخیره میکنه.
دیتا به horizontally-scalable mode توی کلود استوریج هایی مثل S3 ،GCS یا Cassandra ذخیره میشه.
لاگ ها plaintext ذخیره میشن و label میخورن.
فقط label ها ایندکس میشن و این یه tradeoff هست (به جای full index داره فقط label ها رو ایندکس میکنه) که باعث میشه دولوپر هر چقدر دلش میخواد لاگ تولید کنه (نظر شخصی اینجانب نیست. رفرنس).
ابزار Promtail فقط برای کار با Loki ساخته شده، یعنی discover میکنه لاگ فایل ها روی دیسک رو و بهشون label میزنه و بعدش میده به Loki.
وقتی روی k8s باشی service discovery برای pod هایی که روی یه node اجرا میشن داریم.
توی محیط داکر Promtail به عنوان یه sidecar کانتینر هست که لاگ ها رو از محلی که براش مشخص کردیم میخونه
روشی که Loki لاگ ها رو نشون میده شبیه به روشی هست که Prometheus داره metric ها رو نشون میده. یعنی label های مشابه دارن، این بهت کمک میکنه که خیلی راحت بین لاگ های سیستمت و metric های سرور جابجا شی
توی این استک ما علاوه بر prometheus به influxdb هم نیاز داریم.