metrics.go 996 B

12345678910111213141516171819202122232425262728
  1. package proposal
  2. import (
  3. "encoding/json"
  4. )
  5. // MetricsMessage 指标信息
  6. type MetricsMessage struct {
  7. ProjectName string `json:"project_name"` // 项目名,用于区分不同项目告警信息
  8. Env string `json:"env"` // 运行环境
  9. TraceID string `json:"trace_id"` // 唯一ID,用于追踪关联
  10. HOST string `json:"host"` // 请求 HOST
  11. Path string `json:"path"` // 请求 Path
  12. Method string `json:"method"` // 请求 Method
  13. HTTPCode int `json:"http_code"` // HTTP 状态码
  14. BusinessCode int `json:"business_code"` // 业务码
  15. CostSeconds float64 `json:"cost_seconds"` // 耗时,单位:秒
  16. IsSuccess bool `json:"is_success"` // 状态,是否成功
  17. }
  18. // Marshal 序列化到JSON
  19. func (m *MetricsMessage) Marshal() (jsonRaw []byte) {
  20. jsonRaw, _ = json.Marshal(m)
  21. return
  22. }
  23. // RecordHandler 指标的记录句柄
  24. type RecordHandler func(msg *MetricsMessage)