بلاگ/نصب ابزار Grafana در کلاستر Kubernetes
به‌روز شده

نصب ابزار Grafana در کلاستر Kubernetes

در این آموزش، نحوه نصب ابزار Grafana را در کلاستر Kubernetes نشان می‌دهیم. همچنین چگونگی ارتباط آن با Prometheus و سازماندهی داده‌ها در داشبورد را بررسی خواهیم کرد. Prometheus یک نرم‌افزار متن‌باز مانیتورینگ برای اپلیکیشن‌های گسترده با حجم بالا محسوب می‌شود. این ابزار شامل ویژگی‌ای چون هشدار و...

1400/03/245334 بازدید
نصب ابزار Grafana در کلاستر Kubernetes
در این آموزش، نحوه نصب ابزار Grafana را در کلاستر Kubernetes نشان می‌دهیم. همچنین چگونگی ارتباط آن با Prometheus و سازماندهی داده‌ها در داشبورد را بررسی خواهیم کرد. Prometheus یک نرم‌افزار متن‌باز مانیتورینگ برای اپلیکیشن‌های گسترده با حجم بالا محسوب می‌شود. این ابزار شامل ویژگی‌ای چون هشدار و آمار لحظه‌ای، کوئری‌های انعطاف‌پذیر، یک مدل دریافت HTTP و همچنین انتخابی مناسب برای مانیتورینگ کلاسترهای Kubernetes است. در حالی که Prometheus یک نرم‌افزار مستقل به شمار می‌رود، امّا استفاده از آن به همراه یک داشبورد مجازی به درک کلی بهتر از یک کلاستر Kubernetes کمک می‌کند. یکی از گزینه‌های محبوب برای این سناریو، ابزار Grafana است. Grafana یک نرم‌افزار شبیه‌سازی متن‌باز است که از Prometheus به عنوان یک منبع داده خارجی پشتیبانی می‌کند.

پیش‌نیازها

  • کلاستر Kubernetes
  • نصب ابزار خط فرمان kubectl
  • نصب و تنظیم Prometheus

نصب ابزار Grafana

به منظور نصب ابزار Grafana در یک کلاستر Kubernetes، یک سری فایل yaml می‌بایست ایجاد و در تنظیمات اِعمال شوند. ۱) کار را با ایجاد ConfigMap در یک فایل با عنوان grafana-datasource-config.yaml شروع می‌کنیم.
php
nano grafana-datasource-config.yaml
این فایل شامل موارد زیر خواهد بود.
php
apiVersion: v1kind: ConfigMapmetadata:name: grafana-datasourcesnamespace: defaultdata:prometheus.yaml: |-{"apiVersion": 1,"datasources": [{"access":"proxy","editable": true,"name": "prometheus","orgId": 1,"type": "prometheus","url": "http://prometheus-service.monitoring.svc:9090","version": 1}]}
۲) محتوای این فایل را مطابق با نیازهای خود تغییر دهید. برای این منظور عنوان جایی را که می‌خواهید ابزار Grafana را در آن نصب کنید، وارد کنید. ۳) فایل را ذخیره کرده و از آن خارج شوید. ۴) با استفاده از فرمان kubectl، این تغییرات را در کلاستر اِعمال کنید.
php
kubectl create -f grafana-datasource-config.yaml
نتیجه خروجی، تأیید کننده ایجاد ConfigMap خواهد بود.
کاربرد kubectl برای ساخت grafana-datasources configmap
کاربرد kubectl برای ساخت grafana-datasources configmap
۵) سپس، یک فایل yaml برای بکارگیری ابزار Grafana بسازید.
php
nano deployment.yaml
این فایل حاوی تنظیمات بکارگیری Grafana خواهد بود.
php
apiVersion: apps/v1kind: Deploymentmetadata:name: grafananamespace: defaultspec:replicas: 1selector:matchLabels:app: grafanatemplate:metadata:name: grafanalabels:app: grafanaspec:containers:- name: grafanaimage: grafana/grafana:latestports:- name: grafanacontainerPort: 3000resources:limits:memory: "1Gi"cpu: "1000m"requests:memory: 500Mcpu: "500m"volumeMounts:- mountPath: /var/lib/grafananame: grafana-storage- mountPath: /etc/grafana/provisioning/datasourcesname: grafana-datasourcesreadOnly: falsevolumes:- name: grafana-storageemptyDir: {}- name: grafana-datasourcesconfigMap:defaultMode: 420name: grafana-datasources
۶) فایل را ذخیره کرده و آن را برای کلاستر اجرا کنید.
php
kubectl create -f deployment.yaml
نتیجه حاکی از ساخت این فایل خواهد بود.
کاربرد kubectl برای ساخت فایل تنظیمات بکارگیری ابزار Grafana
کاربرد kubectl برای ساخت فایل تنظیمات بکارگیری ابزار Grafana
۷) نهایتاً فایل service.yaml را برای تنظیم سرویس Grafana ایجاد می‌کنیم.
php
nano service.yaml
این حاوی موارد زیر خواهد بود.
php
apiVersion: v1kind: Servicemetadata:name: grafananamespace: defaultannotations:prometheus.io/scrape: 'true'prometheus.io/port:   '3000'spec:selector:app: grafanatype: NodePortports:- port: 3000targetPort: 3000nodePort: 32000
۸) فایل را مطابق مشخصات کلاستر خودتان تغییر دهید. سپس نوبت به ذخیره و اِعمال تغییرات می‌رسد.
php
kubectl create -f service.yaml
نتیجه نشان می‌دهد که فایل سرویس با موفقیت ایجاد شده است.
استفاده از kubectl برای ایجاد سرویس Grafana
استفاده از kubectl برای ایجاد سرویس Grafana
۹) از فرمان kubectl port-forward برای هدایت سرویس ابزار Grafana به پورت 3000 استفاده می‌کنیم.
php
kubectl port-forward svc/grafana 3000
هدایت Grafana به پورت 3000 با استفاده از kubectl
هدایت Grafana به پورت 3000 با استفاده از kubectl
۱۰) حالا یک مرورگر باز کنید و آدرس http://localhost:3000/ را در آن وارد نمایید. ۱۱) در نتیجه، صفحه ورودی ابزار Grafana برایتان باز می‌شود که باید در آن کلمه کاربری و رمز عبور را وارد کنید. در هر دو فیلد کلمه admin را تایپ نموده و روی Log in کلیک نمایید.
صفحه ورودی Grafana
صفحه ورودی Grafana
۱۲) ابزار Grafana از شما خواهد خواست که یک کلمه عبور جدید تنظیم کنید. بعد از این مرحله است که صفحه خانگی برایتان نمایش داده می‌شود.

اضافه‌کردن Prometheus به عنوان منبع داده Grafana

برای شروع کار با Prometheus در Grafana، باید Prometheus را به عنوان یک منبع داده اضافه کنید. ۱) در نوار سمت چپ، روی آیکون چرغ دنده بروید تا زیرمنوی configuration ظاهر شود. ۲) حالا روی گزینه Data Sources کلیک کنید.
دسترسی به مدیریت منابع داده ابزار Grafana از منوی تنظیمات
دسترسی به مدیریت منابع داده ابزار Grafana از منوی تنظیمات
۳) در نتیجه، یک صفحه تنظیمات برایتان باز می‌شود. در این صفحه روی دکمه Add data source کلیک کنید.
اضافه‌کردن یک منبع داده در Grafana
اضافه‌کردن یک منبع داده در Grafana
۴) Prometheus را به عنوان یک نوع منبع داده انتخاب کنید. این کار از طریق دکمه Select در سمت راست انجام می‌گیرد.
انتخاب Prometheus به عنوان یک منبع داده در Grafana
انتخاب Prometheus به عنوان یک منبع داده در Grafana
۵) اکنون صفحه تنظیمات برای Prometheus باز می‌شود.  در اینجا می‌توانید عنوان منبع، آدرس اینترنتی و پورت سرویس Prometheus و نوع دسترسی (دسترسی سرور به صورت پیش‌فرض) را انتخاب نمایید.
تنظیمات Prometheus به عنوان یک منبع داده در ابزار Grafana
تنظیمات Prometheus به عنوان یک منبع داده در ابزار Grafana
۶) وقتی کارتان در اینجا انجام شده، به سراغ پایین صفحه بروید و روی دکمه Save & Test کلیک کنید.
ذخیره و تست Prometheus به عنوان یک منبع داده در Grafana
ذخیره و تست Prometheus به عنوان یک منبع داده در Grafana
در اینجا Grafana ارتباط با Prometheus را آزمایش کرده و فرآیند اضافه‌کردن منبع داده را تکمیل می‌کند. نکته: در صورتی که با پیغام خطای “Error Bad Gateway” روبرو شدید، می‌توانید دسترسی HTTP را از “Server” به “Browser” تغییر دهید.

