Skip to content

演示服務

原文: 演示服务

為了盡可能詳細地給大家演示 PromQL 指標查詢,這裡我們將 Fork 一個開源的 Prometheus 演示服務來進行查詢,這樣可以讓我們更加靈活地對指標數據進行控制,項目倉庫地址:https://github.com/cnych/prometheus_demo_service,這是一個 Go 語言開發的服務,我們可以自己構建應用。

首先準備 golang 環境:

$ wget https://golang.org/dl/go1.16.3.linux-amd64.tar.gz
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.16.3.linux-amd64.tar.gz
# 配置環境變量,可以將下面命令添加到 /etc/profile 中
$ export PATH=$PATH:/usr/local/go/bin
# 執行go命令驗證
$ go version
go version go1.16.3 linux/amd64

然後 clone 代碼構建:

# 首先clone代碼
$ git clone https://github.com/cnych/prometheus_demo_service
$ cd prometheus_demo_service
# 構建
$ env GOOS=linux GOARCH=amd64 go build -o prometheus_demo_service

構建完成後啟動 3 個服務,分別監聽 10000、10001、10002 端口:

$ ps -aux |grep demo
root      15224  2.9  0.1 834120 14836 pts/0    Sl   10:39   0:00 ./prometheus_demo_service --listen-address=:10000
root      15333  3.0  0.2 899656 16888 pts/0    Sl   10:39   0:00 ./prometheus_demo_service --listen-address=:10001
root      15353  2.7  0.1 907596 14896 pts/0    Sl   10:39   0:00 ./prometheus_demo_service --listen-address=:10002

上面 3 個服務都在 /metrics 端點暴露了一些指標數據,我們可以把這 3 個服務配置到 Prometheus 抓取任務中,這樣後續就可以使用這幾個服務來進行 PromQL 查詢說明了。

完整的 prometheus.yml 配置文件如下所示:

prometheus.yml
global:
  scrape_interval: 5s # 抓取頻率

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  # 配置demo抓取任務
  - job_name: demo
    scrape_interval: 15s
    scrape_timeout: 10s
    static_configs:
      - targets:
          - demo-service-0:10000
          - demo-service-1:10001
          - demo-service-2:10002

這裡我們將 3 個服務配置到名為 demo 的抓取任務中,為了看上去更加清晰,這裡我們使用 demo-service-<index> 來代替服務地址,直接在 Prometheus 所在節點的 /etc/hosts 文件中添加上對應服務的映射:

$ cat /etc/hosts
......
192.xxx.xxx.xxx demo-service-0
192.xxx.xxx.xxx demo-service-1
192.xxx.xxx.xxx demo-service-2

Info

請使用個自主機的IP來替換上述範例中的 192.xxx.xxx.xxx!

配置完成後直接啟動 Prometheus 服務即可(可以參考前面的安裝配置章節):

./prometheus

啟動後可以在 /targets 頁面查看是否在正確抓取監控指標:

該演示服務模擬了一些用於我們測試的監控指標,包括:

  • 暴露請求計數和響應時間(以 path、method 和響應狀態碼為標籤 key)的 HTTP API 服務
  • 一個定期的批處理任務,它暴露了最後一次成功運行的時間戳和處理的字節數
  • 有關 CPU 數量及其使用情況的綜合指標
  • 有關內存使用情況的綜合指標
  • 有關磁盤總大小及其使用情況的綜合指標
  • 其他指標......

我們將在後面查詢各個指標時了解更多關於它們的信息。