Thursday, November 21, 2024

Triển khai Prometheus, Pushgateway và Grafana bằng Docker Compose

-

  • Docker là gì: Docker là một nền tảng mã nguồn mở giúp bạn tự động triển khai, quản lý và chạy ứng dụng trong các container. Container là một hình thức nhẹ của ảo hóa, cho phép bạn đóng gói ứng dụng và tất cả các phụ thuộc của nó vào một gói đồng nhất. Điều này giúp đơn giản hóa quá trình phát triển, triển khai và quản lý ứng dụng, đồng thời đảm bảo rằng ứng dụng sẽ chạy đúng cách trên mọi môi trường.
  • Prometheus là gì: Prometheus là một hệ thống theo dõi và cảnh báo mã nguồn mở, được sử dụng chủ yếu để thu thập và lưu trữ dữ liệu các metric từ các hệ thống. Nó hỗ trợ ngôn ngữ truy vấn PromQL để truy vấn dữ liệu, và có khả năng theo dõi cảnh báo dựa trên các điều kiện xác định.
  • Pushgateway là gì: Pushgateway là một dịch vụ trung gian được sử dụng để đơn giản hóa việc thu thập metric từ các công việc không thể tự chủ động gửi metric đến Prometheus. Thay vì làm cho Prometheus “pull” metric từ các service, Pushgateway cho phép các service “đẩy” metric của chúng đến Pushgateway, sau đó Prometheus “pulls” từ Pushgateway. Điều này thích hợp cho các công việc ngắn hạn, có thể không hoạt động liên tục, và không thể hoặc không muốn lưu giữ metric trong thời gian dài.
  • Grafana là gì: Grafana là một công cụ giúp hiển thị và theo dõi dữ liệu từ nhiều nguồn khác nhau, bao gồm cả Prometheus. Nó cung cấp giao diện đồ họa đẹp và mạnh mẽ để tạo biểu đồ, đồ thị và bảng điều khiển để giúp theo dõi hiệu suất hệ thống và ứng dụng.
  • Tại sao triển khai chúng trên Docker Compose:
    • Dễ quản lý: Docker Compose cho phép bạn định nghĩa và quản lý một nhóm các container ứng dụng cùng một lúc.
    • Dễ triển khai: Điều này giúp đơn giản hóa quá trình triển khai các hệ thống phức tạp, đảm bảo tính nhất quán giữa các môi trường khác nhau.
    • Dễ tái sử dụng: Docker Compose cung cấp một cách dễ dàng để chia sẻ và triển khai cấu hình hệ thống của bạn, giúp đội phát triển và quản trị hệ thống làm việc chặt chẽ hơn.
    • Dễ mở rộng: Bạn có thể dễ dàng thêm các dịch vụ hoặc điều chỉnh cấu hình thông qua Docker Compose, giúp bạn linh hoạt trong việc mở rộng hoặc điều chỉnh hệ thống của mình.

Dưới đây là một ví dụ về Docker Compose file để triển khai Prometheus, Pushgateway và Grafana. Đảm bảo bạn đã cài đặt Docker và Docker Compose trước khi sử dụng đoạn manifest này.

Tạo một file docker-compose.yml với nội dung sau:

version: '3'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus:/etc/prometheus
    command:
      - --config.file=/etc/prometheus/prometheus.yml
    networks:
      - monitoring

  pushgateway:
    image: prom/pushgateway
    ports:
      - "9091:9091"
    networks:
      - monitoring

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    networks:
      - monitoring

networks:
  monitoring:
    driver: bridge

Tạo thư mục prometheus trong thư mục chứa docker-compose.yml. Trong thư mục prometheus, tạo một file prometheus.yml với nội dung sau:

global:
  scrape_interval:     15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'pushgateway'
    static_configs:
      - targets: ['pushgateway:9091']

Lưu ý rằng trong prometheus.yml, targets phải là địa chỉ của các service trong Docker Compose. Do đó, pushgateway:9091 là đúng vì Pushgateway đang chạy trong cùng mạng Docker.

Sau khi tạo xong các file, mở terminal trong thư mục chứa docker-compose.yml và chạy lệnh sau để bắt đầu các service:

