در این آموزش، نحوه نصب ابزار Grafana را در کلاستر Kubernetes نشان میدهیم. همچنین چگونگی ارتباط آن با Prometheus و سازماندهی دادهها در داشبورد را بررسی خواهیم کرد.
Prometheus یک نرمافزار متنباز مانیتورینگ برای اپلیکیشنهای گسترده با حجم بالا محسوب میشود. این ابزار شامل ویژگیای چون هشدار و آمار لحظهای، کوئریهای انعطافپذیر، یک مدل دریافت HTTP و همچنین انتخابی مناسب برای مانیتورینگ کلاسترهای Kubernetes است.
در حالی که Prometheus یک نرمافزار مستقل به شمار میرود، امّا استفاده از آن به همراه یک داشبورد مجازی به درک کلی بهتر از یک کلاستر Kubernetes کمک میکند. یکی از گزینههای محبوب برای این سناریو، ابزار Grafana است. Grafana یک نرمافزار شبیهسازی متنباز است که از Prometheus به عنوان یک منبع داده خارجی پشتیبانی میکند.
پیشنیازها
- کلاستر Kubernetes
- نصب ابزار خط فرمان kubectl
- نصب و تنظیم Prometheus
نصب ابزار Grafana
به منظور نصب ابزار Grafana در یک کلاستر Kubernetes، یک سری فایل yaml میبایست ایجاد و در تنظیمات اِعمال شوند.
۱) کار را با ایجاد ConfigMap در یک فایل با عنوان grafana-datasource-config.yaml شروع میکنیم.
nano grafana-datasource-config.yaml
این فایل شامل موارد زیر خواهد بود.
apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: default data: 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، این تغییرات را در کلاستر اِعمال کنید.
kubectl create -f grafana-datasource-config.yaml
نتیجه خروجی، تأیید کننده ایجاد ConfigMap خواهد بود.
۵) سپس، یک فایل yaml برای بکارگیری ابزار Grafana بسازید.
nano deployment.yaml
این فایل حاوی تنظیمات بکارگیری Grafana خواهد بود.
apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: default spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: name: grafana labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:latest ports: - name: grafana containerPort: 3000 resources: limits: memory: "1Gi" cpu: "1000m" requests: memory: 500M cpu: "500m" volumeMounts: - mountPath: /var/lib/grafana name: grafana-storage - mountPath: /etc/grafana/provisioning/datasources name: grafana-datasources readOnly: false volumes: - name: grafana-storage emptyDir: {} - name: grafana-datasources configMap: defaultMode: 420 name: grafana-datasources
۶) فایل را ذخیره کرده و آن را برای کلاستر اجرا کنید.
kubectl create -f deployment.yaml
نتیجه حاکی از ساخت این فایل خواهد بود.
۷) نهایتاً فایل service.yaml را برای تنظیم سرویس Grafana ایجاد میکنیم.
nano service.yaml
این حاوی موارد زیر خواهد بود.
apiVersion: v1 kind: Service metadata: name: grafana namespace: default annotations: prometheus.io/scrape: 'true' prometheus.io/port: '3000' spec: selector: app: grafana type: NodePort ports: - port: 3000 targetPort: 3000 nodePort: 32000
۸) فایل را مطابق مشخصات کلاستر خودتان تغییر دهید. سپس نوبت به ذخیره و اِعمال تغییرات میرسد.
kubectl create -f service.yaml
نتیجه نشان میدهد که فایل سرویس با موفقیت ایجاد شده است.
۹) از فرمان kubectl port-forward برای هدایت سرویس ابزار Grafana به پورت 3000 استفاده میکنیم.
kubectl port-forward svc/grafana 3000
۱۰) حالا یک مرورگر باز کنید و آدرس http://localhost:3000/ را در آن وارد نمایید.
۱۱) در نتیجه، صفحه ورودی ابزار Grafana برایتان باز میشود که باید در آن کلمه کاربری و رمز عبور را وارد کنید. در هر دو فیلد کلمه admin را تایپ نموده و روی Log in کلیک نمایید.
۱۲) ابزار Grafana از شما خواهد خواست که یک کلمه عبور جدید تنظیم کنید. بعد از این مرحله است که صفحه خانگی برایتان نمایش داده میشود.
اضافهکردن Prometheus به عنوان منبع داده Grafana
برای شروع کار با Prometheus در Grafana، باید Prometheus را به عنوان یک منبع داده اضافه کنید.
۱) در نوار سمت چپ، روی آیکون چرغ دنده بروید تا زیرمنوی configuration ظاهر شود.
۲) حالا روی گزینه Data Sources کلیک کنید.
۳) در نتیجه، یک صفحه تنظیمات برایتان باز میشود. در این صفحه روی دکمه Add data source کلیک کنید.
۴) Prometheus را به عنوان یک نوع منبع داده انتخاب کنید. این کار از طریق دکمه Select در سمت راست انجام میگیرد.
۵) اکنون صفحه تنظیمات برای Prometheus باز میشود. در اینجا میتوانید عنوان منبع، آدرس اینترنتی و پورت سرویس Prometheus و نوع دسترسی (دسترسی سرور به صورت پیشفرض) را انتخاب نمایید.
۶) وقتی کارتان در اینجا انجام شده، به سراغ پایین صفحه بروید و روی دکمه Save & Test کلیک کنید.
در اینجا Grafana ارتباط با Prometheus را آزمایش کرده و فرآیند اضافهکردن منبع داده را تکمیل میکند.
نکته: در صورتی که با پیغام خطای “Error Bad Gateway” روبرو شدید، میتوانید دسترسی HTTP را از “Server” به “Browser” تغییر دهید.
وارد کردن ابزار آماری Prometheus به عنوان یک داشبورد در Grafana
امکان استفاده از داشبورد پیشساخته Prometheus در ابزار Grafana وجود دارد و برای این منظور میتوانید مراحل زیر را دنبال کنید.
۱) به سراغ بخش Data Sources رفته و گزینه Prometheus را انتخاب نمایید.
۲) منوی کرکرهای Settings را باز کنید.
۳) حالا روی Dashboards کلیک کنید.
۴) در نتیجه، لیستی از داشبوردهای در دسترس برایتان نمایش داده میشود. با کلیک بر روی دکمه Import در سمت راست عنوان، داشبورد موردنظرتان را وارد کنید.
۵) به منظور دسترسی به داشبورد، روی آیکون به شکل چهار مربع در نوار سمت چپ بروید تا منوی Dashboards برایتان باز شود.
۶) روی Manage کلیک کنید.
۷) داشبورد Prometheus را میخواهید آن را مدیریت کنید، از لیست انتخاب نمایید.
آمار سرور Prometheus
داشبورد Prometheus شامل نمودارهای مختلفی است که در زیر آنها را بررسی میکنیم.
نمودارهای تکمتغیره
بعد از انتخاب داشبورد Prometheus Stats در صفحه Dashboard Management، آمارها به صورت سازماندهیشده در پنلها ظاهر میشوند.
اولین ردیف شامل پنلهای زیر است:
- 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 طول زمان اسکریپینگ را نشان میدهد که در همان بازه ۵ دقیقهای محاسبه شده است.
مدتزمان ارزیابیها
پنل Rule Evaluation Duration که در زیر پنلهای Scrape metrics قرار میگیرد، اطلاعاتی را در مورد طول ارزیابیها ارائه میدهد.
ایجاد یک داشبورد جدید
برای ایجاد یک داشبورد جدید در ابزار Grafana داریم:
۱) در صفحه Dashboards، روی دکمه New Dashboard کلیک کنید.
۲) در نتیجه، یک صفحه برایتان ظاهر میشود که میتوانید در آن پنلها و ردیفهای خالی اضافه کنید.
۳) در نتیجه، یک صفحه جدید با یک پنل ساده نمایش داده میشود.
سفارشیسازی داشبورد با استفاده از Prometheus Query Editor
به منظور ویرایش یک پنل Grafana خاص داریم:
۱) روی عنوان پنل کلیک کنید تا یک منوی کرکرهای برایتان باز شود.
۲) در این منو روی Edit کلیک کنید.
۳) در نتیجه، پنجره edit ظاهر میشود. پنلها را با معرفی کوئریهای جدید یا اصلاح کوئریهای کنونی سفارشیسازی کنید. رسیدگی به کوئریها از طریق زبان کوئری Prometheus صورت خواهد گرفت.
۴) پارامترهای زیر در داشبورد پیشساخته 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
۳) برای نصب پلاگینها، در کلاستر با استفاده از فرمان kubectl به Grafana pod وارد شوید.
kubectl exec -it [grafana-pod] -- [shell]
۴) حالا از ابزار خط فرمان grafana-cli برای نصب پلاگین استفاده کنید.
grafana-cli plugins install grafana-worldmap-panel
در نتیجه، پلاگین درون دایرکتوری پلاگینهای Grafana نصب خواهد شد که به صورت پیشفرض به آدرس /var/lib/grafana/plugins است. این پلاگین پس از نصب، از طریق ابزار Grafana در دسترس خواهد بود.
جمعبندی
پس از مطالعه این مطلب آموزشی، میتوانید بهراحتی نصب و تنظیمات Grafana را برای استفاده در کنار Prometheus که یکی از ابزارهای مهم توسعهدهندگان است، انجام دهید. امیدواریم که از این مطلب وبلاگ آریانت نیز نهایت استفاده را برده باشید.