1.Tổng Quan Về Loki
Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu về cách để thu thập logs trong Kubernetes sử dụng Loki và Grafana. Loki là một hệ thống tích hợp log được lấy cảm hứng từ Promethues.
Chúng tôi tin rằng nó dễ trong việc vận hành trong môi trường Kubernetes, bằng việc không đánh Index phần nội dung của log, thay vào đó nó chỉ đặt tên nhãn ( label) cho các log.
Giống như trong môi trường Cloud-native, Promethues là một trong những giải pháp phổ biến cho hoạt động giám sát hệ thống. Bạn có thể sử dụng lại các nhãn cùng tên mà bạn đã đặt trong Promethues. Ví dụ, trong Kubernetes các metadata ( tạm dịch: Siêu dữ liệu) đang được đánh nhãn theo đối tượng ( Object label) có thể sử dụng những nhãn này cho cả luôn Loki. Nếu như bạn đang sử dụng Grafana cho việc tạo Dashboard và giám sát, việc dùng Loki sẽ giúp bạn có thể tích hợp cả 2 tính năng là vừa Logging vừa Monitoring.
2.Yêu cầu:
- Bạn phải có sẵn một Cluster Kubernetes Kapsule
- Có sẵn công cụ kubectl
- Và cuối cùng là phải có sẵn helm trên hệ thống k8s.
3.Cài đặt Loki
3.1 Thêm Repositories
Ứng dụng loki không có sẵn mặc định trong Repositories của Helm. Chính vì vậy, chúng ta sẽ thêm nó vào và tiến hành cập nhật lại heml.
$ helm repo add loki https://grafana.github.io/loki/charts
"loki" has been added to your repositories
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "loki" chart repository
[..]
$ helm search repo loki
NAME CHART VERSION APP VERSION DESCRIPTION
loki/loki 0.31.1 v1.6.0 Loki: like Prometheus, but for logs.
loki/loki-stack 0.41.1 v1.6.0 Loki: like Prometheus, but for logs.
loki/fluent-bit 0.3.1 v1.6.0 Uses fluent-bit Loki go plugin for gathering lo...
loki/promtail 0.25.1 v1.6.0 Responsible for gathering logs and sending them...
3.2 Persistence Volumes
Khi cài đặt Loki với Helm, chúng ta sẽ cần bật tính năng Persistence Volumes khi sử dụng cho hệ thống Kubernetes.
loki.persistence.enabled
: trueloki.persistence.size
: 100Gi
Chúng ta sẽ sử dụng storage class mặc định của Kapsule có tên “scw-bsdd” để tạo khối volume.
Chạy câu lệnh sau để tiến hành cài đặt:
$ helm install loki-stack loki/loki-stack \
--create-namespace \
--namespace loki-stack \
--set promtail.enabled=true,loki.persistence.enabled=true,loki.persistence.size=100Gi
3.3 Retention Logs
Nếu như bạn có dự định sẽ dùng Loki trên môi trường Production, phải đảm bảo là bạn phải thiết lập tính năng retention để tránh tình trạng bị đầy dữ liệu. Ví dụ, nếu muốn giữ log lại 30 ngày, những log vượt quá 30 ngày sẽ bị xóa đi, thì hãy thiết lập retention là 30.
config.table_manager.retention_deletes_enabled
: trueconfig.table_manager.retention_period
: 720h
3.4 Cài đặt loki với Helm
Sử dụng Helm, cài đặt Grafana trong cùng Namespace của Loki, bạn cũng nên bật tính năng persistence cho grafana luôn.
persistence.enabled
: truepersistence.type
: pvcpersistence.size
: 10Gi
$ helm repo add grafana https://grafana.github.io/helm-charts
$ helm install loki-grafana grafana/grafana \
--set persistence.enabled=true,persistence.type=pvc,persistence.size=10Gi \
--namespace=loki-stack
3.5 Kiểm tra lại block device
$ kubectl get pv,pvc -n loki-stack
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
persistentvolume/pvc-53a60678-f132-4e62-b568-3518a20d6bd3 10Gi RWO Delete Bound loki-stack/loki-grafana scw-bssd 16s
persistentvolume/pvc-8d605c6a-154c-4a4f-9dc0-7edce1825106 100Gi RWO Delete Bound loki-stack/storage-loki-stack-0 scw-bssd 5m29s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/loki-grafana Bound pvc-53a60678-f132-4e62-b568-3518a20d6bd3 10Gi RWO scw-bssd 17s
persistentvolumeclaim/storage-loki-stack-0 Bound pvc-8d605c6a-154c-4a4f-9dc0-7edce1825106 100Gi RWO scw-bssd 5m30s
Now that both Loki and Grafana are installed in the cluster, check if the pods are correctly running:
$ kubectl get pods -n loki-stack
NAME READY STATUS RESTARTS AGE
loki-grafana-75f788cb85-xqchj 1/1 Running 0 4m32s
loki-stack-0 1/1 Running 0 17m
[..]
loki-stack-promtail-4nnkd 1/1 Running 0 17m
[..]
3.6 Expose Port với port-forward
Để có thể kết nối được với Grafana để đặt user/password, chúng ta sử dụng port-forward như sau:
$ kubectl get secret --namespace loki-stack loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
8DaJk0m1gmS4t1OgXkpgZXs46PaUQn5iydvsZS7g
$ kubectl port-forward --namespace loki-stack service/loki-grafana 3000:80
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
Truy cập giao diện web của Grafana http://localhost:3000 , màn hình đăng nhập sẽ như sau:
Thêm Source của Loki vào Grafana ( http://loki-stack.loki-stack:3100)
Bây giờ, bạn có thể truy cập được log trong Kuberntes.
4. Kết bài
Chúng ta vừa cài đặt xong phần ứng dụng Loki, giờ đây tất cả Logs của các Pods sẽ được lưu trữ trong Loki và bạn có thể xem, truy vấn đến ứng dụng của bạn trong Grafana. Để tìm hiểu sâu hơn về các ngôn ngữ truy vấn của Loki, bạn có thể tham khảo tại đây.
Chúc các bạn thành công !!!
Nguồn:
Nhấn Subcribe để nhận thêm nhiều bài viết mới Like Facebook
[maxbutton id=”2″ ] [maxbutton id=”3″ ]
Đăng ký liền tay Nhận Ngay Bài Mới
Subscribe ngay
Cám ơn bạn đã đăng ký !
Lỗi đăng ký !
Add Comment