راهنمای نصب گرافانا در اوبونتو + آموزش نحوه ایمنسازی
در این مقاله میخواهیم به آموزش نصب گرافانا در اوبونتو ۲۲.۰۴ بپردازیم و شما را بهصورت کامل با مراحل نصب Grafana آشنا کنیم.
گرافانا یکی از محبوبترین رابطهای کاربری منبع باز برای سنجش معیارها و نظارت بر زیرساخت است. گرافانا با دادههای پیچیده از منابعی مانند Prometheus ،InfluxDB ،Graphite و ElasticSearch یکپارچه میشود. Grafana به شما امکان میدهد هشدارها، اعلانها و فیلترهای موقتی را برای نمایش دادههای خود ایجاد کنید. همچنین همکاری با هم تیمیها را از طریق ویژگیهای اشتراکگذاری داخلی آسانتر میکند.
با استفاده از این مقاله آموزشی از زس، به راحتی میتوانید Grafana را نصب کرده و آن را با گواهی SSL و پروکسی معکوس Nginx ایمن کنید. هنگامی که گرافانا را راهاندازی کردید، میتوانید احراز هویت کاربر را از طریق GitHub پیکربندی کرده مجوزهای تیم خود را بهتر سازماندهی کنید.
پیشنیازها
در این آموزش نصب گرافانا شما به موارد زیر نیاز دارید:
۱. راه اندازی یک سرور اوبونتو ۲۲.۰۴، به همراه یک کاربر غیر روت با امتیازات sudo
و یک فایروال پیکربندی شده با فایروال UFW (ابزار ساده و پیشفرض اوبونتو برای پیکربندی فایروال)
۲. استفاده از نام دامنه کاملاً ثبت شده، در این آموزش از عبارت your_domain
در دستورات استفاده شده است.
۳. تنظیم رکوردهای DNS زیر برای سرور:
- یک A Record با
your_domain
که به آدرس IP عمومی سرور شما اشاره می کند. - یک A Record با
www.your_domain
که به آدرس IP عمومی سرور شما اشاره میکند.
۴. راهاندازی Nginx، از جمله یک بلوک سرور برای دامنه. پیش از این در مطلبی دیگر به آموزش نصب NGINX پرداختهایم.
۵. راهاندازی بلوک سرور Nginx با پیکربندی Let’s Encrypt.
۶. نیاز به به یک حساب GitHub، برای تنظیم احراز هویت GitHub مرتبط با یک سازمان (اختیاری).
بیشتر بخوانید: گرافانا چیست؟
گام اول: نصب گرافانا
در مرحله اول، باید Grafana را روی سرور اوبونتو ۲۲.۰۴ نصب کنیم. برای انجام این کار ابتدا باید Grafana را از وبسایت رسمی آن دانلود و یا با استفاده از ریپازیتوری APT نصب کنید. از آنجایی که یک ریپازیتوری APT، نصب و مدیریت بهروزرسانیهای Grafana را آسانتر میکند، ما از این روش در این مقاله آموزشی استقاده میکنیم.
کلید Grafana GPG را با wget
دانلود کنید، سپس خروجی را به gpg
انتقال دهید. با این کار کلید GPG از base64 به فرمت باینری تبدیل میشود. سپس خروجی را به tee
منتقل کنید تا کلید در فایل /usr/share/keyrings/grafana.gpg
ذخیره شود.
wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
در این دستور، گزینه q-
پیام بهروزرسانی وضعیت را برای wget
خاموش میکند و O-
فایلی را که دانلود کردهاید به ترمینال خروجی میدهد. این دو گزینه تضمین میکنند که فقط محتویات فایل دانلود شده پایپلاین میشود. گزینه > /dev/null
به دلایل امنیتی خروجی را از ترمینال شما مخفی میکند.
اکنون با استفاده از دستور زیر، ریپازیتوری Grafana را به منابع APT خود اضافه کنید:
echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
حافظه پنهان APT خود را برای بهروزرسانی لیست پکیجهای خود رفرش کنید:
sudo apt update
حال میتوانید مراحل نصب Grafana را ادامه دهید:
sudo apt install grafana
پس از نصب گرافانا، از systemctl
برای راهاندازی سرور Grafana استفاده کنید:
sudo systemctl start grafana-server
سپس، با بررسی وضعیت سرویس، تأیید کنید که Grafana در حال اجرا است:
sudo systemctl status grafana-server
در این مرحله خروجی مشابه این را دریافت خواهید کرد:
Output
● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2022-12-27 08:20:15 UTC; 7s ago
Docs: http://docs.grafana.org
Main PID: 4132 (grafana-server)
Tasks: 7 (limit: 515)
...
این خروجی حاوی اطلاعاتی در مورد فرآیند Grafana از جمله وضعیت آن، شناسه اصلی فرآیند (PID) و غیره است. active (running)
نشان میدهد که فرآیند به درستی اجرا میشود. در نهایت، سرویس را فعال کنید تا به طور خودکار Grafana در هنگام بوت راهاندازی شود:
sudo systemctl enable grafana-server
سپس خروجی زیر را دریافت خواهید کرد:
Output
Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.
این خروجی تأیید میکند که systemd
پیوندهای نمادین لازم را برای شروع خودکار Grafana ایجاد کرده است. در نهایت مراحل نصب گرافانا تمام شده و آماده استفاده است. در ادامه با استفاده از گواهی SSL و یک پروکسی معکوس، اتصال به Grafana را ایمن کنیم.
گام دوم: راهاندازی Reverse Proxy
استفاده از گواهینامه SSL با رمزگذاری اتصال به و از Grafana، امنیت دادههای شما را تضمین میکند، اما برای استفاده از این اتصال، ابتدا باید Nginx را به عنوان یک پروکسی معکوس برای Grafana پیکربندی کنید.
ابتدا فایل پیکربندی Nginx را که هنگام تنظیم بلوک سرور Nginx با Let’s Encrypt در پیش نیازها ایجاد کردید، باز کنید. شما میتوانید از هر ویرایشگر متنی استفاده کنید، ما برای این آموزش از nano
استفاده می کنیم:
sudo nano /etc/nginx/sites-available/your_domain
اکنون بلوک زیر را پیدا کنید:
از آنجا که شما قبلاً Nginx را برای برقراری ارتباط از طریق SSL پیکربندی کردهاید و تمام ترافیک وب سرور شما از Nginx عبور میکند، فقط باید به Nginx بگویید تا تمام درخواستها را به Grafana که به طور پیشفرض روی پورت 3000 اجرا میشود، ارسال کند.
خط try_files
موجود در این location block
را حذف کنید و آن را با گزینه های زیر جایگزین کنید:
این دستور پروکسی را به پورت مناسب نگاشت و نام سرور را در هدر ارسال میکند. همچنین برای اینکه اتصالات Grafana Live WebSocket به درستی کار کنند، بخش زیر را خارج از بخش سرور اضافه کنید:
در این مرحله شما باید location
زیر را به بلوک سرور اضافه کنید:
هدرهای Upgrade
و Connection
از کلاینت به سرور پروکسی ارسال نمیشوند. بنابراین، برای اینکه سرور پروکسی از قصد کلاینت برای تغییر پروتکل به WebSocket مطلع شود، این هدرها باید به صراحت ارسال شوند.
پیکربندی نهایی به صورت زیر خواهد بود:
نکته: دقت کنید اگر از ابزار certbot برای تنظیم گواهیهای Let’s Encrypt SSL استفاده کردهاید، ممکن است فایل پیکربندی شما حاوی خطوط اضافی و بلوک سرور باشد که توسط certbot
اضافه شدهاند.
پس از اتمام کار، اگر از nano
استفاده میکنید، فایل را با فشردن کلیدهای Y
،CTRL+X
و ENTER
ذخیره و ببندید. اکنون تنظیمات جدید را تست کنید تا مطمئن شوید همه چیز به درستی پیکربندی شده است:
سپس خروجی زیر را دریافت خواهید کرد:
در نهایت، تغییرات را با بارگذاری مجدد Nginx فعال کنید:
اکنون میتوانید با مرورگر وب خود به https://your_domain
صفحه ورود پیشفرض Grafana دسترسی پیدا کنید. در غیر این صورت بررسی کنید که فایروال شما به گونهای تنظیم شده که ترافیک در پورت 443 را مجاز بداند و سپس دستورالعملهای قبلی را مجدداً دنبال کنید.
با اتصال به گرافانا رمزگذاری شده، اکنون میتوانید اقدامات امنیتی اضافی را اجرا کنید. این اقدامات را با تغییر اعتبار administrative پیش فرض Grafana شروع می شود.
گام سوم: بهروزرسانی گواهینامه در نصب گرافانا
از آنجایی که هر نصب گرافانا، به طور پیشفرض از یک اعتبار Administrative استفاده میکند، بهترین روش این است که اطلاعات ورود خود را در اسرع وقت تغییر دهید. در این مرحله، به شما آموزش میدهیم که اعتبارنامهها را برای بهبود امنیت بهروزرسانی کنید.
با پیمایش به https://your_domain
از مرورگر وب خود شروع کنید. با این کار صفحه ورود به سیستم پیشفرض ظاهر میشود که در آن لوگوی Grafana، فرمی که از شما میخواهد Email یا username و Password، دکمه Log in و لینک ?Forgot your password را انتخاب و وارد کنید
در هر دو قسمت ایمیل یا نام کاربری و رمز عبور admin را وارد کنید و سپس روی دکمه Log in کلیک کنید.در صفحه بعدی، از شما خواسته میشود که با تغییر رمز عبور پیش فرض، حساب خود را ایمنتر کنید.
اکنون پسورد مورد نظر خود را که میخواهید از آن استفاده کنید، در قسمتهای New password و Confirm new password وارد کنید.
در این قسمت میتوانید برای ذخیره اطلاعات جدید روی Submit کلیک کنید یا برای رد شدن از این مرحله دکمه Skip را فشار دهید. اگر رد شوید، هر بار که وارد میشوید از شما خواسته میشود که رمز عبور را تغییر دهید.
به منظور افزایش امنیت تنظیمات Grafana خود، روی Submit کلیک کنید. اکنون میتوانید داشبورد Welcome to Grafana را مشاهده کنید.
در مرحله سوم نصب گرافانا شما با تغییر اعتبارنامههای پیش فرض، حساب خود را ایمن کردهاید. در مرحله بعد، تغییراتی در پیکربندی Grafana خود ایجاد میکنیم تا هیچ کس نتواند بدون اجازه شما یک حساب جدید Grafana ایجاد کند.
گام چهار: غیرفعال کردن ثبت نام و دسترسی ناشناس Grafana
گرافانا قابلیتهای را ارائه میدهد که بازدیدکنندگان میتوانند بدون ثبت نام، حسابهای کاربری برای خود ایجاد نموده و پیش نمایش داشبورد را مشاهده کنند. هنگامی که Grafana از طریق اینترنت در دسترس نیست یا زمانی که به همراه دادهها در دسترس عموم قرار دارند، ممکن است بخواهید این ویژگیها را مجاز کنید. با این حال، هنگام استفاده آنلاین از Grafana، برای کار با دادههای حساس، دسترسی کاربران ناشناس میتواند یک مشکل امنیتی باشد. برای رفع این مشکل، باید تغییراتی را در پیکربندی Grafana ایجاد کنید.
برای ویرایش و اعمال تغییرات باید کار خود را با باز کردن فایل پیکربندی اصلی Grafana شروع کنید:
دستورالعمل allow_sign_up
زیر را در عنوان [users]
پیدا کنید:
فعال کردن این دستورالعمل با true
یک دکمه Sign Up را به صفحه ورود اضافه میکند و به کاربران امکان میدهد تا ابتدا ثبت نام کرده و سپس به Grafana دسترسی داشته باشند.
غیرفعال کردن این دستورالعمل با false
، دکمه Sign Up را حذف می کند و امنیت و حریم خصوصی گرافانا را بهبود میدهد.
این دستورالعمل را با حذف ;
در ابتدای خط از حالت کامنت خارج کرده و سپس تنظیم گزینه روی false
را اجرا میکنیم:
در مرحله بعد، دستورالعمل enabled
زیر را در عنوان [auth.anonymous]
پیدا کنید:
تنظیم enabled
به true
، دسترسی به داشبورد را به کاربران غیر ثبتنام شده میدهد. اگر این گزینه را روی false
قرار دهید؛ دسترسی داشبورد را فقط برای کاربران ثبت نام شده محدود میکند. برای اعمال این تغییرات، ;
را در ابتدای خط حذف کرده و سپس گزینه را روی false
قرار دهید.
در نهایت فایل را ذخیره کنید و از ویرایشگر متن خود خارج شوید. برای فعال کردن تغییرات، Grafana را مجددا راهاندازی کنید:
وضعیت سرویس Grafana را بررسی کنید که همه چیز کار میکند:
مانند قبل، خروجی گزارش میدهد که گرافانا فعال و در حال اجرا یا به عبارتی active (running)
است.
اکنون مرورگر وب خود را رویhttps://your_domain
قرار دهید. برای بازگشت به صفحه Sign Up، مکان نما را روی آواتار خود در سمت چپ پایین صفحه بیاورید و روی گزینه Sign out که ظاهر میشود، کلیک کنید. هنگامی که از سیستم خارج شدید، بررسی کنید که دکمه Sign Up وجود ندارد و نمی توانید بدون وارد کردن اطلاعات کاربری ورود به سیستم وارد شوید.
در این مرحله، Grafana به طور کامل پیکربندی شده و آماده استفاده است. در مرحله بعدی آموزش نصب گرافانا، میتوانید با احراز هویت از طریق GitHub، فرآیند ورود به سیستم را برای سازمان خود ساده کنید.
گام پنجم: راه اندازی یک برنامه GitHub OAuth (اختیاری)
یک رویکرد جایگزین برای ورود به سیستم استفاده از احراز هویت از طریق GitHub در گرافانا است که دسترسی ورود به سیستم را برای همه اعضای سازمانهای مجاز از نظر GitHub فراهم میکند. این امر زمانی میتواند مفید باشد که میخواهید به چندین برنامهنویس اجازه دهید بدون نیاز به ایجاد اعتبارنامههای خاص Grafana با یکدیگر همکاری کنند و به معیارها دسترسی داشته باشند.
با وارد شدن به یک حساب GitHub مرتبط با سازمان خود شروع کنید و سپس به صفحه پروفایل GitHub خود بروید. با کلیک روی Switch to another account در بالای صفحه و سپس انتخاب سازمان خود در منوی کشویی، زمینه تنظیمات را تغییر دهید. با این کار زمینه از Personal settings به Organization settings تغییر میکند.
در صفحه بعدی، میتوانید Organization profile خود را مشاهده کنید که میتوانید تنظیماتی مانند Email ،Organization display name و URL سازمان را تغییر دهید.
از آنجایی که Grafana از OAuth (یک استاندارد باز برای اعطای دسترسی اشخاص ثالث راه دور به منابع محلی) برای احراز هویت کاربران از طریق GitHub استفاده میکند، باید یک درخواست OAuth جدید در GitHub ایجاد کنید.
روی پیوند OAuth Apps زیر Developer settings در سمت چپ پایین صفحه کلیک کنید.
اگر قبلاً هیچ اپلیکیشن OAuth مرتبط با سازمان خود در GitHub ندارید، به شما نشان میدهد که هیچ اپلیکیشن متعلق به سازمان وجود ندارد (No Organization Owned Applications). در غیر این صورت، فهرستی از اپلیکیشنهای OAuth را مشاهده میکنید که قبلاً به حساب شما متصل شدهاند.
برای ادامه روی گزینه Register an application کلیک کنید.
در صفحه بعدی، جزئیات زیر را در مورد نصب گرافانا وارد کنید:
- نام اپلیکیشن (Application name): این گزینه در تشخیص برنامههای مختلف OAuth از یکدیگر به شما کمک میکند.
- URL صفحه اصلی (Homepage URL): این به GitHub میگوید که در کجا Grafana را پیدا کند.
https://your_domain
را در این قسمت تایپ کرده و دامنه خود را جایگزینyour_domain
کنید. - توضیحات برنامه (Application Description): توضیحی از هدف برنامه OAuth شما ارائه میدهد.
- URL بازگشت به تماس برنامه (Application callback URL): این آدرسی است که کاربران پس از احراز هویت موفق به آنجا فرستاده میشوند. برای Grafana، این فیلد باید روی
https://your_domain/login/github
تنظیم شود.
به خاطر داشته باشید که کاربران گرافانا که از طریق GitHub وارد میشوند، مقادیری را که در سه قسمت قبلی وارد کردهاید مشاهده میکنند؛ بنابراین حتماً مواردی معنیدار و مناسب وارد کنید. پس از تکمیل، فرمی شبیه به مورد زیر را مشاهده خواهید کرد:
در نهایت روی دکمه Register application کلیک کنید.
اکنون به صفحهای هدایت خواهید شد که حاوی اطلاعات کلی در مورد برنامه OAuth جدید شما، از جمله شناسه مشتری است. سپس روی گزینه Generate a new client secret کلیک کنید تا Client Secret جدید به دست آورید. هر دو مقدار را یادداشت کنید؛ زیرا برای تکمیل تنظیمات باید آنها را به فایل پیکربندی اصلی Grafana اضافه نمایید.
نکته بسیار مهم: اطمینان حاصل کنید که Client ID و Client Secret خود را در مکانی امن و غیرعمومی نگه دارید، زیرا میتوانند به عنوان مبنای حمله مورد استفاده قرار گیرند.
با ایجاد برنامه GitHub OAuth، اکنون آماده پیکربندی مجدد Grafana برای استفاده از GitHub برای احراز هویت هستید.
گام ششم: پیکربندی Grafana به عنوان یک برنامه GitHub OAuth (اختیاری)
برای تکمیل احراز هویت GitHub در گرافانا باید برخی تغییرات را در فایل های پیکربندی Grafana خود اعمال کنید.
برای شروع، ابتدا فایل پیکربندی اصلی Grafana را باز کنید:
عنوان [auth.github]
را پیدا کنید و این بخش را با حذف علامت ;
در ابتدای هر خط به جز موارد زیر که در این آموزش تغییر نمیکند، از حالت کامنت خارج کنید:
;allowed_domains =
;team_ids =
;role_attribute_path =
;role_attribute_strict = false
;allow_assign_grafana_admin = false
در مرحله بعد، تغییرات زیر را اعمال کنید:
-
enabled
را تنظیم کرده وallow_sign_up
را رویtrue
تنظیم کنید. این امر احراز هویت GitHub را فعال می کند و به اعضای سازمان مجاز اجازه می دهد تا خودشان حساب ایجاد کنند. توجه داشته باشید که این تنظیم با ویژگیallow_sign_up
در[users]
که در مرحله ۴ تغییر دادید متفاوت است. - مقادیری که هنگام ایجاد GitHub OAuth خود دریافت کردید را برای
client_id
وclient_secret
وارد کنید. allowed_organizations
را روی نام سازمان خود تنظیم کنید تا مطمئن شوید که فقط اعضای سازمان شما میتوانند ثبت نام کرده و به گرافانا وارد شوند.
در نهایت پیکربندی کامل به شکل زیر خواهد بود:
شما اکنون هر آنچه را که باید درباره GitHub بداند به Grafana گفتهاید. برای تکمیل تنظیمات، باید ریدایرکتها را در پشت یک پروکسی معکوس فعال کنید. این کار با تنظیم یک مقدار root_url
در زیر عنوان [server]
انجام میشود.
تنظیمات خود را ذخیره کنید و فایل را ببندید.
سپس Grafana را مجددا راه اندازی کنید تا تغییرات فعال شوند:
در آخر، بررسی کنید که سرویس راهاندازی و اجرا شده باشد:
خروجی نشان میدهد که سرویس، فعال و در حال اجرا یا به عبارتی active (running)
است.
اکنون، سیستم احراز هویت جدید خود را با ورود به https://your_domain
آزمایش کنید. اگر قبلاً به Grafana وارد شدهاید، ماوس خود را روی فهرست آواتار در گوشه سمت چپ پایین صفحه قرار دهید و در منوی ثانویه که در کنار نام شما ظاهر میشود، روی Sign out کلیک کنید.
در صفحه ورود، بخش جدیدی را در زیر دکمه Log in مشاهده خواهید کرد که شامل Sign in with GitHub با لوگوی GitHub است.
روی دکمه Sign in with GitHub کلیک کنید تا به GitHub هدایت شوید، جایی که به حساب GitHub خود وارد شده و قصد خود را برای تأیید Grafana تأیید کنید.
روی دکمه سبز Authorize your_github_organization کلیک کنید.
نکته: مطمئن شوید که حساب GitHub شما عضو سازمان مورد تایید است و آدرس ایمیل Grafana شما با آدرس ایمیل GitHub شما مطابقت دارد. اگر سعی کنید با یک حساب GitHub که عضو سازمان مورد تایید شما نیست، احراز هویت کنید، یک پیام Login Failed دریافت خواهید کرد که به شما میگوید کاربر عضو یکی از سازمانهای مرتبط نیست.
اکنون با حساب Grafana موجود خود وارد سیستم خواهید شد. اگر یک حساب گرافانا از قبل برای کاربری که با آن وارد شدهاید وجود نداشته باشد، Grafana یک حساب کاربری جدید با مجوزهای Viewer ایجاد و اطمینان حاصل میکند که کاربران جدید فقط میتوانند از داشبوردهای موجود استفاده کنند.
برای تغییر مجوزهای پیشفرض برای کاربران جدید، فایل پیکربندی اصلی گرافانا را برای ویرایش باز کنید.
دستور auto_assign_org_role
را در زیر عنوان [users]
پیدا کنید و با حذف ;
در ابتدای خط، تنظیمات را از حالت کامنت خارج کرده و فعال کنید.
دستور را روی یکی از مقادیر زیر تنظیم کنید:
Viewer
: فقط میتواند از داشبوردهای موجود استفاده کند.
Editor
: میتواند از داشبوردها استفاده، یا آنها را اصلاح کرده یا به آنها اضافه نماید.
Admin
: اجازه انجام همه کارها را دارد.
در ادامه این آموزش نصب گرافانا، تخصیص خودکار به Viewer
را تنظیم میکنیم:
هنگامی که تغییرات خود را ذخیره کردید، فایل را ببندید و Grafana را مجددا راهاندازی کنید:
در نهایت وضعیت را بررسی کنید:
مانند مراحل قبل وضعیت active (running)
نمایش داده میشود.
در مرحله آخر، Grafana را به طور کامل پیکربندی کردهاید تا به اعضای GitHub سازمانی، امکان ثبتنام و استفاده از نصب Grafana شما را بدهد.
جمعبندی
در این مقاله آموزشی، به نحوه نصب گرافانا پرداختیم. در این آموزش ابتدا مراحل نصب Grafana را بررسی، سپس آن را پیکربندی و ایمن کردیم. همچنین یاد گرفتیم که چگونه به اعضای سازمان خود اجازه دهیم تا از طریق GitHub احراز هویت کنند.
در صورت تمایل میتوانید فرایند نصب گرافانا را به ابر زَس بسپارید تا حین خرید سرور ابری، به صورت آماده استفاده تحویلتان داده شود.