Từng bước cài đặt Prometheus bằng Docker
Theo hướng dẫn căn bản trong cuốn Monitoring With Prometheus của James Turnbull, bài viết này hướng dẫn cách chạy Prometheus nhanh bằng Docker mà không cần cài đặt trực tiếp lên hệ thống.
Tạo file cấu hình
Tạo thư mục prometheus cùng với file cấu hình prometheus.yml với nội dung như sau:
Chạy thử Prometheus
Chạy Docker container, trỏ thư mục cấu hình vừa tạo vào đường dẫn cấu hình mặc định của Prometheus bên trong container (/etc/prometheus):
docker run \
-p 9090:9090 \
-v ./prometheus:/etc/prometheus \
prom/prometheus
Trong đó:
-p 9090:9090: ánh xạ cổng 9090 của container ra cổng 9090 trên máy host, để có thể truy cập giao diện web Prometheus.-v ./prometheus:/etc/prometheus: mount thư mụcprometheus(chứaprometheus.yml) vào container, để Prometheus đọc đúng file cấu hình.
Vì không có tham số -d, container chạy ở chế độ foreground nên log sẽ hiện trực tiếp ngay trên terminal, tiện để kiểm tra lỗi cấu hình ngay khi khởi động.
Kết quả chạy không có lỗi tương tự như sau:

Chạy Prometheus bằng docker
Chạy Prometheus ở chế độ nền (production)
Sau khi xác nhận cấu hình chạy ổn, dừng container thử nghiệm ở trên (Ctrl + C) và chạy lại ở chế độ nền, đặt tên container để dễ quản lý:
docker run -d \
--name prometheus \
--net=host \
-p 9090:9090 \
-v ./prometheus:/etc/prometheus \
prom/prometheus
Lưu ý: khi dùng
--net=host, container sẽ dùng chung network stack với máy host, nên tham số-p 9090:9090lúc này không còn tác dụng ánh xạ cổng (Prometheus sẽ tự lắng nghe trực tiếp trên cổng 9090 của host). Bạn có thể bỏ--net=hostnếu muốn dùng network mặc định của Docker và kiểm soát việc ánh xạ cổng qua-p, hoặc giữ--net=hostnếu cần hiệu năng network tốt hơn hoặc cần Prometheus truy cập trực tiếp các service khác trên host.
Xem log của container đang chạy:
docker logs -f prometheus
Truy cập giao diện Prometheus tại http://<ip-máy-chủ>:9090 để kiểm tra.
Tự khởi động lại khi có sự cố
Thiết lập chính sách restart để container tự khởi động lại nếu bị crash hoặc khi Docker daemon khởi động lại, trừ khi bạn chủ động dừng:
docker update --restart=unless-stopped prometheus