No menu items!
No menu items!
More

    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.

    Bài viết gần đây

    spot_img

    Related Stories

    Leave A Reply

    Please enter your comment!
    Please enter your name here

    Đăng ký nhận thông tin bài viết qua email