احمد رفیعی
احمد رفیعی
خواندن ۱۴ دقیقه·۲ ماه پیش

در مسیر Observability، گرافانا (قسمت دهم)

در ادامه‌ی پست‌های قبلی تو این پست داریم می‌ریم مابقی ابزارهای گرافانا رو یکم بررسی کنیم و ببینیم چه کمکی به ما می‌کنه.


خب یه مروری کنیم پست‌های قبلی رو:

توصیه می‌کنم که حتما این پست‌ها رو هم مطالعه کنید. بریم که ادامه بدیم.

ابزار grafana:

  • چیه و چه کاری انجام می‌ده

گرافانا ابزار اوپن سورسی هست که امکان کوئری زدن، آلرت گذاشتن، بررسی کردن و ویژوآلایز کردن متریک و لاگ و تریس های شمارو هرکجا که ذخیره شده باشن، بهتون میده. کلا یه ابزار خیلی خوبی هست که کمک می‌کنه تا با استفاده از آن همه‌چیز رو خوب ببینید.

با استفاده از Grafana OSS این امکان رو براتون فراهم میکنه که دیتای تایم ‌سریز که دارید رو به گراف و تصویر و … ببینید. پلاگین فریم‌ورک Grafana OSS میتونه به دیتا سورس های دیگه مثل دیتابیس ها و ابزار های تیکتینگ مثل جیرا و ابزارهای CI/CD مثلا گیت لب هم متصل بشه.

  • داشبورد از چه قسمت‌های تشکیل شده

توی Observability کلمه داشبورد رو زیاد میشنویم، مثلا میگن سف خیلی داشبوردش خوبه یا فلان ابزار رو توصیه نمیکنیم از داشبوردش استفاده کنید و … کانسپت داشبورد رو از ماشین ها قرض گرفتن 🙂 جلوبندی داشبورد ماشین به راننده امکان کنترل کردن خودرو رو میده و بهش میگه که الان سرعتش چقدره و کلا تو این ماشین چه خبره! مثل اتومبیل ها که داشبوردشون قسمت های مختلفی داره … داشبورد های مانیتورینگ هم اجزای خودشون رو دارن.

  • Data sources

هر چیزی که دیتایی داره رو میتونیم دیتا سورس در نظر بگیریم. مثلا دیتابیس ها، لوکی یا ابزارهایی که لاگ رو جمع میکنن، گرافانا میمیر یا حتی یک API که دیتای json داره یا یه فایل CSV. اولین قدم این هست که یه دیتا سورسی رو برای داشبوردمون انتخاب کنیم.

  • Plugins

پلاگین ها برنامه هایی هستن که قابلیت های بیشتری رو به گرافانا اضافه میکنن، پلاگین‌ها به شما این امکان رو میدن که داده‌ها رو از منابع مختلفی مانند دیتابیس‌ها، سیستم‌های مانیتورینگ متفاوت، سیستم‌های ذخیره‌سازی و ... جمع‌آوری کنید و به شکل های مختلف نمایش دهید.

برخی از پلاگین‌های معروف گرافانا:

پلاگین Prometheus: برای ادغام سیستم مانیتورینگ Prometheus با گرافانا و نمایش داده‌ها در داشبوردها.

پلاگین Graphite: برای اتصال گرافانا به سرورهای Graphite و نمایش داده‌ها از آن‌ها.

پلاگین InfluxDB: برای استفاده از پایگاه داده InfluxDB و نمایش داده‌ها در گرافانا.

پلاگین MySQL: برای مانیتورینگ و نمایش داده‌های پایگاه داده MySQL.

پلاگین Elasticsearch: برای ارتباط با Elasticsearch و نمایش داده‌ها در گرافانا.

این پلاگین‌ها به کمک گرافانا، امکان ایجاد داشبوردها و نمودارهایی دقیق و سفارشی رو فراهم می‌کنند که به شما کمک می‌کنه درک بهتری از عملکرد و وضعیت سیستم‌‌تون پیدا کنید. البته خیلی از پلاگین‌ها به صورت پیش‌فرض وجود داره و نیاز نیست که چیزی نصب کنید. اگر هم نبود به راحتی می‌تونید آنها رو از خود گرافانا بگیرید و نصب کنید.

  • Queries

کوئری به ما کمک میکنه تا خروجی رو به شکلی از دیتاسورس جدا کنیم که جواب سوالی که دارم رو بهتر بده. مثلا یه شرکتی که میخواد تعداد مشتری هایی که در هفته گذشته ازش خرید کردن رو بدونه میتونه با استفاده از کوئری جواب این سوال رو پیدا کنه.

  • Transformation