وارد کردن ابزار آماری Prometheus به عنوان یک داشبورد در Grafana

امکان استفاده از داشبورد پیش‌ساخته Prometheus در ابزار Grafana وجود دارد و برای این منظور می‌توانید مراحل زیر را دنبال کنید. ۱) به سراغ بخش Data Sources رفته و گزینه Prometheus را انتخاب نمایید. ۲) منوی کرکره‌ای Settings را باز کنید. ۳) حالا روی Dashboards کلیک کنید.
دسترسی به بخش dashboard در منابع داده Grafana
دسترسی به بخش dashboard در منابع داده Grafana
۴) در نتیجه، لیستی از داشبوردهای در دسترس برایتان نمایش داده می‌شود. با کلیک بر روی دکمه Import در سمت راست عنوان، داشبورد موردنظرتان را وارد کنید.
انتخاب داشبورد در بخش منابع داده Prometheus در ابزار Grafana
انتخاب داشبورد در بخش منابع داده Prometheus در ابزار Grafana
۵) به منظور دسترسی به داشبورد، روی آیکون به شکل چهار مربع در نوار سمت چپ بروید تا منوی Dashboards برایتان باز شود. ۶) روی Manage کلیک کنید.
دسترسی به داشبورد Prometheus در Grafana
دسترسی به داشبورد Prometheus در Grafana
۷) داشبورد Prometheus را می‌خواهید آن را مدیریت کنید، از لیست انتخاب نمایید.
انتخاب داشبورد Prometheus Stats در Grafana
انتخاب داشبورد Prometheus Stats در Grafana

آمار سرور Prometheus

داشبورد Prometheus شامل نمودارهای مختلفی است که در زیر آنها را بررسی می‌کنیم.

نمودار‌های تک‌متغیره

بعد از انتخاب داشبورد Prometheus Stats در صفحه Dashboard Management، آمارها به صورت سازماندهی‌شده در پنل‌ها ظاهر می‌شوند.
ظاهر داشبورد Prometheus در ابزار Grafana
ظاهر داشبورد Prometheus در ابزار Grafana
اولین ردیف شامل پنل‌های زیر است:
  • Uptime: زمان گذشته از شروع به کار سرور Prometheus
  • Local Storage Memory Series: تعداد سری‌های Prometheus که در حال حاضر در حافظه نگهداری می‌شوند.
  • Internal Storage Queue Length: هر چه این عدد کوچکتر باشد، وضعیت بهتر خواهد بود. پیام “Empty” نشان می‌دهد که عدد صف برابر صفر است.
پنل Samples ingested اطلاعاتی در مورد تعداد پیام‌های نمونه Prometheus در بازه‌های ۵ دقیقه‌ای ارائه می‌دهد.

معیارهای Prometheus Scrape

پنل‌های Scrape metrics درست در پایین پنل Samples ingested قرار گرفته‌اند.
  • پنل Target Scrapes نشان‌دهنده فرکانس اسکریپنگ هدف (یا به عبارتی Prometheus است در طول ۵ دقیقه گذشته است. این آمار برای سری زمانی در بازه موردنظر محاسبه می شود.
  • پنل Scrape Duration طول زمان اسکریپینگ را نشان می‌‌دهد که در همان بازه ۵ دقیقه‌ای محاسبه شده است.
بخش Prometheus scrape metrics در داشبورد Grafana Prometheus
بخش Prometheus scrape metrics در داشبورد Grafana Prometheus

مدت‌زمان ارزیابی‌ها

پنل Rule Evaluation Duration که در زیر پنل‌های Scrape metrics قرار می‌گیرد، اطلاعاتی را در مورد طول ارزیابی‌ها ارائه می‌دهد.

ایجاد یک داشبورد جدید

برای ایجاد یک داشبورد جدید در ابزار Grafana داریم: ۱) در صفحه Dashboards، روی دکمه New Dashboard کلیک کنید.
ایجاد یک داشبورد جدید در Grafana
ایجاد یک داشبورد جدید در Grafana
۲) در نتیجه، یک صفحه برایتان ظاهر می‌شود که می‌توانید در آن پنل‌ها و ردیف‌های خالی اضافه کنید.
راه اندازی یک داشبورد جدید Grafana
راه اندازی یک داشبورد جدید Grafana
۳) در نتیجه، یک صفحه جدید با یک پنل ساده نمایش داده می‌شود.
یک داشبورد جدید Grafana با یک پنل خالی
یک داشبورد جدید Grafana با یک پنل خالی

