Giới Thiệu
Một trong những vấn đề quan trọng sau khi phát hành sản phẩm phần mềm môi trường là phát hiện lỗi ngoại lệ bất ngờ, từ đó gửi cảnh báo sớm đến các đội liên quan để khắc phục sự cố vận hành, đảm bảo chất lượng dịch vụ và tránh thời gian ngừng hoạt động. Grafana được phát triển để giúp chúng ta vận hành dịch vụ một cách trơn tru và đánh giá các vấn đề tiềm ẩn như: khối lượng yêu cầu quá cao, lỗi hết bộ nhớ (Out of Memory), đầy đĩa (full disk), hoặc thậm chí là tỷ lệ yêu cầu từ các khu vực trên toàn cầu.
Grafana Là Gì
Grafana là phần mềm mã nguồn mở cho phép bạn truy vấn, trực quan hóa, cảnh báo và khám phá các chỉ số, nhật ký và dấu vết ở bất kỳ đâu mà chúng được lưu trữ. Grafana OSS cung cấp cho bạn công cụ để biến dữ liệu từ cơ sở dữ liệu thời gian (TSDB) thành các biểu đồ và hình ảnh có giá trị. Grafana tích hợp 153 nguồn dữ liệu kết nối, mang lại sự tiện lợi cho người dùng. Trong bài viết này, tôi sẽ hướng dẫn chi tiết cách thiết lập, sử dụng và tối ưu hóa các bảng điều khiển của bạn.
Cài Đặt Grafana
Trong bài viết này, tôi sẽ triển khai Grafana và sử dụng Helm Chart một cách nhanh chóng. Vì công việc hiện tại của tôi liên quan đến DevOps, tôi sẽ sử dụng Helm. Bạn cũng có thể sử dụng Docker Images hoặc triển khai trên K8S.
Yêu Cầu
Trước khi cài đặt, bạn cần đáp ứng các công cụ sau:
- Cài đặt một máy chủ Kubernetes trên máy của bạn.
- Cài đặt phiên bản ổn định mới nhất của Helm.
- Cài đặt phiên bản mới nhất của Istio mesh.
Cài Đặt Grafana Sử Dụng Helm
Khi bạn cài đặt Grafana bằng cách sử dụng Helm, bạn sẽ hoàn thành các nhiệm vụ sau:
- Thiết lập kho Helm của Grafana, nơi cung cấp một không gian để cài đặt Grafana.
- Triển khai Grafana bằng Helm, cài đặt Grafana vào một namespace.
- Truy cập Grafana, cung cấp các bước để đăng nhập vào Grafana.
Thiết Lập Kho Helm Của Grafana
- Thêm kho sử dụng lệnh sau:
helm repo add grafana https://grafana.github.io/helm-charts
- Xác nhận rằng kho đã được thêm thành công bằng lệnh:
helm repo list
- Chạy lệnh để cập nhật kho và tải về các chart Helm mới nhất của Grafana:
helm repo update
Triển Khai Chart Helm Của Grafana
Chúng ta có thể bắt đầu triển khai trên cụm Kubernetes của bạn. Để quản lý tài nguyên dễ dàng, K8S sử dụng namespaces. Do đó, chúng ta cần tạo một namespace. Trong ví dụ này, tôi sẽ sử dụng namespace 'monitoring'.
- Để tạo một namespace, chạy lệnh sau:
kubectl create namespace monitoring
- Chạy lệnh sau để triển khai Helm Grafana Chart trong namespace của bạn. Đừng quên thêm namespace 'monitoring'. Nếu không khai báo namespace, namespace mặc định sẽ được sử dụng.
helm install grafana grafana/grafana -n monitoring
- Kiểm tra trạng thái triển khai:
helm list -n monitoring
Truy Cập Grafana
Để truy cập Grafana qua trình duyệt web, tôi sẽ sử dụng một tên miền. Để thực hiện điều này, tôi sử dụng tệp dịch vụ ảo của Istio. Tạo một tệp có tên 'garafana-vs.yaml'.
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: grafana
namespace: monitoring
spec:
hosts:
- "grafana.monitoring.co"
gateways:
- monitoring-api-gateway
http:
- match:
- uri:
prefix: /
route:
- destination:
host: grafana.monitoring.svc.cluster.local
port:
number: 3000
Giải thích mã:
- Tôi đã chuẩn bị một tên miền gọi là https://grafana.monitoring.co
- Tôi sử dụng AWS Route53 và dịch vụ ALB để định tuyến lưu lượng qua monitoring-api-gateway
- Khai báo điểm đến, tên máy chủ grafana là tên dịch vụ, monitoring là namespace và cổng mặc định của dịch vụ là 3000.
Bước tiếp theo, sử dụng lệnh sau để áp dụng tệp cấu hình trên. Đừng quên namespace:
kubectl apply <path/garafana-vs.yaml> -n monitoring
Truy cập trình duyệt web và xem kết quả. Tài khoản và mật khẩu mặc định sẽ được hiển thị khi Grafana được cài đặt thành công. Sử dụng chúng để đăng nhập.
Giao Diện Chính Của Grafana
Mở menu thả xuống bên dưới và chọn Kết nối --> Thêm kết nối mới.
Grafana hỗ trợ lên tới 153 nguồn dữ liệu tùy thuộc vào nhu cầu của bạn. Ở đây, tôi sử dụng nguồn dữ liệu Prometheus và AWS Cloudwatch.
Cấu hình các điểm cuối bổ sung và kiểm tra kết nối.
Cuối cùng, thiết kế bảng điều khiển theo nhu cầu người dùng. Đây là một ví dụ về số lượng mã trạng thái thông qua ALB mà tôi đã xây dựng.
Không ai có đủ thời gian để theo dõi bảng điều khiển 24/24. Grafana hỗ trợ thiết lập cảnh báo đến các dịch vụ để chủ động kiểm tra các dịch vụ. Ví dụ, gửi cảnh báo qua email, slack, teams, discord,... Bạn chỉ cần cấu hình ngưỡng mà bạn nghĩ rằng một lỗi nên xảy ra, và để Grafana cảnh báo giải quyết mọi thứ. Bạn cũng có thể cấu hình lại cảnh báo mà bạn muốn thông báo để dễ dàng nắm bắt nội dung chính.
Bảo Mật
Đối với bất kỳ ứng dụng nào, bảo mật luôn là ưu tiên hàng đầu. Rò rỉ dữ liệu nhạy cảm luôn là mối quan tâm của các chuyên gia bảo mật. Trong bài viết này, tôi sẽ chia sẻ một số giải pháp để tăng cường bảo mật, tránh rò rỉ dữ liệu.
Grafana tổ chức phân quyền từ cao đến thấp: Tổ Chức --> Nhóm --> Người Dùng. Khi tạo người dùng mới, cần phân quyền phù hợp theo các dịch vụ mà người dùng đó quản lý.
Một số quy tắc cần tuân thủ khi người dùng sử dụng Grafana:
- Không giao quyền admin cho người dùng trên toàn bộ bảng điều khiển. Chỉ nên có quyền Viewer.
- Bảng điều khiển không thể được đặt bên ngoài thư mục mặc định.
- Có thể sử dụng LDAP để đăng nhập hoặc thêm lớp bảo mật Oauth2.
- Sử dụng chiến lược phân quyền nhỏ nhất cho một người dùng.
KẾT THÚC
Trong bài viết tiếp theo, tôi sẽ hướng dẫn bạn thiết lập hệ thống dịch vụ kiểm tra sức khỏe theo thời gian thực. Cảm ơn bạn đã đọc bài viết và nếu bạn thấy thú vị, hãy theo dõi nó. Nếu bạn có bất kỳ câu hỏi nào cần được giải đáp, hãy để lại ý kiến bên dưới.
source: viblo