فرض کنید بعد از کوئری شما میخواید دوتا دیتا رو با هم ترکیب کنید مثلا نام و نام خانوادگی یا اینکه مثلا میخواید از یک رشته متنی تاریخ یا عددی رو استخراج کنید یا عملیات های دیتابیسی رو انجام بدید که توسط دیتاسورستون ساپورت نمیشدن. ترنسفورمیشن توی این موارد به ما کمک میکنه.

  • Panels

بعد از اینکه دیتای از دیتا سورس گرفته شد و کوئری رو روی اون زدیم و ترنسفورمیشن انجام شد، مرحله آخرت نمایش دیتا در پنل هست. کانفیگ پنل جایی هست که ما مشخص میکنیم که دیتامون رو به چه شکلی میخوایم ببینیم، مثلا از یک طریق یک منو در گرافانا مشخص میکنیم که چه نوع چارتی میخوایم دیتا مون رو نمایش بده و …

  • گرافانا HA

گرافانا به صورت پیش فرض از دیتابیس امبدد sqlite3 استفاده میکنه. برای HA کردن اون اول باید یه MySQL یا Postgress کلاستر شده بالا بیارید بعد به عنوان بک اند دیتابیس اونو به اینستنس های گرافاناتون بدید و کانفیگ رو انجام بدید. با این کار دیتا رو کامل کلاستر کردیم و دیگه خود گرافانا stateless می‌شه و به راحتی می‌تونیم تعدادش رو بیشتر کنیم و کلاسترش کنیم.

Grafana HA
Grafana HA
  • توضیح اجمالی نصب و کانفیگ Grafana

نسخه اوپن سورس گرافانا رو از روی ایمیج داکر grafana/grafana-oss میتونید بالا بیارید و دوتا نسخه Alpine و Ubuntu هم داره که اگه استفاده در اسکیل کوچیک دارید خب بهتره از ایمیج سبک تر Alpine استفاده کنید. در ادامه یه جدول از مسیر دیفالت فایل های کانفیگ و مسیر ذخیره دیتای گرافانا رو براتون میذارم تا بتونید توی انتخاب مسیر والیوم ازش استفاده کنید:

grafana image path and variable
grafana image path and variable

برای نصب پلاگین از بقیه منابع میتونید لینک اونها رو برای متغیر محیطی GF_INSTALL_PLUGINS تعریف کنید و بعد از اون ورژن گرفانا خودتون رو بیلد کنید. حتما توصیه میکنم که پسورد ادمین گرافانا رو توی کانفیگتون عوض کنید و پسورد امن بذارید و لاگ گرافانا هم به STDOUT کانتینرش میره و برای اون هم فکری کنید که بتونید لاگ گرافانا رو داشته باشید.

  • توضیح اجمالی موارد مدیریتی grafana
  • Provision Grafana​

با استفاده از این قابلیت می‌تونیم به خوبی داشبوردها و دیتاسورس‌ها رو پرویژن کنیم. کاری که به ما کمک می‌کنه تا کانفیگ گرافانا رو به سمت as a code ببریم و این خیلی اتفاق خوبی هست. معمولا تو پروداکشن ما کلا از این روش استفاده می‌کنیم و هیچ چیزی حتی یک داشبورد رو هم از طریق GUI درست نمی‌کنیم. اگر لازم باشه که روی یک داشبورد کار کنیم آن رو آماده می‌کنیم و سپس به وسیله‌ی اتومیشن از همین طریق منتشرش می‌کنیم.

  • Explore

با استفاده از این قسمت می‌تونیم روی دیتاهایی که نیاز داریم به صورت real-time تحلیل و بررسی داشته باشیم کار کنیم. مثلا لاگ یا تریس که تو این قسمت می‌تونیم کوئری بزنیم و مواردی که لازم داریم رو بررسی و پایش کنیم.

  • Alerting

با استفاده از این قسمت می‌تونیم آلرت‌های خودمون رو داشته باشیم. امکانی که با استفاده از آن می‌تونیم روی دیتاسورس‌های مختلف آلرت داشته باشیم. این خیلی خوبه که آلرتینگ رو تجمیع شده یه جا داشته باشیمش. با آلرت منیجر هم می‌تونه سینک بشه که خیلی کار رو راحت کرده. یه GUI خوب و زیبا هم از آلرت‌ها و ارتباط آنها با هم بهمون نشون می‌ده که خیلی به درک آنها کمک می‌کنه.

