Thursday, November 21, 2024

Sử dụng Prometheus giám sát Jenkins Job

-

Trong hướng dẫn hôm nay, chúng ta sẽ theo dõi Jenkins bằng Prometheus và Grafana. Chúng ta sẽ chạy Jenkins, Prometheus và Grafana bằng docker và sẽ định cấu hình các chỉ số cho Jenkins được đẩy tới Prometheus và cuối cùng là bảng dashboard trong Grafana.

1. Cài đặt plugin Prometheus Jenkins

Trước tiên bạn hãy vào Manage Jenkins -> Manage Plugins

Vào Available plugins tìm plugin prometheus và tiến hành download nó.

Bấm vào Restart Jenkins when installation is complete and no jobs are running để sau khi cài đặt xong plugins Jenkins sẽ tự khởi động lại nếu không có job nào đang chạy.

Sau khi cài đặt xong plugins và khởi động lại, chúng ta vào lại Manage Plugins -> Available plugins để xác nhận lại quá plugins prometheus đã cài đặt thành công.

Nếu plugins prometheus đã cài đặt thành công bạn có thể sử dụng url http://<jenkins_ipaddr>:8080/prometheus login vào trình duyệt web bạn sẽ thấy các metric đã xuất hiện.

http://192.168.13.205:8080/prometheus/

Hình ảnh metric khi chúng ta login vào http://192.168.13.205:8080/prometheus/

2. Triển khai Prometheus

Hãy tạo thư mục lưu file config của Promtheus.

mkdir /home/prometheus

Tiếp theo bạn hãy tạo file config Promtheus /home/prometheus/prometheus.yml với nội dung như dưới. Chúng ta sẽ có 2 job prometheus và jenkins, với 192.168.13.205:8080 là ip address của jenkins và 8080 là port của nó.

global:
  scrape_interval: 15s
  evaluation_interval: 15s

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

  - job_name: 'jenkins'
    metrics_path: /prometheus
    static_configs:
      - targets: [192.168.13.205:8080]

Sau khi hoàn thành tạo các thu mục và file, bạn sẽ có cây thư mục như dưới.

.
├── prometheus
    └── prometheus.yml

Chúng ta chạy lệnh dưới để triển khai Prometheus, nhớ mount file config prometheus.yml vào container.

docker run -d -u root --name prometheus -p 9090:9090 -v /home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

Kết quả sau khi khởi tạo xong chúng ta có kết quả, ở đây mình có thêm container gitlab được triển khai chung host với prometheus.

$ docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS                PORTS                                                                                                               NAMES
03c5619941de   prom/prometheus           "/bin/prometheus --c…"   49 seconds ago   Up 47 seconds         0.0.0.0:9090->9090/tcp, :::9090->9090/tcp                                                                           prometheus
845e4b3315db   jenkins/jenkins:latest    "/usr/bin/tini -- /u…"   2 minutes ago    Up 9 minutes          0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp                            jenkins

Sau khi container prometheus đã được tạo, bạn sử dụng url http://<prometheus_ipaddr>:9090 để login trên trình duyệt web. Sau khi vào được console của prometheus hãy vào Status -> Targets.

Bạn sẽ thấy có 2 job và trong đó có 1 job của Jenkins mà trước đó bạn đã khai báo trong prometheus.yml.

Vào Metics Explorer bạn sẽ thấy các metric của Jenkins đã xuất hiện.

3. Triển khai Grafana

Bước tiếp theo chúng ta triển khai Grafana để đưa thông tin metric đã lấy được từ Jenkins lên dashboard.

Hãy chạy lệnh dưới để tạo 1 container Grafana.

docker run -d -u root --name grafana -p 3000:3000 grafana/grafana

Kết quả sau khi triển khai Grafana

$ docker ps
CONTAINER ID   IMAGE                     COMMAND                  CREATED          STATUS                PORTS                                                                                                               NAMES
744c9ab6dc1d   grafana/grafana           "/run.sh"                12 seconds ago   Up 10 seconds         0.0.0.0:3000->3000/tcp, :::3000->3000/tcp                                                                           grafana
03c5619941de   prom/prometheus           "/bin/prometheus --c…"   10 minutes ago   Up 10 minutes         0.0.0.0:9090->9090/tcp, :::9090->9090/tcp                                                                           prometheus
845e4b3315db   jenkins/jenkins:latest    "/usr/bin/tini -- /u…"   19 minutes ago   Up 19 minutes         0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp                            jenkins

Dùng trình duyệt login vào url theo cú pháp http://<grafana_ipaddr>:3000

http://192.168.13.205:3000/

Bạn sẽ có kết quả như dưới, hãy thực hiện tiếp các bước như hình để chúng ta thêm data source của Prometheus.

Chọn data source là Prometheus

Tại mục name bạn hãy đặt tên bất kỳ cho nó, tại URL bạn điền url console của Prometheus.

Sau khi hoàn thành 2 bước trên hãy kéo xuống dưới cùng và bấm Save & test. Nếu kết quả trả về Data source is working có nghĩ là data source đã được thêm thành công.

Sau khi thêm xong bạn sẽ có 1 data source Prometheus như dưới.

Nếu bạn tự tạo dashboard sẽ mất khá nhiều thời gian, vì vậy bạn hãy vào link dưới để tải cho mình 1 template dashboard có sẵn và sau đó chúng ta có thể import vào và chỉnh sửa theo sở thích.

https://grafana.com/grafana/dashboards/306

Hãy copy id của dashboard hoặc download file dạng json về rồi import cũng được. Mình sẽ import bằng file json nên mình sẽ sử dụng phương pháp download file json về máy.

Sau khi download xong file json thì bạn quay lại Dashboard của Grafana, bấm New -> Import

Bấm vào Upload Json file và trỏ tới file json bạn đã tải về ở bước trên.

Kết quả sau khi import xong file json bạn sẽ thấy 1 số thông tin như hình dưới. Ở mục số 3 hình dưới bạn hãy chọn data source là Prometheus đã thêm trước đó rồi bấm Import.

Sau khi import xong bạn sẽ có 1 dashboard mới như dưới.

Kết quả khi truy cập dashboard, bạn có thể chỉnh sửa theo sở thích nếu muốn nhé.

Chúc các bạn thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories