در ادامهی پستهای قبلی تو این پست داریم میریم مابقی ابزارهای گرافانا رو یکم بررسی کنیم و ببینیم چه کمکی به ما میکنه.
خب یه مروری کنیم پستهای قبلی رو:
توصیه میکنم که حتما این پستها رو هم مطالعه کنید. بریم که ادامه بدیم.
گرافانا ابزار اوپن سورسی هست که امکان کوئری زدن، آلرت گذاشتن، بررسی کردن و ویژوآلایز کردن متریک و لاگ و تریس های شمارو هرکجا که ذخیره شده باشن، بهتون میده. کلا یه ابزار خیلی خوبی هست که کمک میکنه تا با استفاده از آن همهچیز رو خوب ببینید.
با استفاده از Grafana OSS این امکان رو براتون فراهم میکنه که دیتای تایم سریز که دارید رو به گراف و تصویر و … ببینید. پلاگین فریمورک Grafana OSS میتونه به دیتا سورس های دیگه مثل دیتابیس ها و ابزار های تیکتینگ مثل جیرا و ابزارهای CI/CD مثلا گیت لب هم متصل بشه.
توی Observability کلمه داشبورد رو زیاد میشنویم، مثلا میگن سف خیلی داشبوردش خوبه یا فلان ابزار رو توصیه نمیکنیم از داشبوردش استفاده کنید و … کانسپت داشبورد رو از ماشین ها قرض گرفتن 🙂 جلوبندی داشبورد ماشین به راننده امکان کنترل کردن خودرو رو میده و بهش میگه که الان سرعتش چقدره و کلا تو این ماشین چه خبره! مثل اتومبیل ها که داشبوردشون قسمت های مختلفی داره … داشبورد های مانیتورینگ هم اجزای خودشون رو دارن.
هر چیزی که دیتایی داره رو میتونیم دیتا سورس در نظر بگیریم. مثلا دیتابیس ها، لوکی یا ابزارهایی که لاگ رو جمع میکنن، گرافانا میمیر یا حتی یک API که دیتای json داره یا یه فایل CSV. اولین قدم این هست که یه دیتا سورسی رو برای داشبوردمون انتخاب کنیم.
پلاگین ها برنامه هایی هستن که قابلیت های بیشتری رو به گرافانا اضافه میکنن، پلاگینها به شما این امکان رو میدن که دادهها رو از منابع مختلفی مانند دیتابیسها، سیستمهای مانیتورینگ متفاوت، سیستمهای ذخیرهسازی و ... جمعآوری کنید و به شکل های مختلف نمایش دهید.
برخی از پلاگینهای معروف گرافانا:
پلاگین Prometheus: برای ادغام سیستم مانیتورینگ Prometheus با گرافانا و نمایش دادهها در داشبوردها.
پلاگین Graphite: برای اتصال گرافانا به سرورهای Graphite و نمایش دادهها از آنها.
پلاگین InfluxDB: برای استفاده از پایگاه داده InfluxDB و نمایش دادهها در گرافانا.
پلاگین MySQL: برای مانیتورینگ و نمایش دادههای پایگاه داده MySQL.
پلاگین Elasticsearch: برای ارتباط با Elasticsearch و نمایش دادهها در گرافانا.
این پلاگینها به کمک گرافانا، امکان ایجاد داشبوردها و نمودارهایی دقیق و سفارشی رو فراهم میکنند که به شما کمک میکنه درک بهتری از عملکرد و وضعیت سیستمتون پیدا کنید. البته خیلی از پلاگینها به صورت پیشفرض وجود داره و نیاز نیست که چیزی نصب کنید. اگر هم نبود به راحتی میتونید آنها رو از خود گرافانا بگیرید و نصب کنید.
کوئری به ما کمک میکنه تا خروجی رو به شکلی از دیتاسورس جدا کنیم که جواب سوالی که دارم رو بهتر بده. مثلا یه شرکتی که میخواد تعداد مشتری هایی که در هفته گذشته ازش خرید کردن رو بدونه میتونه با استفاده از کوئری جواب این سوال رو پیدا کنه.
فرض کنید بعد از کوئری شما میخواید دوتا دیتا رو با هم ترکیب کنید مثلا نام و نام خانوادگی یا اینکه مثلا میخواید از یک رشته متنی تاریخ یا عددی رو استخراج کنید یا عملیات های دیتابیسی رو انجام بدید که توسط دیتاسورستون ساپورت نمیشدن. ترنسفورمیشن توی این موارد به ما کمک میکنه.
بعد از اینکه دیتای از دیتا سورس گرفته شد و کوئری رو روی اون زدیم و ترنسفورمیشن انجام شد، مرحله آخرت نمایش دیتا در پنل هست. کانفیگ پنل جایی هست که ما مشخص میکنیم که دیتامون رو به چه شکلی میخوایم ببینیم، مثلا از یک طریق یک منو در گرافانا مشخص میکنیم که چه نوع چارتی میخوایم دیتا مون رو نمایش بده و …
گرافانا به صورت پیش فرض از دیتابیس امبدد sqlite3 استفاده میکنه. برای HA کردن اون اول باید یه MySQL یا Postgress کلاستر شده بالا بیارید بعد به عنوان بک اند دیتابیس اونو به اینستنس های گرافاناتون بدید و کانفیگ رو انجام بدید. با این کار دیتا رو کامل کلاستر کردیم و دیگه خود گرافانا stateless میشه و به راحتی میتونیم تعدادش رو بیشتر کنیم و کلاسترش کنیم.
نسخه اوپن سورس گرافانا رو از روی ایمیج داکر grafana/grafana-oss میتونید بالا بیارید و دوتا نسخه Alpine و Ubuntu هم داره که اگه استفاده در اسکیل کوچیک دارید خب بهتره از ایمیج سبک تر Alpine استفاده کنید. در ادامه یه جدول از مسیر دیفالت فایل های کانفیگ و مسیر ذخیره دیتای گرافانا رو براتون میذارم تا بتونید توی انتخاب مسیر والیوم ازش استفاده کنید:
برای نصب پلاگین از بقیه منابع میتونید لینک اونها رو برای متغیر محیطی GF_INSTALL_PLUGINS تعریف کنید و بعد از اون ورژن گرفانا خودتون رو بیلد کنید. حتما توصیه میکنم که پسورد ادمین گرافانا رو توی کانفیگتون عوض کنید و پسورد امن بذارید و لاگ گرافانا هم به STDOUT کانتینرش میره و برای اون هم فکری کنید که بتونید لاگ گرافانا رو داشته باشید.
با استفاده از این قابلیت میتونیم به خوبی داشبوردها و دیتاسورسها رو پرویژن کنیم. کاری که به ما کمک میکنه تا کانفیگ گرافانا رو به سمت as a code ببریم و این خیلی اتفاق خوبی هست. معمولا تو پروداکشن ما کلا از این روش استفاده میکنیم و هیچ چیزی حتی یک داشبورد رو هم از طریق GUI درست نمیکنیم. اگر لازم باشه که روی یک داشبورد کار کنیم آن رو آماده میکنیم و سپس به وسیلهی اتومیشن از همین طریق منتشرش میکنیم.
با استفاده از این قسمت میتونیم روی دیتاهایی که نیاز داریم به صورت real-time تحلیل و بررسی داشته باشیم کار کنیم. مثلا لاگ یا تریس که تو این قسمت میتونیم کوئری بزنیم و مواردی که لازم داریم رو بررسی و پایش کنیم.
با استفاده از این قسمت میتونیم آلرتهای خودمون رو داشته باشیم. امکانی که با استفاده از آن میتونیم روی دیتاسورسهای مختلف آلرت داشته باشیم. این خیلی خوبه که آلرتینگ رو تجمیع شده یه جا داشته باشیمش. با آلرت منیجر هم میتونه سینک بشه که خیلی کار رو راحت کرده. یه GUI خوب و زیبا هم از آلرتها و ارتباط آنها با هم بهمون نشون میده که خیلی به درک آنها کمک میکنه.
همونطور که توی دیاگرام ابزار تمپو هم دیدیم، توی سیستم های Observability نیاز به کامپوننتی هست که دیتای تلهمتری رو از سمت کلاینت و جایی که تولید میشه دریافت کنه و به سمت بک اند و جایی که اونو ذخیره و پردازش میکنیم تحویل بده. گرافانا ایجنت ابزار جمع آوری دیتای تلهمتری هست که از ابزار معروف ترافرم الهام گرفته. لازمه اینجا بگم که گرفانا اخیرا ابزاری به نام Grafana Alloy رو معرفی کرده که قراره جایگزین بشه و ابزار اصلی کالکت کردن دیتای تلهمتری بشه. همچنین اعلام کرده که ساپورت خودش رو تا آخر ماه اکتبر سال ۲۰۲۵ برای گرافانا ایجنت ادامه میده و پایان زندگی گرافانا ایجنت اول نوامبر سال ۲۰۲۵ خواهد بود 😣 در ادامه یه توضیح مختصر در مورد گرافانا الوی و نحوه مهاجرت بهش رو براتون میذارم.
گرافانا ایجنت کاملا با اکوسیستم های پرومتئوس و اپن تلهمتری و گرفانا ( لوکی، تمپو، میمر، گرافانا و Pyroscope که یک پلتفرم پروفایلینگ هست ) سازگار هست
میتونه دیتای تلهمتری رو برای متریک، لاگ، تریس و continuous profiles جمع آوری کنه.
میتونه روی هر تعداد سرور دیپلوی بشه و میلیون ها سریز و چندین ترابایت لاگ رو جمع آوری کنه.
میتونه پایپ لاین های قابل برنامه ریزی رو به راحتی بنویسه و از طریق رابط کاربری گرافیگی که به صورت built-in ارائه میده اونها دیباگ کنه.
به سه تا شکل مختلف میتونیم از گرافانا ایجنت استفاده کنیم:
این مود در واقع مود اصلی گرافانا ایجنت هست که از طریق یک فایل yaml کانفیگ میشه و با سه تا استک زیر میتونه کار کنه :
این مود از سه تا زیر سیستم تشکیل شده که برای متریک، لاگ و تریس هستند.
اگه با مفاهیم کوبرنتیز آشنایی دارید، این مود یه جورایی اپراتور کوبرنتیز برای مود استاتیک هست که دیپلوی کردن رو آسون تر میکنه و مود استاتیک رو کانفیگ میکنه تا دیتای تلهمتری کلاستر کوبر رو جمع آوری کنه. از کاستوم ریسورس های مختلفی هم برای این کار پشتیبانی میکنه که لیست اونا رو براتون میذارم:
اگه در مورد دیستریبیوشن ها توی اپن تلهمتری بخونید، اونها رو به عنوان یه راه کاستوم کردن کامپوننت های اپن تلهمتری برای راحت تر دیپلوی کردن کامپوننت ها با بک اند های مختلف، معرفی میکنه. حالا مود فلو هم یک دیستریبیوشن از اپن تلهمتری هست که یه بازنگری بر پایه کامپوننت از گرافانا ایجنت انجام میده با تمرکز بر راحتی استفاده و ارائه امکان دیباگ که بتونه پاسخگو نیازهای کاربرانش باشه. از ویژگی های این مود میشه کانفیگ با زبانیکه از ترافرم الهام گرفته و دیباگ از UI رو گفت.
گرافانا الوی ابزاری هست که برای OTel و Prometheus و Pyroscope و Loki و کلی ابزار متریک و لاگ و تریس و پروفایل دیگه، پایپ لاین های native ارائه میده. با استفاده از پایپ لاین های Alloy میتونید رول های آلرت روی لوکی و میمیر رو کانفیگ کنید و با پرومتئوس ایجنت و Promtail هم کاملا سازگار هست و میتونید اون رو روی زیرساخت های مختلف on-premise و ابری استفاده کنید.
این ابزار تنها برای سیگنال های Observability مثل متریک و لاگ و تریس نیست و کلی قابلیت دیگه هم داره که کمک میکنه تا سریع تر دیتامون رو توی محیط های پیچیده پیدا کنیم و اون رو پردازش کنیم. در ادامه لیستی از این قابلیت هارو براتون میارم:
مود Flow گرافانا ایجنت هم دپریکیت میشه همراه گرافانا ایجنت و اگر قصد مهاجرت به grafana alloy رو دارید یه سر به این لینک بزنید.
ابزارهای گرافانا تمومی ندارن 🙂 در ادامه به اختصار چنتای دیگه شون رو هم بهتون معرفی میکنم که اگه دوست داشتید بیشتر در موردشون بخونید.
توی دنیای IT به یه مشکل بزرگی که برای سرویس ما پیش میاد مثلا در حد از کار افتادن تمام سرور هامون، اینسیدنت میگیم. گرافانا این ابزار رو برای کمک کردن در مواقع incident توسعه داده بتونیم در مواقع غیر منتظر ریاکشن های بهتری رو داشته باشیم. این ابزار با اینتگریت شدن با گرافانا و اسلک و گیت هاب و ابزارهای دیگه سعی میکنه تا زمان و هزینه پاسخ به اینسیدنت رو کمتر کنه.
در راستای کمک به مدیریت بهتر تیم و آنکالیها ابزار بعدی گرافانا آنکال هست که به تیم ها کمک میکنه تا بهتر بتونن وظایف رو مدیریت کنن و توی زمان شیفت افرادیکه باید در دسترس باشن تا مساله رو بررسی کنند مشخص باشند. خیلی خوب با ابزارهای دیگهی گرافانا هم یکپارچه شده که بهمون کمک میکنه که آلرتها فقط برای کسانی بره که اون زمان شیفت هستند. خیلی خوب میشه داخلش تعریف کرد که شیفت نگهداشت و کارهای مربوط به آن رو برنامهریزی کرد.
نسخه SaaS گرافانا که میتونید کل Observability تون رو روی اون انجام بدید و نسخه رایگانش قابلیت های زیر رو داره:
واقعا خیلی خوب تمام آن چه نیاز داریم رو کنار هم جمع کرده و به بهترین شکل داره سرویس میده بهمون.
این پست میشه دهمین و فعلا آخرین پستمون از مسیر Observability امیدوارم که توی این ده قدم دید خوبی رو نسبت به ابزارهای Obesrvability پیدا کرده باشید و باهاشون بیشتر آشنا شده باشید.
مراقب خودتون باشید. 🌹🐳🌹
خوبه که داکرمی رو تو جاهای مختلف فالو کنید. پذیرای نظرات شما هستیم.
🫀 Follow DockerMe 🫀
🔔 Follow YouTube 🔔
📣 Follow Instagram 📣
🖇 Follow LinkedIn DockerMe🖇
🔎 Follow Linkedin Ahmad Rafiee 🔎
🕊 Follow Twitter 🕊