ابزار grafana agent:

  • چیه و چه کمکی بهمون می‌کنه

همونطور که توی دیاگرام ابزار تمپو هم دیدیم، توی سیستم های Observability نیاز به کامپوننتی هست که دیتای تله‌متری رو از سمت کلاینت و جایی که تولید میشه دریافت کنه و به سمت بک اند و جایی که اونو ذخیره و پردازش میکنیم تحویل بده. گرافانا ایجنت ابزار جمع آوری دیتای تله‌متری هست که از ابزار معروف ترافرم الهام گرفته. لازمه اینجا بگم که گرفانا اخیرا ابزاری به نام Grafana Alloy رو معرفی کرده که قراره جایگزین بشه و ابزار اصلی کالکت کردن دیتای تله‌متری بشه. همچنین اعلام کرده که ساپورت خودش رو تا آخر ماه اکتبر سال ۲۰۲۵ برای گرافانا ایجنت ادامه میده و پایان زندگی گرافانا ایجنت اول نوامبر سال ۲۰۲۵ خواهد بود 😣 در ادامه یه توضیح مختصر در مورد گرافانا الوی و نحوه مهاجرت بهش رو براتون میذارم.

  • چرا خوبه که ازش استفاده کنیم
  • Vendor-neutral

گرافانا ایجنت کاملا با اکوسیستم های پرومتئوس و اپن تله‌متری و گرفانا ( لوکی، تمپو، میمر، گرافانا و Pyroscope که یک پلتفرم پروفایلینگ هست ) سازگار هست

  • Every signal

میتونه دیتای تله‌متری رو برای متریک، لاگ، تریس و continuous profiles جمع آوری کنه.

  • Scalable

میتونه روی هر تعداد سرور دیپلوی بشه و میلیون ها سریز و چندین ترابایت لاگ رو جمع آوری کنه.

  • Powerful:

میتونه پایپ لاین های قابل برنامه ریزی رو به راحتی بنویسه و از طریق رابط کاربری گرافیگی که به صورت built-in ارائه میده اونها دیباگ کنه.

  • نحوه‌ی استفاده ازش و اینکه تو دیزاین‌ها کجا قرار می‌گیره

به سه تا شکل مختلف میتونیم از گرافانا ایجنت استفاده کنیم:

  • Static mode

این مود در واقع مود اصلی گرافانا ایجنت هست که از طریق یک فایل yaml کانفیگ میشه و با سه تا استک زیر میتونه کار کنه :‍

  • Grafana Cloud
  • Grafana Enterprise Stack
  • OSS deployments of Grafana Loki, Grafana Mimir, Grafana Tempo, and Prometheus

این مود از سه تا زیر سیستم تشکیل شده که برای متریک، لاگ و تریس هستند.

  • Static mode Kubernetes operator

اگه با مفاهیم کوبرنتیز آشنایی دارید، این مود یه جورایی اپراتور کوبرنتیز برای مود استاتیک هست که دیپلوی کردن رو آسون تر میکنه و مود استاتیک رو کانفیگ میکنه تا دیتای تله‌متری کلاستر کوبر رو جمع آوری کنه. از کاستوم ریسورس های مختلفی هم برای این کار پشتیبانی میکنه که لیست اونا رو براتون میذارم:

  • Prometheus Operator ServiceMonitor resources for collecting metrics from Kubernetes Services.
  • Prometheus Operator PodMonitor resources for collecting metrics from Kubernetes Pods.
  • Prometheus Operator Probe resources for collecting metrics from Kubernetes Ingresses.
  • Custom PodLogs resources for collecting logs.
  • Flow mode

اگه در مورد دیستریبیوشن ها توی اپن تله‌متری بخونید، اونها رو به عنوان یه راه کاستوم کردن کامپوننت های اپن تله‌متری برای راحت تر دیپلوی کردن کامپوننت ها با بک اند های مختلف، معرفی میکنه. حالا مود فلو هم یک دیستریبیوشن از اپن تله‌متری هست که یه بازنگری بر پایه کامپوننت از گرافانا ایجنت انجام میده با تمرکز بر راحتی استفاده و ارائه امکان دیباگ که بتونه پاسخگو نیازهای کاربرانش باشه. از ویژگی های این مود میشه کانفیگ با زبانیکه از ترافرم الهام گرفته و دیباگ از UI رو گفت.


