چالش بعدی من مانیتورینگ با telegraf influxdb grafana

نمای کلی از سیستم مانیتورینگ بر پایه telegraf influxdb grafanaمدتی روی یه ایده 10 ساله ام که بسیار سایت های مشابه براش زده دارم کار می کنم سایت نظرجو ایده بودی که تقریبا سه بار به انواع مختلف پیاده اش کردم اما اوایل سال 98 اول شروع کردم به تحقیق در مورد تکنولوژی های مختلف و بعد شروع کردم به توسعه اش با معماری میکروسرویس طراحیش کردم و در قسمت های مختلف از وب تا بک اند و موبایل از تکنولوژی های flutter reactjs docker laravel nginx nodejs استفاده کردم.تا اینجای کار مشکل نبود اما وقتی از سرویس های مختلف در کار استفاده می کنی اونجا مشکل پیش میاد وقتی مشکلی در سیستم پیدا میشه پیدا کردن این که مشکل از کجاست سخت میشه در مراحل ابتدایی نظرجو و تولید محتوا اولیه هستیم و انتظار یوزر زیادی نداشتم اما در عرض 6ماه به 6 هزار ورودی از گوگل رسیدیم و در یک جهش با یکی از محتواها وبه قول ما موج سواری ورودیم به 20 هزار کلیک رسید. البته ورودی زیادی نبود اما تمرکز ما روی توسعه سیستم بود به بهینه سازی اصلا فکر نکرده بودیمو به شدت سایت کند شد و این که مشکل از کجاست بررسیش دشوار بود . برای راه حل تنها چیزی که به ذهنم رسید و از قدیم به همه پیشنهاد میدادم مانیتورینگ سیستم بود . تو همین ویرگول یکی از دوستان یه توضیحات خیلی کوتاه در مورد راه اندازی Telegraf influxfdb grafana داده بود منم دیدم ساختار ساده ای داره شروع کردم .در واقع telegraf در روی سرور که قصد مانیتور کردن اطلاعاتش دارید نصب میشه و مسیر های لاگ ها را براش مشخص می کنید و با ساختار های مختلف این داده ها جمه آوری میشه البته telegraf برای بیشتر سرویس های آماده مثل خود docker mysql mongo nginx و بقیه پلاگین های آماده داره که تنها با ایجاد دسترسی ها اطلاعات دریافت می کند.در این مرحله Telegraf اطلاعات دریافت می کند و جمع آوری می کنه و به سمت مرکز جمع آوری اطلاعات ما influxdb ارسال می کنه در واقع influxdb حکم بانک اطلاعاتی داره که این اطلاعات در آن دسته بندی شده با ساختارهای که داخلش داره ذخیره می کنه راستی دو تا نکته بگم یکی در مورد telegraf و یکی هم در مورد influxdb نکته 1 - برای کار با تلگراف راه های مختلفی هست یه راهش این هست به صورت یک کانتاینتر روی داکر بیاریدش بالا و مسیر های لاگ های همه سرویس هارو mount کنید روی سرور اصلی و بعد اون مسیرها روی سرور های اصلی دوباره mount کنید روی داکر تلگراف و مسیر هارو داخل telegraf.conf بدید و خیال راحت به صورت یک سرویس مجزا ازش استفاده کنید اینم بگم که کلیه تنظیمات Telegraf توسط فایل telegrad.conf انجام میشه و راستی تلگراف یک چیزی داره برای لاگ جمع کردن به نام tail از این tail برای جمع کردن اطلاعات هر قسمتی از سیستم که پلاگین خاصی براش نیست و یا لاگ خود سیستم هست استفاده کیند . این فقط باید با فرمت logfmt بسازیدمثلا شما می خواید یک قسمت از کدتون یه فایل لاگ بسازید در صورت مشکل ازش استفاده کنیدهر مشکلی پیش اومد داخل یک فایل به این صورت می نویسید ip=192.168.1.1 response_time=200 request=400نام متغیر=مقدار فاصله نام متغیر=مقدار فاصلهبا این ساختار هر داده می تونید توسط پلاگین tail بخونید و بر روی Grafana ویژوال کنید و ببینید البته این فقط یک مشکل داره برای گرفتن اطلاعات خود داکر اصلی و کانتیانرهای نیاز دارید که حتما روی سرور اصلی این تلگراف نصب باشه تا بتونه اون اطلاعات دریافت کند مانند usage cpu و مصرف رم و بقهی اطلاعات کانتیانتر هارو . این دیگه بسته به نوع پیاده سازی شما دارد . نکته 2 - برای راه اندازی influxdb به راحتی می تونید به صورت یک کانتاینتر بر روی داکر راه اندازی کنید و کانفیگ خاصی نیاز نداره به راحتی راه اندازی میشه و نیاز به کانفیگ و تنظیمات خاصی نیست . خوب کجای کار بودیم ! اطلاعات الان بر روی influxdb داریم . مرحله بعد باید گرافانا راه اندازی کنید برای این کار هم میتونید به راحتی image آماده گرافانا از روی داکر هاب بگیرید و با چند تا دستور ساده که بر روی راهنماش موجود است راه اندازی کنید فقط حواستون باشه برای امن سازیش یه فکری کنید با پسور محدودش کنید یا با یه nginx سر راهش روش پسورد چیزی بزارید یا روی یک ای پی خاص مسدود کنید. وقتی گرافانا راه اندازی کردید نحوه اتصال گرافانا به تلگراف اینجا میتونید بخونید وقتی متصل کردید دیگه بقیه اش بازی کردن با اطلاعات هست و میتونید از جذابیت مانیتورینگ لذت ببرید و اطلاعات یک جا داشته باشید و با مقایسه لود های مختلف سیستم و قسمت های مختلف سیستم محل گیر سیستم پیدا کنید و حلش کنید من زیاد وارد بحث نصب و بقیه موارد نشدم چون بیشترشون راهنمای نصب دارن و با یه سرچ کوچیک می تونید پیدا کنید من خودم بیشتر سر فهم این مشکل داشتم و این که چی کار می کنه امیدوارم تونسته باشم در مورد به زبان ساده توضیح بدم . سوالی بود در خدمتم