Grafana یک ابزار متن‌باز برای مانیتورینگ و ترسیم داده‌هاست که می‌تواند داده‌های پیچیده‌ را از منابع مختلف مانند Prometheus ،InfluxDB یا ElasticSearch دریافت کند. گرافانا به شما این امکان را می‌دهد تا هشدار (Alert)، اعلان‌ (Notificationها) و فیلترهای موقتی (Ad-hoc) برای داده‌های خود ایجاد کنید و از طریق ویژگی‌های اشتراک‌گذاری، دسترسی هم‌تیمی‌هایتان را آسان‌تر کنید.

در این راهنما، گرافانا را نصب و می‌کنیم و یک گواهی SSL برای امنیت آن دریافت می‌کنیم.

پیش نیازها

  • یک سرور Ubuntu 20.04 با یک کاربر غیر root و دسترسی sudo

  • یک دامنه با:

    • یک رکورد برای ریشه‌ی دامنه با اشاره به آدرس IP سرور به کمک این راهنما

    • یک رکورد برای زیر دامنه‌ی www با اشاره به آدرس IP سرور به کمک این راهنما

  • نصب Nginx و یک Server Block برای دامنه به کمک این راهنما

  • دریافت گواهی برای بلوک سرور دامنه‌تان به کمک این راهنما

گام نخست: نصب Grafana

کلید GPG گرافانا را دانلود کنید. این دستور کلید را به لیست کلیدهای مورد اعتماد apt اضافه می‌کند، که به شما اجازه می‌دهد Grafana را دانلود کنید:

sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key

سپس گرافانا را به منابع apt اضافه کنید:

echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list

apt را آپدیت کنید:

sudo apt update

با دستور زیر، گرافانا را روی سرورتان نصب کنید:

sudo apt install grafana

اکنون به‌کمک systemctl سرویس گرافانا را راه‌اندازی کنید:

sudo systemctl start grafana-server

با بررسی وضعیت سرویس، مطمین شوید که Grafana در حال اجراست:

sudo systemctl status grafana-server

خروجی باید به‌شکل زیر باشد:

در نهایت، سرویس را فعال کنید تا به‌طور خودکار هنگام بوت راه‌اندازی شود:

sudo systemctl enable grafana-server

خروجی زیر را دریافت خواهید کرد:

Grafana اکنون نصب شده و آماده استفاده است.

گام دوم: راه اندازی Reverse Proxy

استفاده از گواهی SSL هنگام اتصال به Grafana امنیت اطلاعات شما را تضمین می‌کند. اما، برای این کار، باید ابتدا Nginx را به عنوان یک Reverse Proxy برای Grafana پیکربندی کنید.

فایل پیکربندی Nginx را که هنگام تنظیم بلوک سرور ایجاد کرده‌اید، باز کنید:

sudo nano /etc/nginx/sites-available/your_domain

بلوک زیر را بیابید:

    location / {
        try_files $uri $uri/ =404;
    }

از آن‌جا که شما قبلن Nginx را برای برقراری ارتباط از طریق SSL پیکربندی کرده‌اید و تمام ترافیک وب سرور شما از Nginx عبور می‌کند، فقط باید برای Nginx مشخص کنید که تمام درخواست‌ها را به Grafana، که به‌طور پیش‌فرض روی پورت 3000 اجرا می‌شود، ارسال کند.

خطی که با try_files شروع می‌شود را حذف کرده و دو خط زیر را جایگزین آن کنید:

  proxy_set_header Host $http_host;
  proxy_pass http://localhost:3000;

هم‌چنین برای این‌که اتصال‌های Grafana Live WebSocket به درستی کار کنند، خطوط زیر را خارج از بخش server اضافه کنید:

map $http_upgrade $connection_upgrade {
 default upgrade;
 '' close;
}

سپس بخش زیر را به بلوک سرور اضافه کنید:

       location /api/live {
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
          proxy_set_header Host $http_host;
          proxy_pass http://localhost:3000;
}

پیکربندی نهایی به‌شکل زیر خواهد بود:

map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

    location / {
       proxy_set_header Host $http_host;
        proxy_pass http://localhost:3000;
    }

    location /api/live {
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection $connection_upgrade;
           proxy_set_header Host $http_host;
           proxy_pass http://localhost:3000;
    }
}

پس از اتمام کار، فایل را ذخیره کرده و ببندید.

تنظیمات جدید را تست کنید تا مطمین شوید همه‌چیز به‌درستی پیکربندی شده است:

sudo nginx -t

خروجی زیر را دریافت خواهید کرد:

در نهایت، تغییرات را با بارگذاری مجدد Nginx فعال کنید:

sudo systemctl reload nginx

اکنون می‌توانید با وارد کردن نام دامنه در مرورگر خود به صفحه‌ی پیش‌فرض ورود به Grafana دسترسی پیدا کنید.

گام‌ سوم: تنظیم دسترسی‌ها

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

دامنه‌تان را در مروگر باز کنید تا به صفحه‌ی ورود به گرافانا بروید.

در هر دو بخش Email or Username و Password مقدار admin را وارد کنید و روی “Log in” کلیک کنید.

در صفحه بعد، از شما خواسته می‌شود که با تغییر رمز عبور پیش فرض، حساب خود را ایمن تر کنید. رمز عبوری را که در نظر دارید در فیلدهای New Password و Confirm New Password وارد کرده و Submit را بزنید تا وارد داشبورد اولیه‌ی گرافانا شوید:

گام چهارم: غیرفعال کردن ثبت نام و دسترسی ناشناس به Grafana

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

فایل پیکربندی اصلی Grafana را برای ویرایش باز کنید:

sudo nano /etc/grafana/grafana.ini

خط allow_sign_up را در بخش [users] پیدا کنید:

[users]
# disable user signup / registration
;allow_sign_up = true

با حذف علامت ; در ابتدای خط، این گزینه را روی false تنظیم کنید:

[users]
# disable user signup / registration
allow_sign_up = false

سپس خط enabled را در بخش [auth.anonymous] پیدا کنید:

[auth.anonymous]
# enable anonymous access
;enabled = false

با حذف علامت ; در ابتدای خط، این گزینه را روی false تنظیم کنید:

[auth.anonymous]
# enable anonymous access
enabled = false

فایل را ذخیره کنید و از ویرایش‌گر خارج شوید.

برای اعمال این تغییرات، Grafana را دوباره راه‌اندازی کنید:

sudo systemctl restart grafana-server

وضعیت سرویس Grafana را بررسی کنید تا مطمین شوید سرویس به در‌ستی کار می‌کند:

sudo systemctl status grafana-server

برای اطلاعات بیش‌تر درباره‌ی استفاده از Grafana، به مستندات این سرویس مراجعه کنید.