可观测性

引入依赖

  1. go get github.com/polarismesh/polaris-go@latest

通过配置文件 polaris.yaml 开启监控上报

  • 你需要在项目的根路径下创建一个 polaris.yaml 文件用于初始化 polaris-go SDK。polaris.yaml配置详细
通过 prometheus pull 模式上报监控数据
  1. #描述:全局配置项
  2. global:
  3. #统计上报设置
  4. statReporter:
  5. #描述:是否将统计信息上报至monitor
  6. #类型:bool
  7. enable: true
  8. #描述:启用的统计上报插件类型
  9. #类型:list
  10. #范围:已经注册的统计上报插件的名字
  11. chain:
  12. - prometheus
  13. #描述:统计上报插件配置
  14. plugin:
  15. prometheus:
  16. #描述: 设置 prometheus http-server 的监听IP
  17. #类型:string
  18. #默认使用SDK的绑定IP
  19. metricHost:
  20. #描述: 设置 prometheus http-server 的监听端口
  21. #类型:int
  22. #默认值: 28080
  23. #如果设置为负数,则不会开启默认的http-server
  24. #如果设置为0,则随机选择一个可用端口进行启动 http-server
  25. metricPort: 28080

通过代码开启监控上报

通过 prometheus pull 模式上报监控数据
  1. cfg := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"})
  2. cfg.GetGlobal().GetStatReporter().SetEnable(true)
  3. cfg.GetGlobal().GetStatReporter().SetChain([]string{"prometheus"})
  4. cfg.GetGlobal().GetStatReporter().SetPluginConfig("prometheus", &prometheus.Config{
  5. PortStr: "28080",
  6. })

SDK实例构建

使用在 package github.com/polarismesh/polaris-go 下的 NewConsumerAPI 方法进行构造一个 ConsumerAPI SDK 实例

  1. import (
  2. ...
  3. "github.com/polarismesh/polaris-go"
  4. )
  5. func main() {
  6. consumer, err := polaris.NewConsumerAPI()
  7. }

上报调用情况

  1. type ServiceCallResult struct {
  2. // 上报的服务实例
  3. CalledInstance Instance
  4. // 调用接口方法
  5. Method string
  6. // 必选,本地服务调用的状态,正常or异常
  7. RetStatus RetStatus
  8. // 必选,本地服务调用的返回码
  9. RetCode *int32
  10. // 必选,被调服务实例获取接口的最大时延
  11. Delay *time.Duration
  12. // 可选,主调服务实例的服务信息
  13. SourceService *ServiceInfo
  14. }

上报请求调用结果

你在根据请求调用情况对 ServiceCallResult 结构体完成初始化后,只需要调用 ConsumerAPI.UpdateServiceCallResult 方法即可完成请求调用结果上报。SDK 内部会根据上报的调用结果信息,将其转换为相应的流量调用指标数据,上报至 prometheus。

  1. consumer.UpdateServiceCallResult(ServiceCallResult)