Bạn cần monitor một ứng dụng của bạn mà chưa có exporter hỗ trợ. Câu trả lời là Client library. Cơ chế tương tự như việc bạn đẩy metric và Pushgateway hoặc là viết một Exporter nhưng là tích hợp vào trong code của ứng dụng tùy thuộc đặc thù của dữ liệu.
Bạn sẽ phải định nghĩa các metric và phơi các giá trị của chúng qua HTTP endpoint trên ứng dụng của bạn.
Các ngôn ngữ hỗ trợ :
Bên cạnh đó có những third-party client lib không chính thức
Khi Prometheus scrape instance của bạn, client library sẽ gửi tất cả các metric hiện tại tới server.
Mình quan tâm tới Python nên các phần bên dưới mình sẽ sử dụng Client_python để minh họa
Với những dữ liệu không thể scrape, nghĩa là phải đẩy về Pushgateway, bạn có thể sử dụng Bash shell như ví dụ ở phần Pushgateway hoặc Client lib
Ví dụ :
from prometheus_client import CollectorRegistry, Gauge, push_to_gateway
registry = CollectorRegistry()
g = Gauge('job_last_success_unixtime', 'Last time a batch job successfully finished', registry=registry)
g.set_to_current_time()
push_to_gateway('localhost:9091', job='batchA', registry=registry)
Giải thích ví dụ:
Trước tiên, sử dụng Registry riêng để chứa tạm các giá trị của metric.
registry = CollectorRegistry()
Một metric job_last_success_unixtime
được tạo với thuộc lớp Gauge
Gán giá trị cho metric là thời gian hiện tại
g.set_to_current_time()
hoặc cũng có thể gán một giá trị bất kỳ
g.set(random.randint(1,101))
Cuối cùng là push tới Pushgateway, với label là job='batchA'
// TODO
Phần tiếp Visualize