Grafana là một phần mềm mã nguồn mở cho phép bạn truy vấn, hiển thị, cảnh báo và khám phá các số liệu ở bất cứ đâu chúng được lưu trữ. Để có thể cài đặt và bảo mật Grafana trên Ubuntu 20.04, bạn hãy tham khảo bài viết dưới đây của Vietnix nhé.
Giới thiệu về Grafana
Grafana là một công cụ mã nguồn mở giúp cho việc trực quan hóa và giám sát dữ liệu, được tích hợp với các nguồn dữ liệu phức tạp như Prometheus, InfluxDB, Graphite, và ElasticSearch. Cho phép bạn tạo cảnh báo, thông báo và bộ lọc tạm thời cho dữ liệu của bạn, đồng thời giúp việc cộng tác với thành viên nhóm dễ dàng hơn thông qua các tính năng chia sẻ tích hợp sẵn.
Trong bài viết này, bạn sẽ được hướng dẫn cách để cài đặt và bảo mật Grafana với chứng chỉ SSL và Nginx reverse proxy. Sau khi bạn đã cài đặt Grafana, bạn sẽ cấu hình xác thực người dùng thông qua GitHub, cho phép bạn tổ chức phân quyền team của mình một cách tốt hơn.
Yêu cầu để cài đặt và bảo mật Grafana trên Ubuntu 20.04
Để làm theo các bước của bài hướng dẫn này, bạn cần:
Một Ubuntu 20.04 server bao gồm một tài khoản non-root có quyền sudo
và tường lửa được cấu hình với ufw
.
Một tên miền đã được đăng ký. Trong toàn bộ bài viết này sẽ sử dụng tên miền là your_domain.
Thiết lập các DNS record sau cho máy chủ của bạn.
- Một bản ghi A với
your_domain
trỏ đến địa chỉ IP server của bạn. - Một bản ghi A với
www.your_domain
trỏ đến địa chỉ IP server của bạn
Cài đặt Nginx trên Ubuntu 20.04, bao gồm server block cho tên miền của bạn.
Một server block Nginx với cấu hình Let’s Encrypt. Tùy chọn, thiết lập xác thực với GitHub.
Nếu chưa có máy chủ và tên miền, bạn có thể tham khảo thuê server ảo và tên miền tại Vietnix để tiết kiệm chi phí. Hiện tại Vietnix cung cấp đa dạng các gói VPS như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU và tên miền chỉ từ 160.000 VNĐ/năm phù hợp với mọi nhu cầu sử dụng. Nếu còn phân vân chưa biết nên sử dụng gói dịch vụ nào, hãy liên hệ với Vietnix để được tư vấn chi tiết và nhanh chóng.
Bước 1 – Cài đặt Grafana
Trong bước đầu tiên này, bạn sẽ cài đặt Grafana trên máy chủ Ubuntu 20.04 của mình. Bạn có thể cài đặt Grafana trực tiếp từ trang web chính thức hoặc thông qua APT repository. Vì APT repository giúp dễ dàng cài đặt và quản lý các phiên bản của Grafana, bạn sẽ sử dụng phương pháp trên trong bài hướng dẫn của Vietnix.
Tải về GPG key của Grafana bằng wget
, sau đó chuyển đến apt-key
. Bằng cách này sẽ thêm key vào danh sách các key tin cậy của cài đặt APT, cho phép bạn tải xuống và xác minh gói Grafana đã ký GPG:
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
Trong lệnh này, tùy chọn -q
tắt thông báo cập nhật trạng thái cho wget
, và -O
xuất tệp đã tải xuống đến terminal. Hai tùy chọn này đảm bảo rằng chỉ nội dung của file đã tải xuống được liên kết đến apt-key
.
Tiếp theo, thêm Grafana repository vào APT sources của bạn:
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Để làm mới cache APT và cập nhật các gói của bạn, hãy chạy lệnh:
sudo apt update
Bây giờ, bạn có thể tiến hành cài đặt:
sudo apt install grafana
Sau khi hoàn tất cài đặt Grafana, sử dụng systemctl
để khởi động Grafana server.
sudo systemctl start grafana-server
Kiểm tra trạng thái của dịch vụ để đảm bảo rằng Grafana đang chạy, bạn có thể làm như sau:
sudo systemctl status grafana-server
Trên màn hình làm việc, kết quả sẽ hiển thị như sau:
Output
● grafana-server.service - Grafana instance
Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 08:08:10 UTC; 4s ago
Docs: http://docs.grafana.org
Main PID: 15982 (grafana-server)
Tasks: 7 (limit: 1137)
...
Đầu ra này hiển thị thông tin về quy trình của Grafana, bao gồm trạng thái, Main Process Identifier (Mã định danh quy trình chính) (PID), v.v. active (running)
cho thấy rằng quá trình đang chạy.
Cuối cùng, kích hoạt chức năng tự động khởi động Grafana như sau:
sudo systemctl enable grafana-server
Bạn sẽ nhận được một kết quả tương tự:
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.
Điều này xác nhận systemd
đã tạo các symbolic links cần thiết để tự khởi động Grafana.
Đến đây, Grafana đã được cài đặt và sẵn sàng sử dụng. Ở bước tiếp theo, bạn sẽ được hướng dẫn bảo mật kết nối với Grafana bằng SSL và reverse proxy.
Bước 2 – Cài đặt Reverse Proxy
Sử dụng chứng chỉ SSL để đảm bảo dữ liệu được bảo mật bằng cách mã hóa kết nối đến và đi từ Grafana. Thế nhưng, để dùng được kết nối này, trước tiên bạn cần cấu hình lại Nginx làm reverse proxy cho Grafana.
Mở file cấu hình Nginx mà bạn đã tạo khi cài đặt server block Nginx với Let’s Encrypt. Bạn có thể sử dụng bất kỳ trình chỉnh sửa nào, ở bài viết này Vietnix sẽ sử dụng nano
:
sudo nano /etc/nginx/sites-available/your_domain
Xác định vị trí của khối sau:
...
location / {
try_files $uri $uri/ =404;
}
...
Vì bạn đã cấu hình Nginx để giao tiếp qua SSL và vì tất cả truy cập web đến server của bạn đã chuyển qua Nginx, bạn chỉ cần để Nginx chuyển tiếp tất cả các yêu cầu tới Grafana và mặc định chạy trên port 3000
.
Xóa try_files
trong location block
này và thay thế như sau:
...
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000;
}
...
Điều này sẽ ánh xạ proxy đến port thích hợp và sẽ truyền tên server vào header.
Ngoài ra, để các kết nối Grafana Live WebSocket hoạt động chính xác, thêm đoạn code sau ở bên ngoài server
:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
...
Sau đó thêm location
vào trong server block như sau:
server {
...
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;
}
...
Các header Upgrade và Connection không được gửi từ client đến proxied server. Do đó, để proxied server biết được ý định thay đổi giao thức thành WebSocket của client, những header này cần được truyền một cách rõ ràng.
Cấu hình cuối sẽ hiển thị như sau:
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;
}
}
Sau khi hoàn tất, hãy lưu file bằng cách nhấn tổ hợp phím CTRL+X
, nhấn Y
, sau đó nhấn ENTER
nếu bạn sử dụng nano
.
Bây giờ, hãy cùng kiểm tra lại để đảm bảo mọi thứ được cấu hình chính xác:
sudo nginx -t
Kết quả được hiển thị sau:
Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Cuối cùng, reload lại Nginx để áp dụng các thay đổi:
sudo systemctl reload nginx
Giờ đây, bạn có thể truy cập vào trang đăng nhập Grafana bằng cách mở trình duyệt web và đi đến đường dẫn https:// your_domain
. Nếu không thể truy cập Grafana, hãy kiểm tra lại tường lửa của bạn được đặt cho phép lưu lượng truy cập trên port 443
chưa và sau đó xem lại các hướng dẫn trước đó. Bằng việc kết nối với Grafana được mã hóa, hiện tại bạn có thể triển khai các biện pháp bảo mật bổ sung, bắt đầu bằng việc thay đổi thông tin đăng nhập quản trị mặc định của Grafana.
Bước 3 – Cập nhật thông tin đăng nhập
Do các cài đặt Grafana đều sử dụng cùng một thông tin đăng nhập quản trị theo mặc định vì vậy trong bước này, bạn sẽ được hướng dẫn cập nhật thông tin đăng nhập của mình để cải thiện tính bảo mật.
Đi đến https:// your_domain
từ trình duyệt web của bạn. Trang đăng nhập được hiển thị gồm có biểu tượng Grafana và một form đăng nhập thông thường như sau:
Nhập admin
vào cả 2 khung Email or username và Password và sau đó nhấn Log in
Ở màn hình tiếp theo, bạn cần thay đổi mật khẩu mới để đảm bảo sự bảo mật cho chính tài khoản của mình:
Nhập mật khẩu mới vào khung New password và nhập lại một lần nữa để xác nhận mật khẩu mới vào khung Confirm new password.
Từ đây, bạn nhấn Submit để lưu thông tin mới hoặc Skip để bỏ qua bước này. Nếu bạn bỏ qua, bạn sẽ nhận được một yêu cầu thay đổi mật khẩu vào lần đăng nhập tiếp theo.
Để tăng tính bảo mật cho cài đặt Grafana của bạn, hãy nhấn Submit. Bạn sẽ được chuyển đến Welcome to Grafana bảng Menu chính:
Hiện tại bạn đã hoàn tất thủ tục bảo mật tài khoản của mình bằng cách thay đổi thông tin đăng nhập mặc định. Ở bước tiếp theo, bạn sẽ tiến hành thay đổi cấu hình Grafana nhằm mục đích ngăn người khác có thể tạo tài khoản Grafana mà không có sự cho phép của bạn.
Bước 4 – Vô hiệu hóa đăng ký Grafana và truy cập ẩn danh
Grafana cung cấp các tùy chọn cho phép người dùng tạo tài khoản cho chính họ và xem trước trang dashboards mà không cần phải đăng ký. Khi Grafana không thể truy cập qua internet hoặc khi đang làm việc với dữ liệu công khai có sẵn như trạng thái dịch vụ, bạn có thể cho phép các tính năng này.
Tuy nhiên, khi sử dụng Grafana online để làm việc với dữ liệu nhạy cảm, truy cập ẩn danh có thể gây ra vấn đề bảo mật. Để khắc phục sự cố này, ta tiến hành thay đổi cấu hình Grafana.
Mở file cấu hình chính của Grafana:
sudo nano /etc/grafana/grafana.ini
Tìm allow_sign_up
ở dưới [users]
:
...
[users]
# disable user signup / registration
;allow_sign_up = true
...
Với ;allow_sign_up = true
sẽ thêm nút Sign up ở trang đăng nhập và cho phép người dùng tự đăng ký và truy cập Grafana.
Vô hiệu hóa hành động này bằng false
sẽ xóa nút Sign up và tăng cường bảo mật và quyền riêng tư của Grafana.
Xóa dấu ;
ở đầu dòng và thay true bằng false
:
...
[users]
# disable user signup / registration
allow_sign_up = false
...
Tiếp theo, tìm enabled ở bên dưới [auth.anonymous] :
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...
Với enabled
là true
cung cấp quyền truy cập vào dashboard cho người dùng chưa được đăng ký. Ngược lại, với false
sẽ giới hạn quyền truy cập vào dashboard chỉ dành cho người dùng đã đăng ký.
Tiến hành xóa dấu ;
ở đầu dòng và cài đặt enabled
thành false
như sau:
...
[auth.anonymous]
# enable anonymous access
enabled = false
...
Lưu file và thoát khỏi trình chỉnh sửa của bạn.
Khởi động lại Grafana, để các thay đổi được hoạt động:
sudo systemctl restart grafana-server
Kiểm tra trạng thái dịch vụ của Grafana để đảm bảo mọi thứ đang hoạt động bằng cách:
sudo systemctl status grafana-server
Giống như kết quả ở bước 1, sẽ hiển thị rằng Grafana đang ở trạng thái active (running)
.
Bây giờ, đi đến https:// your_domain
. Để quay lại màn hình Sign Up, hãy đưa con trỏ chuột đến hình đại diện của bạn ở phía dưới bên trái của màn hình và nhấp vào Sign out.
Một khi bạn đã đăng xuất, hãy đảm bảo rằng không có nút Sign Up và bạn không thể đăng nhập mà không nhập thông tin đăng nhập.
Ở thời điểm này, Grafana đã được cấu hình đầy đủ và sẵn sàng để sử dụng. Tiếp theo, bạn có thể đơn giản hóa quy trình đăng nhập cho tổ chức của bạn bằng cách xác thực thông qua GitHub.
Bước 5 – Cài đặt GitHub OAuth (Không bắt buộc)
Để có một phương pháp đăng nhập thay thế, bạn có thể cấu hình Grafana để xác thực thông qua GitHub, cung cấp quyền truy cập đăng nhập cho tất cả các thành viên của các tổ chức GitHub được ủy quyền. Điều này có thể đặc biệt hữu ích khi bạn muốn cho phép nhiều nhà phát triển cộng tác và truy cập các số liệu mà không cần tạo tài khoản đăng nhập riêng cho Grafana.
Tiến hành đăng nhập bằng tài khoản GitHub được liên kết với tổ chức của bạn và sau đó chuyển đến profile GitHub của bạn.
Chuyển từ Personal settings sang Organization settings bằng cách nhấp vào tên của bạn ở bên trái màn hình sau đó chọn tên tổ chức của bạn trong bảng menu thả xuống.
Ở màn hình tiếp theo, bạn sẽ thấy Organization profile, nơi bạn có thể thay đổi cài đặt như Organization display name , Email và URL.
Bởi vì Grafana sử dụng OAuth – một tiêu chuẩn mở cho phép bên thứ ba truy cập vào tài nguyên cục bộ từ xa – để xác thực người dùng thông qua GitHub, bạn cần tạo một ứng dụng OAuth mới trong GitHub .
Nhấn vào liên kết OAuth Apps trong phần Developer settings ở góc dưới bên trái của màn hình.
Nếu bạn không có bất kỳ OAuth nào được liên kết với tổ chức của bạn trên GitHub, bạn sẽ được thông báo rằng No Organization Owned Applications. Nếu không, bạn sẽ thấy danh sách các ứng dụng OAuth đã được kết nối với tài khoản của bạn .
Nhấn vào nút Register a new application để tiếp tục.
Trên màn hình tiếp theo, bạn hãy điền vào các thông tin sau về cài đặt Grafana của bạn:
- Application name: Giúp bạn phân biệt các ứng dụng OAuth khác nhau của mình.
- Homepage URL: Giúp GitHub biết nơi tìm thấy Grafana. Nhập
https:// your_domain
vào trường này, thay thếyour_domain
bằng tên miền của bạn. - Application Description: Cung cấp mô tả về mục đích của ứng dụng OAuth của mình.
- Application callback URL: Đây là địa chỉ nơi mà người dùng sẽ được gửi thông báo sau khi xác thực thành công. Đối với Grafana, trường này phải được thiết lập thành
https:// your_domain /login/github
.
Hãy nhớ rằng người dùng Grafana đăng nhập thông qua GitHub sẽ thấy các giá trị bạn đã nhập trong ba trường đầu trước đó, vì vậy hãy đảm bảo rằng nội dung nhập vào có ý nghĩa và phù hợp.
Sau khi hoàn tất quá trình điền thông tin, form sẽ hiện thị như sau:
Nhấn nút Register application để hoàn tất.
Đến đây, bạn sẽ được chuyển đến trang chứa Client ID và Client Secret được liên kết với ứng dụng OAuth mới của bạn. Hãy ghi chú lại cả hai giá trị này vì bạn sẽ cần thêm chúng vào file cấu hình chính của Grafana để hoàn tất quá trình cài đặt .
Lưu ý: Hãy bảo đảm rằng việc giữ Client ID và Client Secret một cách an toàn và không công khai, bởi vì chúng có thể được sử dụng làm cơ sở cho một cuộc tấn công.
Bằng việc tạo ứng dụng GitHub OAuth cho riêng mình, bây giờ bạn đã có thể sẵn sàng cấu hình lại Grafana để sử dụng GitHub cho việc xác thực.
Bước 6 – Cấu hình Grafana làm ứng dụng GitHub OAuth (Không bắt buộc)
Để hoàn thành xác thực GitHub cho việc cài đặt Grafana, đến đây bạn sẽ thực hiện một số thay đổi đối với các file cấu hình Grafana.
Mở file cấu hình Grafana chính để bắt đầu:
sudo nano /etc/grafana/grafana.ini
Tìm [auth.github
] và xóa ;
vào đầu mỗi dòng trừ 2 đoạn lệnh không thay đổi là ;allowed_domains =
và ;team_ids =
Tiếp đến, thực hiện các thay đổi sau:
- Cài đặt
enabled
vàallow_sign_up
thànhtrue
. Việc này sẽ cho phép xác thực GitHub và các thành viên của tổ chức được phép tự tạo tài khoản. Lưu ý rằng cài đặt này khác vớiallow_sign_up
trong[users]
mà bạn đã thay đổi ở Bước 4. - Cài đặt
client_id
vàclient_secret
thành các giá trị mà bạn đã có được khi tạo ứng dụng GitHub OAuth. - Cài đặt
allowed_organizations
thành tên tổ chức của bạn và đảm bảo rằng chỉ các thành viên trong tổ chức mới có thể đăng ký và đăng nhập vào Grafana.
Cấu hình hoàn chỉnh sẽ hiển thị như sau:
...
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
allowed_organizations = your_organization_name
...
Hiện tại bạn đã thông báo cho Grafana biết mọi thông tin cần thiết về GitHub. Để hoàn tất quá trình cài đặt, bạn cần kích hoạt chuyển hướng về sau Reverse Proxy. Điều này được thực hiện bằng cách đặt giá trị root_url
trong [server]
.
...
[server]
root_url = https://your_domain
...
Lưu lại và đóng file.
Sau đó, khởi động lại Grafana để áp dụng các thay đổi:
sudo systemctl restart grafana-server
Cuối cùng, để đảm bảo dịch vụ đang hoạt động:
sudo systemctl status grafana-server
Kết quả đầu ra cho biết rằng dịch vụ đang ở trạng thái active (running)
.
Đến đây, hãy kiểm tra hệ thống xác thực mới của bạn bằng cách chuyển đến https:// your_domain
. Nếu bạn đã đăng nhập vào Grafana, hãy di chuột qua avatar log ở góc dưới bên trái của màn hình và nhấp vào Sign out trong bảng menu phụ xuất hiện bên cạnh tên của bạn.
Trên trang đăng nhập, bạn sẽ nút Sign in with Github cùng với logo của GitHub bên dưới nút Log in.
Nhấn vào Sign in with GitHub để chuyển hướng đến GitHub, tại đây bạn sẽ đăng nhập bằng tài khoản GitHub của mình và đồng ý việc cấp quyền cho Grafana (Authorize Grafana).
Nhấp vào nút màu xanh Authorize your_github_organization.
Lưu ý: Hãy đảm bảo tài khoản GitHub của bạn là thành viên được phê duyệt của tổ chức và địa chỉ email Grafana trùng khớp với địa chỉ email GitHub của bạn. Nếu bạn cố gắng xác thực bằng tài khoản GitHub mà không phải là thành viên được phê duyệt của tổ chức, bạn sẽ nhận được thông báo Login Failed cho bạn biết Người dùng không phải là thành viên của một trong các tổ chức được yêu cầu.
Bây giờ bạn hãy đăng nhập bằng tài khoản Grafana hiện có của mình. Nếu tài khoản Grafana không tồn tại, Grafana sẽ tạo tài khoản người dùng mới với quyền Viewer, đảm bảo người dùng mới chỉ có thể sử dụng trang dashboards.
Để thay đổi quyền mặc định cho người dùng mới, tiến hành mở file cấu hình Grafana chính để thay đổi:
sudo nano /etc/grafana/grafana.ini
Tìm auto_assign_org_role
trong [users]
và xóa ;
ở đầu dòng.
Cài đặt auto_assign_org_role thành một trong các giá trị sau:
Viewer
: chỉ có thể sử dụng trang dashboards.Editor
: có thể sử dụng, sửa đổi và thêm trang dashboards.Admin
: toàn quyền sử dụng.
Trong bài viết này chúng tôi sẽ đặt thành Viewer
:
...
[users]
...
auto_assign_org_role = Viewer
...
Thực hiện lưu các thay đổi, đóng file và khởi động lại Grafana:
sudo systemctl restart grafana-server
Kiểm tra trạng thái của hệ thống:
sudo systemctl status grafana-server
Tương tự, trạng thái sẽ là active (running)
.
Ở bước cuối cùng này, bạn đã hoàn toàn cấu hình đầy đủ Grafana cho phép các thành viên trong tổ chức GitHub đăng ký và sử dụng cài đặt Grafana của bạn.
Nếu bạn gặp phải khó khăn khi thực hiện các thao tác hoặc cảm thấy chúng quá phức tạp, việc sử dụng VPS Vietnix có thể giúp đơn giản hóa quá trình này. Đội ngũ kỹ thuật túc trực 247 sẵn sàng hỗ trợ cài đặt ứng dụng theo nhu cầu của bạn. Bên cạnh đó, Vietnix còn có những lợi thế vượt trội so với các nhà cung cấp khác như:
- 11 năm kinh nghiệm hoạt động trong lĩnh vực giải pháp lưu trữ số.
- 50.000 khách hàng cá nhân, doanh nghiệp.
- 100.000 dịch vụ được kích hoạt.
- 97% khách hàng giới thiệu dịch vụ sau khi sử dụng.
- Thương hiệu Việt Nam xuất sắc 2022.
Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093.
- Email: sales@vietnix.com.vn.
Lời kết
Chắc hẳn đến đây, bạn đã có thể cấu hình, cài đặt và bảo mật Grafana trên Ubuntu 20.04, đồng thời cũng tìm hiểu được cách thức để các thành viên trong tổ chức của bạn xác thực thông qua GitHub. Chia sẻ bài viết đến mọi người để cùng nhau trau dồi thêm kiến thức, cũng như nếu có góp ý hay bất kì thắc mắc nào hãy để lại bình luận bên dưới.