## 一、自定義監控需求
### 1.1 需求描述
希望能在go項目中,暴露
* 下單總次數的數據指標
* 下單總金額的數據指標
### 1.2 實現步驟
go開發環境中,創建自定義監控器。創建專門的視圖方法/order/addOrder增加下單總次數和下單總金額數據
* application.yaml配置修改暴露指定數據
* 測試訪問/actuator/prometheus得到下單總次數和下單總金額數據
* Grafana中配置下單總次數和下單總金額數據
<br><hr><br>
## 二、go項目實現訂單數據監控
### 2.1 testproject項目上創建自定義監控器
真實業務場景中,每次用戶創建一個訂單,就會訂單總數+1,訂單總金額加上當前金額此處定義兩個業務指標
指標名 | 參數名
下單總次數 | order_request_count
下單總金額 | order_amount_sum
編寫go代碼
package main
import (
"fmt"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
"log"
"net/http"
"time"
)
// 定義指標變量
var (
orderRequestCount = prometheus.NewCounter(
prometheus.CounterOpts{
Name: "order_request_count",
Help: "下單總次數",
},
)
orderAmountSum = prometheus.NewCounter(
prometheus.CounterOpts{
Name: "order_amount_sum",
Help: "下單總金額",
},
)
)
func init() {
// 注冊指標到 Prometheus 默認注冊表
prometheus.MustRegister(orderRequestCount)
prometheus.MustRegister(orderAmountSum)
}
func main() {
// 創建一個 HTTP 處理器,它將暴露指標
http.Handle("/metrics", promhttp.Handler())
// 模擬下單處理
go func() {
for {
// 模擬下單
orderRequestCount.Inc() // 增加下單次數
amount := float64(100 + (time.Now().UnixNano()%1000)/10) // 生成一個隨機的訂單金額
orderAmountSum.Add(amount) // 增加訂單金額
// 模擬每秒鐘一個訂單
time.Sleep(1 * time.Second)
}
}()
// 啟動 HTTP 服務器,監聽在端口 8182
fmt.Println("Starting server on :8182")
log.Fatal(http.ListenAndServe(":8182", nil))
}
啟動go項目后訪問
http://192.168.100.141:8182/metrics
然后打開目標 go的項目 ,添加對應的監控指標



- Prometheus教程
- 一. dokcer 安裝
- 二. 安裝docker-compose
- 三. docker-compose安裝Prometheus
- 四. 配置grafana的數據源
- 五. Prometheus的Exporter
- 六. Prometheus的基本術語
- 七. 監控Linux
- 八. 監控redis和mongodb
- 九. 監控mysql數據庫
- 十. 監控go程序
- 十一. 監控nginx
- 十二. 監控消息隊列
- 十三. 監控docker
- 十四. 監控進程
- 十五. 域名監控
- 十六. SNMP監控
- 十七. 黑盒監控
- 十八. 自定義監控
- 十九. go實現自定義監控
- 二十. 服務發現概述
- 二十一. 基于文件的服務發現
- 二十二. 基于Consul的服務發現
- 二十三. relabeling機制