- vừa được xem lúc

[Logging] Sử dụng grafana xem log từ file

0 0 25

Người đăng: Open Dev

Theo Viblo Asia

  • Như bài viết trước mình đã có hướng dẫn sử dụng ZapGolang để write log ra file, anh em xem lại đây nhé.
  • Vấn đề là log ra file chỉ để lưu lại thôi, chứ gặp vấn để trên môi trường production thì anh/em xem kiểu gì:
    • Mở từng file ra xem ak
    • Copy tất cả các file ra visual studio code rồi search all.
    • Đưa lên cloud-watch của aws, cách này hay đấy, hihi mà tiền đâu.
  • Theo như mình biết thì hiện tại vẫn có 1 số công ty sài cách mở file ra xem. Má nó chuối thôi rồi, nên tốt nhất là centralized lại, sử dụng Elastic-Logstash-Kibana (elk) hoặc Grafana-Loki-Promtail.
  • Ở bài viết này mình hướng dẫn cách cài đặt và view đơn giản sử dụng Grafana-Loki-Promtail, nếu anh/em cần thì mình làm demo đơn giản cái ELK sau.

Môi trường

  1. Cài docker-compose trên linux, anh em run từng lệnh một:
  • DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
  • mkdir -p $DOCKER_CONFIG/cli-plugins
  • curl -SL https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-(unames)(uname -s)-(uname -m) -o $DOCKER_CONFIG/cli-plugins/docker-compose
  • chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
  • sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
  • docker compose version => kết quả thế này là thành công:
  1. Anh/em có thể tham khảo thêm cách cài ở đây

Cài đặt

1. Tạo một file docker-compose.yml:

version: "3.3"
networks: monitor: driver: bridge

=> Sử dụng chung một network để các container grafana, loki và promtail có thể dễ dàng giao tiếp với nhau.

2. Trong file yml tạo 1 block services:

services:

=> block services này là để add các image cũng như để tạo thành container sau khi run.

3. Add grafana, add trong block services:

grafana: restart: always image: grafana/grafana:latest container_name: grafana ports: - "3000:3000" volumes: - $PWD/grafana:/var/lib/grafana networks: - monitor
  • $PWD: là đường dẫn hiện tại, ví dụ hiện tại mình đang ở folder monitoring thì khi run pwd sẽ ra full đường dẫn.

4. Add loki:

  • Tạo một file loki-config.yaml, file này mình lấy mặc định nha:
auth_enabled: false server: http_listen_port: 3100 grpc_listen_port: 9096 common: path_prefix: /tmp/loki storage: filesystem: chunks_directory: /tmp/loki/chunks rules_directory: /tmp/loki/rules replication_factor: 1 ring: instance_addr: 127.0.0.1 kvstore: store: inmemory schema_config: configs: - from: 2020-10-24 store: boltdb-shipper object_store: filesystem schema: v11 index: prefix: index_ period: 24h ruler: alertmanager_url: http://localhost:9093

=> file này phải được đặt cùng cấp với file docker-compose.yml.

  • Add loki trong block services:
loki: image: grafana/loki:2.1.0 container_name: loki restart: unless-stopped ports: - "3100:3100" command: -config.file=/etc/loki/local-config.yaml volumes: - ./loki-config.yaml:/etc/loki/config.yaml networks: - monitor
  • ./loki-config.yaml:/etc/loki/config.yaml: là sẽ copy file loki-config.yaml vào bên trong container loki.

5. Add promtail:

  • Tạo một file promtial-config.yml, file này mình lấy mặc định nha:
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: demo pipeline_stages: static_configs: - targets: - localhost labels: job: demo __path__: /var/log/demo/*

=> tạo một job demo, sẽ collector file log từ trong folder /var/log/demo/, folder này nằm trong container promtail nha. Khi start container mình sẽ mount một folder nào đó trên local máy vào folder này.

  • add promtail vào block services:
promtail: image: grafana/promtail:latest container_name: promtail restart: unless-stopped volumes: - /home/ducnp/demo/logs:/var/log/demo - ./promtial-config.yml:/etc/promtail/config.yml command: -config.file=/etc/promtail/config.yml networks: - monitor

=> trong block volumes: mình sẽ mount folder /home/ducnp/demo/logs trên local máy vào* /var/log/demo* folder bên trong container.

Run và Test

  1. Tại root của folder chứ file docker-compose.yml:
docker-compose up
  1. Run ok không có lỗi gì xuất hiện, mở web:
http://localhost:3000
  • Sau khi mở web lên thì cần nhập user/pass mặc định: admin/admin.
  • Đổi mật khẩu mới theo ý muốn của anh/em.
  1. Add datasource loki trên grafana và test:
  • Anh em vào youtube của mình xem nha, chỗ này viết dài quá nên mình quay video cho khoẻ, link.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Triển khai EFK Stack trên Kubernetes

EFK stack on K8S. Giới thiệu. Một hệ thống có thể chạy nhiều dịch vụ hoặc ứng dụng khác nhau, vì vậy việc. theo dõi hệ thống là vô cùng cần thiết.

0 0 72

- vừa được xem lúc

[Spring] - Spring logback config

Trong spring boot có nhiều cách để cấu hình logging. Với mình thì mình thường làm là config trong file aplication.properties hay application.yml hoặc file logback.

0 0 42

- vừa được xem lúc

Ghi Log Messages trong quá trình phát triển hệ thống, ứng dụng phần mềm

Lang thang vào viblo xem mấy thông báo 'bài viết XYZ của bạn đã được upvote' hay 'Trần X, Phạm Y... đã theo dõi bạn' mình tình cờ thấy được thông báo này của Viblo. Và chắc chắn rồi, đầu năm người Việ

0 0 33

- vừa được xem lúc

[K8S] Phần 12 - Logging trên k8s - section1

Lời tựa. Tiếp tục series về Kubernetes, mình sẽ giới thiệu với các bạn về một chủ đề rất quan trọng đó là Logging.

0 0 33

- vừa được xem lúc

[K8S] Phần 14 - Logging trên k8s sử dụng ELK - section3

Lời tựa. Trong 2 bài viết trước mình đã tự đặt ra bài toán logging cho hệ thống cũng như xây dựng xong môi trường gồm các service opensource và tự build.

0 0 49

- vừa được xem lúc

[K8S] Phần 13 - Logging trên k8s sử dụng ELK - section2

Lời tựa. Tiếp tục về chủ đề logging trên Kubernetes, bài viết này sẽ đi vào xây dựng môi trường và thiết kế giải pháp trước khi xây dựng hệ thống logging ELK.

0 0 35