$ docker-compose up -d
[+] Running 28/28
 ⠿ prometheus Pulled                                                                                                                                                                                               73.9s
   ⠿ f8e22ccd8ad8 Pull complete                                                                                                                                                                                    12.6s
   ⠿ ce5cd6bb9a56 Pull complete                                                                                                                                                                                    57.5s
   ⠿ 04d12a144c6b Pull complete                                                                                                                                                                                    60.5s
   ⠿ 9a5555141b82 Pull complete                                                                                                                                                                                    61.5s
   ⠿ 07e931646da3 Pull complete                                                                                                                                                                                    62.4s
   ⠿ fe7efe91c254 Pull complete                                                                                                                                                                                    63.1s
   ⠿ 08be134b67e3 Pull complete                                                                                                                                                                                    63.7s
   ⠿ a836be3b6eeb Pull complete                                                                                                                                                                                    64.5s
   ⠿ fadcaad2cfd9 Pull complete                                                                                                                                                                                    65.1s
   ⠿ fd09517fa2d8 Pull complete                                                                                                                                                                                    65.8s
   ⠿ 8215e06ac3f8 Pull complete                                                                                                                                                                                    66.4s
 ⠿ pushgateway Pulled                                                                                                                                                                                              20.5s
   ⠿ 2abcce694348 Pull complete                                                                                                                                                                                     7.8s
   ⠿ 151551e7d8a1 Pull complete                                                                                                                                                                                     9.1s
   ⠿ 9ee22c0b68a0 Pull complete                                                                                                                                                                                    12.6s
   ⠿ 815d664aac95 Pull complete                                                                                                                                                                                    13.5s
 ⠿ grafana Pulled                                                                                                                                                                                                 127.9s
   ⠿ 96526aa774ef Pull complete                                                                                                                                                                                    48.6s
   ⠿ c3f80c6ea12f Pull complete                                                                                                                                                                                    49.3s
   ⠿ f019ff6ad76f Pull complete                                                                                                                                                                                    50.9s
   ⠿ 6f1334162dbd Pull complete                                                                                                                                                                                    59.8s
   ⠿ c5a70bb6423c Pull complete                                                                                                                                                                                    60.8s
   ⠿ c10a359f79c5 Pull complete                                                                                                                                                                                    61.7s
   ⠿ b705a9706bbc Pull complete                                                                                                                                                                                   111.2s
   ⠿ 544d3744fe87 Pull complete                                                                                                                                                                                   119.3s
   ⠿ 039ac7918135 Pull complete                                                                                                                                                                                   119.9s
   ⠿ 876939047d48 Pull complete                                                                                                                                                                                   120.5s
[+] Running 4/4
 ⠿ Network golang_monitoring       Created                                                                                                                                                                          0.3s
 ⠿ Container golang-prometheus-1   Started                                                                                                                                                                         10.0s
 ⠿ Container golang-grafana-1      Started                                                                                                                                                                          9.0s
 ⠿ Container golang-pushgateway-1  Started                                                                                                                                                                          9.9s

Xác nhận các container trong stack đã triển khai thành công.

$ docker ps
CONTAINER ID   IMAGE              COMMAND                  CREATED          STATUS         PORTS                                       NAMES
42e37c00b42b   grafana/grafana    "/run.sh"                13 seconds ago   Up 4 seconds   0.0.0.0:3000->3000/tcp, :::3000->3000/tcp   golang-grafana-1
57e86ba9a4d8   prom/pushgateway   "/bin/pushgateway"       13 seconds ago   Up 3 seconds   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp   golang-pushgateway-1
cab917bc270a   prom/prometheus    "/bin/prometheus --c…"   13 seconds ago   Up 3 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   golang-prometheus-1

Sau khi các container đã khởi động thành công, bạn có thể truy cập Grafana qua địa chỉ http://localhost:3000 (sử dụng tên đăng nhập admin và mật khẩu admin mặc định).

Prometheus sẽ sẵn sàng tại http://localhost:9090 và Pushgateway tại http://localhost:9091.

Giao diện targets của Prometheus

Giao diện của Pushgateway

Giao diện sau khi login của Grafana.

Lưu ý: Đây chỉ là một cấu hình đơn giản, bạn có thể điều chỉnh cấu hình Docker Compose và các file cấu hình của từng service để phản ánh nhu cầu cụ thể của bạn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories