Friday, September 20, 2024

Giải pháp quản lý log Loki

-

Loki là một công cụ mạnh mẽ và ngày càng phổ biến trong việc thu thập và phân tích log. Bài viết này mình sẽ tìm hiểu một số kiến thức cơ bản về Loki nhé.

Loki là gì?

Loki là một hệ thống lưu trữ log được thiết kế đặc biệt cho các ứng dụng container hóa và các hệ thống phân tán. Nó được xây dựng để xử lý lượng lớn log với tốc độ cao và hiệu quả, đồng thời cung cấp khả năng truy vấn và phân tích dữ liệu log một cách linh hoạt. Loki hoạt động tốt nhất khi kết hợp với Grafana, một công cụ trực quan hóa dữ liệu phổ biến, để tạo ra các dashboard đẹp mắt và trực quan.

Tại sao chọn Loki?

  • Hiệu suất cao: Loki được thiết kế để xử lý lượng lớn log với tốc độ cao, nhờ vào việc sử dụng dạng database time series và nén dữ liệu hiệu quả.
  • Linh hoạt: Loki cho phép bạn lưu trữ các log có cấu trúc hoặc không cấu trúc, và hỗ trợ nhiều định dạng log khác nhau.
  • Truy vấn mạnh mẽ: Ngôn ngữ truy vấn LogQL của Loki cung cấp cho bạn khả năng thực hiện các truy vấn phức tạp để tìm kiếm và phân tích dữ liệu log.
  • Tích hợp với Grafana: Loki tích hợp sẵn với Grafana, cho phép bạn tạo các dashboard trực quan để theo dõi và phân tích log.
  • Chi phí thấp: Loki là một dự án mã nguồn mở, và có thể chạy trên các máy chủ có cấu hình thấp.

Các thành phần chính của Loki.

  • Promtail: Là một agent thu thập log từ các nguồn khác nhau (container, hệ thống file, v.v.) và gửi đến Loki.
  • Loki server: Nhận và lưu trữ các log, tạo các chỉ mục để tìm kiếm nhanh chóng.
  • Grafana: Công cụ trực quan hóa, cho phép bạn tạo các dashboard để xem và phân tích log.

Các trường hợp sử dụng điển hình.

  • Giám sát log của ứng dụng container: Loki là một lựa chọn tuyệt vời để theo dõi log của các ứng dụng chạy trong Kubernetes hoặc Docker.
  • Phân tích lỗi: Loki giúp bạn nhanh chóng tìm ra nguyên nhân gốc rễ của các vấn đề bằng cách tìm kiếm các log liên quan.
  • Theo dõi hiệu suất: Bạn có thể sử dụng Loki để theo dõi hiệu suất của các ứng dụng và dịch vụ.
  • Tìm kiếm log: Loki cung cấp một giao diện tìm kiếm mạnh mẽ để bạn tìm thấy các log bạn cần một cách nhanh chóng.

Lợi ích khi sử dụng Loki.

  • Nâng cao khả năng quan sát hệ thống: Loki giúp bạn hiểu rõ hơn về hệ thống của mình bằng cách cung cấp một cái nhìn tổng quan về các log.
  • Phát hiện và khắc phục sự cố nhanh hơn: Loki giúp bạn nhanh chóng xác định và khắc phục các vấn đề khi chúng xảy ra.
  • Tối ưu hóa hiệu suất: Loki có thể giúp bạn xác định các bottleneck và cải thiện hiệu suất của hệ thống.
  • Tuân thủ các quy định: Loki có thể giúp bạn lưu trữ và quản lý log theo các quy định về bảo mật và tuân thủ.

Ví dụ về việc sử dụng Loki để theo dõi log file.

Hãy tạo 1 file docker-compose.yml với nội dung dưới.

version: '3'

services:
  loki:
    image: grafana/loki:latest
    ports:
      - "3100:3100"
    command: -config.file=/etc/loki/local-config.yaml

  promtail:
    image: grafana/promtail:latest
    volumes:
      - /var/log:/var/log
      - ./promtail-config.yml:/etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml

  grafana:
    image: grafana/grafana:latest
    ports:
      - "3000:3000"
    depends_on:
      - loki

Tạo file promtail-config.yml với nội dung sau:

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/auth.log

Chạy stack này.

docker-compose up -d

Kết quả.

shell> docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED         STATUS         PORTS                                       NAMES
a1fd43fdf15e   grafana/grafana:latest    "/run.sh"                6 seconds ago   Up 4 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   loki-grafana-1
972a03b77b2b   grafana/loki:latest       "/usr/bin/loki -conf…"   8 seconds ago   Up 5 seconds   0.0.0.0:3100->3100/tcp, :::3100->3100/tcp   loki-loki-1
cf46e90a1ccb   grafana/promtail:latest   "/usr/bin/promtail -…"   8 seconds ago   Up 5 seconds

Lưu ý:

  • Đảm bảo rằng bạn có quyền truy cập vào /var/log/auth.log từ container promtail.
  • Để truy cập Grafana, mở trình duyệt và điều hướng đến http://localhost:3000. Mặc định, tên người dùng là admin và mật khẩu là admin.

Thêm Datasource.

Chọn Loki.

Điền thông tin url của Loki, ví dụ http://loki:3100 và bấm Save & test. Nếu thêm datasource thành công hãy bấm vào Explore data.

Chúng ta lựa chọn Label filter với job là varlog.

Bấm vào Run querry để nhận logs.

Nếu bạn cảm thấy ổn rồi, có thể thêm nó như 1 Dashboard.

Bấm Open

Ví dụ về việc sử dụng Loki theo dõi log từ các server khác.

Để triển khai Promtail trên 2 server (10.237.7.71 và 10.237.7.72) và đẩy log về server Grafana/Loki (10.237.7.81), bạn cần thực hiện các bước sau:

  • Cài đặt Docker và Docker Compose trên cả hai server: Đảm bảo rằng Docker và Docker Compose đã được cài đặt trên cả hai server (10.237.7.71 và 10.237.7.72).
  • Tạo Docker Compose File trên mỗi Server: Tạo một file docker-compose.yml trên mỗi server với nội dung sau, thay đổi url trong phần clients của promtail-config.yml để chỉ đến server Loki (10.237.7.81).

Docker Compose File (docker-compose.yml) cho Server 10.237.7.71 và 10.237.7.72:

version: '3'

services:
  promtail:
    image: grafana/promtail:latest
    volumes:
      - /var/log:/var/log
      - ./promtail-config.yml:/etc/promtail/config.yml
    command: -config.file=/etc/promtail/config.yml

Nội dung của promtail-config.yml trên cả hai server:

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

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

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      host: <Tên hoặc địa chỉ IP của server này>
      __path__: /var/log/auth.log

Thay thế <Tên hoặc địa chỉ IP của server này> với tên hoặc địa chỉ IP cụ thể của mỗi server (10.237.7.71 và 10.237.7.72).

Khởi động Promtail trên mỗi Server: Sau khi đã tạo và cấu hình docker-compose.yml và promtail-config.yml, chạy lệnh sau trên mỗi server để khởi động Promtail:

docker-compose up -d

Kiểm tra và Truy vấn Log trên Grafana: Đảm bảo rằng bạn đã cấu hình Grafana để kết nối với Loki và bắt đầu truy vấn log từ các server.

Lưu ý: Đảm bảo rằng mạng và bảo mật giữa các server được cấu hình đúng cách để cho phép giao tiếp.
Bây giờ vào Grafana thay vì chọn job thì bạn hãy lựa chọn là host, bạn sẽ thấy 2 server 10.237.7.71 và 10.237.7.72 xuất hiện.

Thử Querry 10.237.7.71 ta có kết quả.

Kết luận.

Loki là một giải pháp mạnh mẽ và linh hoạt cho việc thu thập và phân tích log. Nếu bạn đang tìm kiếm một công cụ để quản lý log của các ứng dụng container hóa hoặc các hệ thống phân tán, thì Loki là một lựa chọn đáng cân nhắc.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories