Thiết lập hệ thống ghi log phân tán với Grafana, Loki và Promtail

Giới thiệu các thành phần

Hệ thống thu thập và hiển thị log phân tán có thể được xây dựng dễ dàng nhờ bộ ba công cụ mã nguồn mở: Grafana, LokiPromtail. Mỗi thành phần đảm nhận một vai trò riêng:

  • Loki: Là dịch vụ lưu trữ và xử lý truy vấn log theo thời gian thực. Được phát triển bởi Grafana Labs, Loki chuyên tối ưu cho dữ liệu nhật ký với chi phí lưu trữ thấp và hiệu suất cao.
  • Promtail: Đóng vai trò là agent chạy trên máy chủ nguồn, nhiệm vụ chính là đọc file log từ ổ đĩa và gửi đến Loki để lưu trữ.
  • Grafana: Giao diện trực quan hóa dữ liệu, cho phép truy vấn, lọc và biểu diễn log dưới dạng bảng hoặc biểu đồ thời gian.

Cài đặt trên môi trường Windows

Dưới đây là hướng dẫn thiết lập nhanh trên máy cục bộ sử dụng hệ điều hành Windows.

1. Cài đặt Grafana

Tải bản cài đặt phù hợp tại trang chủ:

https://grafana.com/grafana/download?platform=windows

Sau khi giải nén và hoàn tất cài đặt, dịch vụ sẽ tự động khởi động. Truy cập giao diện quản trị qua trình duyệt:

http://localhost:3000

Tài khoản mặc định: admin/admin.

2. Cấu hình Loki (dịch vụ lưu trữ log)

Tải bản phát hành mới nhất từ GitHub:

https://github.com/grafana/loki/releases

Giải nén và tạo file cấu hình loki-local-config.yaml trong cùng thư mục với file thực thi loki-windows-amd64.exe.

auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 5m
  chunk_retain_period: 30s
  max_transfer_retries: 0

schema_config:
  configs:
    - from: 2020-06-22
      store: boltdb
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 168h

storage_config:
  boltdb:
    directory: ./data/index
  filesystem:
    directory: ./data/chunks

limits_config:
  enforce_metric_name: false
  reject_old_samples: true
  reject_old_samples_max_age: 168h

chunk_store_config:
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: false
  retention_period: 0s

Tạo thư mục data để Loki lưu dữ liệu. Khởi động dịch vụ bằng lệnh:

loki-windows-amd64.exe --config.file=loki-local-config.yaml

3. Cài đặt Promtail (agent thu thập log)

Tải và giải nén Promtail từ trang release tương tự như Loki. Tạo file promtail-config.yaml bên cạnh file thực thi.

server:
  http_listen_port: 9080

positions:
  filename: ./positions.yaml

clients:
  - url: http://localhost:3100/loki/api/v1/push

scrape_configs:
  - job_name: application-logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: app_logs
          env: development
          __path__: D:\Logs\*.log
  - job_name: service-logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: service_logs
          __path__: C:\Services\*.txt

Trong cấu hình này, Promtail sẽ theo dõi các file log có đuôi .log trong thư mục D:\Logs và file .txt trong C:\Services. Các nhãn (labels) giúp phân loại log khi truy vấn.

Khởi động Promtail:

promtail-windows-amd64.exe --config.file=promtail-config.yaml

Kết nối và xem log trong Grafana

Đăng nhập vào Grafana, vào Configuration > Data Sources và thêm nguồn mới. Chọn Loki, điền URL:

http://localhost:3100

Lưu cấu hình. Sau đó, chuyển sang tab Explore để bắt đầu truy vấn log. Sử dụng biểu thức như:

{job="app_logs"}

để lọc các bản ghi theo nhãn đã định nghĩa.

Thẻ: Grafana Loki Promtail logging monitoring

Đăng vào ngày 25 tháng 6 lúc 01:31