Giới thiệu
Hướng dẫn cài đặt và cấu hình Logging System trên Kubernetes với Grafana Loki và FluentBit.
Mục lục
- Tổng quan
- Loki
- FluentBit
- Grafana
- Truy vấn logs
- Kết luận
Tổng quan
Hệ thống Log gồm ba thành phần chính:
- FluentBit thu thập logs và gửi logs tới Loki
- Loki là nơi lưu trữ logs
- Để xem logs ta dùng Grafana
Ta dùng Helm để cài các công cụ trên lên Kubernetes.
Loki
Tương tự như Prometheus dùng để lưu trữ metrics thì Loki dùng để lưu trữ logs.
Add Grafana Repo cho Loki:
helm repo add grafana https://grafana.github.io/helm-chartsTạo tệp tin values.yaml:
Ở trên ta cài Loki với cấu hình đơn giản cho môi trường dev, để triển khai cho môi trường product ta tham khảo ở đây Configure storage. Cài Loki:
helm -n observability install --create-namespace -f values.yaml loki grafana/lokiKiểm tra:
kubectl get pod -n observability
NAME READY STATUS RESTARTS AGE
loki-0 1/1 Running 0 50s
loki-gateway-18fi5ds94f-tgf4p 1/1 Running 0 50sFluentBit
Thêm Fluent Repo:
helm repo add fluent https://fluent.github.io/helm-charts Tạo tệp tin values.yaml cho FluentBit:
Ở tệp tin trên các bạn chú ý thuộc tính Labels {job="loki-collector"}. Cài FluentBit:
helm -n observability install -f values.yaml fluent-bit fluent/fluent-bitGrafana
Để xem được logs ta cần cài Grafana:
helm -n observability install -f values.yaml grafana grafana/grafanaKiểm tra:
kubectl get pod
NAME READY STATUS RESTARTS AGE
fluent-bit-dt37a 1/1 Running 0 50s
grafana-537adka914-38dc1 1/1 Running 0 50s
loki-0 1/1 Running 0 50s
loki-gateway-18fi5ds94f-tgf4p 1/1 Running 0 50sTruy cập Grafana:
kubectl -n observability port-forward svc/grafana 3000:80 Lấy mật khẩu Grafana:
kubectl get secret -n observability grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echoTruy vấn logs
Mở trình duyệt và truy cập localhost:3000 và nhập vào username là admin và password ở trên. Ở Menu ta chọn mục Connections → Data sources → Add new data source và chọn Loki. Điền vào như sau:
Mở mục HTTP headers và thêm vào Header X-Scope-OrgID với Value là 1.
Bấm Save. Sau đó ở Menu ta chọn mục Explore và điền vào giá trị {job="loki-collector"}.
Bấm Run query ta sẽ thấy logs.
Kết luận
Nếu hệ thống chỉ cần lưu trữ logs để kiểm tra lỗi hoặc log real-time mà không cần phân tích phức tạp thì có thể sử dụng bộ Grafana Loki để hệ thống gọn nhẹ. Trường hợp cần phân tích log và query phức tạp thì nên dùng bộ EFK (Elasticsearch + FluentBit + Kibana).
First AI Journey for DevOps:
- PromptOps: From YAML to AI
- The DevOps AI Advantage
- The AIOps Book