سفارشی‌سازی داشبورد با استفاده از Prometheus Query Editor

به منظور ویرایش یک پنل Grafana خاص داریم: ۱) روی عنوان پنل کلیک کنید تا یک منوی کرکره‌ای برایتان باز شود. ۲) در این منو روی Edit کلیک کنید.
دسترسی به بخش edit برای ویرایش نمودار در query editor
دسترسی به بخش edit برای ویرایش نمودار در query editor
۳) در نتیجه، پنجره edit ظاهر می‌شود. پنل‌ها را با معرفی کوئری‌های جدید یا اصلاح کوئری‌های کنونی سفارشی‌سازی کنید. رسیدگی به کوئری‌ها  از طریق زبان کوئری Prometheus صورت خواهد گرفت.
ویرایش یک نمودار در query editor
ویرایش یک نمودار در query editor
۴) پارامترهای زیر در داشبورد پیش‌ساخته Prometheus در Grafana وجود ندارند، ولی برای مانیتورینگ بسیار مفید خواهند بود.
  • prometheus_local_storage_memory_chunks برای پایش بخش‌هایی که Prometheus در حافظه ذخیره می‌کند.
  • prometheus_local_storage_memory_series برای پایش «سری‌های حافظه‌ای» که Prometheus در حافظه ذخیره می‌کند.
  • prometheus_local_storage_ingested_samples_total برای پایش میزان نرخ دریافت نمونه‌ها
  • prometheus_target_interval_length_seconds برای پایش مدت‌زمان بین اسکرپینگ‌های هدف.
  • prometheus_local_storage_chunk_ops_total برای پایش نرخ ثانیه‌ای عملیات ذخیره‌سازی Prometheus

کاربرد داشبوردهای پیش‌ساخته و پلاگین‌ها

Grafana در وب‌سایتش مجموعه متنوعی از داشبوردهای پیش‌ساخته و پلاگین‌ها را در اختیار قرار می‌دهد. برای نصب یک داشبورد پیش‌ساخته مراحل زیر را دنبال کنید. ۱) دریافت فایل json مربوط به پلاگین ۲) کلیک بر روی دکمه Import و دنبال‌کردن دستورالعمل‌ها برای ارسال فایل به Grafana
وارد کردن یک داشبورد جدید در ابزار Grafana با استفاده از یک فایل JSON
وارد کردن یک داشبورد جدید در ابزار Grafana با استفاده از یک فایل JSON
۳) برای نصب پلاگین‌ها، در کلاستر با استفاده از فرمان kubectl به Grafana pod وارد شوید.
php
kubectl exec -it  -- 
استفاده از فرمان kubectl برای ورود به Grafana pod
استفاده از فرمان kubectl برای ورود به Grafana pod
۴) حالا از ابزار خط فرمان grafana-cli برای نصب پلاگین استفاده کنید.
php
grafana-cli plugins install grafana-worldmap-panel
نصب پلاگین با استفاده از ابزار grafana-cli
نصب پلاگین با استفاده از ابزار grafana-cli
در نتیجه، پلاگین درون دایرکتوری پلاگین‌های Grafana نصب خواهد شد که به صورت پیش‌فرض به آدرس /var/lib/grafana/plugins است. این پلاگین پس از نصب، از طریق ابزار Grafana در دسترس خواهد بود.

جمع‌بندی

پس از مطالعه این مطلب آموزشی، می‌توانید به‌راحتی نصب و تنظیمات Grafana را برای استفاده در کنار Prometheus که یکی از ابزارهای مهم توسعه‌دهندگان است، انجام دهید. امیدواریم که از این مطلب وبلاگ آریانت نیز نهایت استفاده را برده باشید.