Grafana agent
Grafana agent

توضیح grafana alloy :

Grafana Alloy
Grafana Alloy

گرافانا الوی ابزاری هست که برای OTel و Prometheus و Pyroscope و Loki و کلی ابزار متریک و لاگ و تریس و پروفایل دیگه، پایپ لاین های native ارائه میده. با استفاده از پایپ لاین های Alloy میتونید رول های آلرت روی لوکی و میمیر رو کانفیگ کنید و با پرومتئوس ایجنت و Promtail هم کاملا سازگار هست و میتونید اون رو روی زیرساخت های مختلف on-premise و ابری استفاده کنید.

این ابزار تنها برای سیگنال های Observability مثل متریک و لاگ و تریس نیست و کلی قابلیت دیگه هم داره که کمک میکنه تا سریع تر دیتامون رو توی محیط های پیچیده پیدا کنیم و اون رو پردازش کنیم. در ادامه لیستی از این قابلیت هارو براتون میارم:

  • Custom components
  • GitOps compatibility
  • Clustering support
  • Security
  • Debugging utilities

مود Flow گرافانا ایجنت هم دپریکیت میشه همراه گرافانا ایجنت و اگر قصد مهاجرت به grafana alloy رو دارید یه سر به این لینک بزنید.

ابزارهای گرافانا تمومی ندارن 🙂 در ادامه به اختصار چنتای دیگه شون رو هم بهتون معرفی میکنم که اگه دوست داشتید بیشتر در موردشون بخونید.

توضیح اجمالی grafana incident :

توی دنیای IT به یه مشکل بزرگی که برای سرویس ما پیش میاد مثلا در حد از کار افتادن تمام سرور هامون، اینسیدنت میگیم. گرافانا این ابزار رو برای کمک کردن در مواقع incident توسعه داده بتونیم در مواقع غیر منتظر ری‌اکشن های بهتری رو داشته باشیم. این ابزار با اینتگریت شدن با گرافانا و اسلک و گیت هاب و ابزارهای دیگه سعی میکنه تا زمان و هزینه پاسخ به اینسیدنت رو کمتر کنه.

grafana incident
grafana incident

توضیح اجمالی grafana on-call

در راستای کمک به مدیریت بهتر تیم و آن‌کالی‌ها ابزار بعدی گرافانا آنکال هست که به تیم ها کمک میکنه تا بهتر بتونن وظایف رو مدیریت کنن و توی زمان شیفت افرادیکه باید در دسترس باشن تا مساله رو بررسی کنند مشخص باشند. خیلی خوب با ابزارهای دیگه‌ی گرافانا هم یکپارچه شده که بهمون کمک می‌کنه که آلرت‌ها فقط برای کسانی بره که اون زمان شیفت هستند. خیلی خوب می‌شه داخلش تعریف کرد که شیفت نگهداشت و کارهای مربوط به آن رو برنامه‌ریزی کرد.

 grafana on-call
grafana on-call

توضیح اجمالی grafana cloud

نسخه SaaS گرافانا که میتونید کل Observability تون رو روی اون انجام بدید و نسخه رایگانش قابلیت های زیر رو داره:

  • 10k metrics
  • 50GB logs
  • 50GB traces
  • 50GB profiles
  • 500VUh k6 testing
  • 50k frontend sessions
  • 14-day retention
  • 3 active users

واقعا خیلی خوب تمام آن چه نیاز داریم رو کنار هم جمع کرده و به بهترین شکل داره سرویس می‌ده بهمون.


این پست میشه دهمین و فعلا آخرین پست‌مون از مسیر Observability امیدوارم که توی این ده قدم دید خوبی رو نسبت به ابزارهای Obesrvability پیدا کرده باشید و باهاشون بیشتر آشنا شده باشید.

مراقب خودتون باشید. 🌹🐳🌹



خوبه که داکرمی رو تو جاهای مختلف فالو کنید. پذیرای نظرات شما هستیم.

🫀 Follow DockerMe 🫀

🔔 Follow YouTube 🔔

📣 Follow Instagram 📣

🖇 Follow LinkedIn DockerMe🖇

🔎 Follow Linkedin Ahmad Rafiee 🔎

🕊 Follow Twitter 🕊

ci cdمسیرgrafana
مشاور زیرساخت. موسس سایت آموزشی DockerMe.ir
شاید از این پست‌ها خوشتان بیاید